xref: /freebsd/crypto/openssh/FREEBSD-upgrade (revision fca7ac55f8db80b5250bd80a83e1368fe0c39ae5)
1ba11afccSDag-Erling Smørgrav	    FreeBSD maintainer's guide to OpenSSH-portable
2ba11afccSDag-Erling Smørgrav	    ==============================================
3ba11afccSDag-Erling Smørgrav
474c59ab7SEd Maste    These instructions assume you have a clone of the FreeBSD git repo
574c59ab7SEd Maste    main branch in src/freebsd/main, and will store vendor trees under
674c59ab7SEd Maste    src/freebsd/vendor/.  In addition, this assumes there is a "freebsd"
774c59ab7SEd Maste    origin pointing to git(repo).freebsd.org/src.git.
874c59ab7SEd Maste
9*fca7ac55SEd Maste01) Make sure your mail spool has plenty of free space.  It'll fill up
10ba11afccSDag-Erling Smørgrav    pretty fast once you're done with this checklist.
11ba11afccSDag-Erling Smørgrav
12*fca7ac55SEd Maste02) Download the latest OpenSSH-portable tarball and signature from
139fcda2f4SEd Maste    OpenBSD (https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/).
14ba11afccSDag-Erling Smørgrav
15*fca7ac55SEd Maste03) Verify the signature:
16ba11afccSDag-Erling Smørgrav
17cf783db1SDag-Erling Smørgrav    $ gpg --verify openssh-X.YpZ.tar.gz.asc
181c71974bSDag-Erling Smørgrav
19*fca7ac55SEd Maste04) Unpack the tarball in a suitable directory:
20ba11afccSDag-Erling Smørgrav
21cf783db1SDag-Erling Smørgrav    $ tar xf openssh-X.YpZ.tar.gz
22e2fb0b2aSDag-Erling Smørgrav
23*fca7ac55SEd Maste05) Copy to a vendor branch:
24ba11afccSDag-Erling Smørgrav
2574c59ab7SEd Maste    $ cd src/freebsd/main
2674c59ab7SEd Maste    $ git worktree add ../vendor/openssh freebsd/vendor/openssh
2774c59ab7SEd Maste    $ cd ../vendor/openssh
2874c59ab7SEd Maste    $ rsync --archive --delete --exclude=.git /path/to/openssh-X.YpZ/ ./
29ba11afccSDag-Erling Smørgrav
30*fca7ac55SEd Maste06) Take care of added / deleted files:
31ba11afccSDag-Erling Smørgrav
3274c59ab7SEd Maste    $ git add -A
33ba11afccSDag-Erling Smørgrav
34*fca7ac55SEd Maste07) Commit:
35ba11afccSDag-Erling Smørgrav
3674c59ab7SEd Maste    $ git commit -m "Vendor import of OpenSSH X.YpZ"
37ba11afccSDag-Erling Smørgrav
38*fca7ac55SEd Maste08) Tag:
39ba11afccSDag-Erling Smørgrav
4074c59ab7SEd Maste    $ git tag -a -m "Tag OpenSSH X.YpZ" vendor/openssh/X.YpZ
41ba11afccSDag-Erling Smørgrav
42576b477bSEd Maste    At this point the vendor branch can be pushed to the FreeBSD repo via:
43576b477bSEd Maste
44576b477bSEd Maste    $ git push freebsd vendor/openssh
45ab7d0959SEd Maste    $ git push freebsd vendor/openssh/X.YpZ
46576b477bSEd Maste
47ab7d0959SEd Maste    Note the second "git push" command is used to push the tag, which is
48ab7d0959SEd Maste    not pushed by default.
49ab7d0959SEd Maste
50ab7d0959SEd Maste    It is also possible to push the branch and tag together, but use
51ab7d0959SEd Maste    --dry-run first to ensure that no undesired tags will be pushed:
52ab7d0959SEd Maste
53ab7d0959SEd Maste    $ git push --dry-run --follow-tags freebsd vendor/openssh
54ab7d0959SEd Maste    $ git push --follow-tags freebsd vendor/openssh
55ab7d0959SEd Maste
56ab7d0959SEd Maste    The update and tag could instead be pushed later, along with the merge
57ab7d0959SEd Maste    to main, but pushing now allows others to collaborate.
58576b477bSEd Maste
59cf783db1SDag-Erling Smørgrav09) Merge from the vendor branch:
60ba11afccSDag-Erling Smørgrav
6174c59ab7SEd Maste    $ git subtree merge -P crypto/openssh vendor/openssh
62cf783db1SDag-Erling Smørgrav
6399b201c3SEd Maste    A number of files have been deleted from FreeBSD's copy of ssh,
6499b201c3SEd Maste    including rendered man pages (which have a .0 extension).  When
6574c59ab7SEd Maste    git prompts for these deleted files during the merge, choose 'd'
6699b201c3SEd Maste    (leaving them deleted).
6799b201c3SEd Maste
68*fca7ac55SEd Maste10) Resolve conflicts.  Remember to bump the version addendum in
69cf783db1SDag-Erling Smørgrav    version.h, and update the default value in ssh{,d}_config and
70cf783db1SDag-Erling Smørgrav    ssh{,d}_config.5.
71cf783db1SDag-Erling Smørgrav
72*fca7ac55SEd Maste11) Diff against the vendor branch:
73cf783db1SDag-Erling Smørgrav
7474c59ab7SEd Maste    $ git diff --diff-filter=M vendor/openssh/X.YpZ HEAD:crypto/openssh
75cf783db1SDag-Erling Smørgrav
76cf783db1SDag-Erling Smørgrav    Files that have modifications relative to the vendor code, and
77cf783db1SDag-Erling Smørgrav    only those files, must have the svn:keywords property set to
78cf783db1SDag-Erling Smørgrav    FreeBSD=%H and be listed in the 'keywords' file created by the
79cf783db1SDag-Erling Smørgrav    pre-merge script.
80cf783db1SDag-Erling Smørgrav
81*fca7ac55SEd Maste12) Run the configure script:
82cf783db1SDag-Erling Smørgrav
83cf783db1SDag-Erling Smørgrav    $ sh freebsd-configure.sh
84cf783db1SDag-Erling Smørgrav
85*fca7ac55SEd Maste13) Review changes to config.h very carefully.
86cf783db1SDag-Erling Smørgrav
874c3ccd96SEd Maste    Note that libwrap should not be defined in config.h; as of
8874c59ab7SEd Maste    r311585 (233932cc2a60) it is conditional on MK_TCP_WRAPPERS.
894c3ccd96SEd Maste
90*fca7ac55SEd Maste14) If source files have been added or removed, update the appropriate
91e66498cdSDag-Erling Smørgrav    makefiles to reflect changes in the vendor's Makefile.in.
92ba11afccSDag-Erling Smørgrav
93*fca7ac55SEd Maste15) Update ssh_namespace.h:
94ba11afccSDag-Erling Smørgrav
954f52dfbbSDag-Erling Smørgrav    $ sh freebsd-namespace.sh
96e66498cdSDag-Erling Smørgrav
97*fca7ac55SEd Maste16) Build and install world, reboot, test.  Pay particular attention
98cf783db1SDag-Erling Smørgrav    to pam_ssh(8), which gropes inside libssh and will break if
99cf783db1SDag-Erling Smørgrav    something significant changes or if ssh_namespace.h is out of
100cf783db1SDag-Erling Smørgrav    whack.
101cf783db1SDag-Erling Smørgrav
102*fca7ac55SEd Maste17) Check for references to obsolete configuration options
1039340d69eSMark Johnston    (e.g., ChallengeResponseAuthentication in sshd_config) which
1049340d69eSMark Johnston    may exist in release/ scripts.
1059340d69eSMark Johnston
106*fca7ac55SEd Maste18) Commit, and hunker down for the inevitable storm of complaints.
107ba11afccSDag-Erling Smørgrav
108ba11afccSDag-Erling Smørgrav
109ba11afccSDag-Erling Smørgrav
110ba11afccSDag-Erling Smørgrav	  An overview of FreeBSD changes to OpenSSH-portable
111ba11afccSDag-Erling Smørgrav	  ==================================================
112ba11afccSDag-Erling Smørgrav
113ba11afccSDag-Erling Smørgrav1) Modified server-side defaults
114ba11afccSDag-Erling Smørgrav
115ba11afccSDag-Erling Smørgrav   We've modified some configuration defaults in sshd:
116ba11afccSDag-Erling Smørgrav
1170591b689SDag-Erling Smørgrav      - UsePAM defaults to "yes".
118ba11afccSDag-Erling Smørgrav      - PermitRootLogin defaults to "no".
1190591b689SDag-Erling Smørgrav      - X11Forwarding defaults to "yes".
1200591b689SDag-Erling Smørgrav      - PasswordAuthentication defaults to "no".
1210591b689SDag-Erling Smørgrav      - VersionAddendum defaults to "FreeBSD-YYYYMMDD".
1220591b689SDag-Erling Smørgrav      - PrivilegeSeparation defaults to "sandbox".
123c4cd1fa4SDag-Erling Smørgrav      - UseDNS defaults to "yes".
124ba11afccSDag-Erling Smørgrav
125ba11afccSDag-Erling Smørgrav2) Modified client-side defaults
126ba11afccSDag-Erling Smørgrav
127ba11afccSDag-Erling Smørgrav   We've modified some configuration defaults in ssh:
128ba11afccSDag-Erling Smørgrav
129ba11afccSDag-Erling Smørgrav      - CheckHostIP defaults to "no".
1300591b689SDag-Erling Smørgrav      - VerifyHostKeyDNS defaults to "yes" if built with LDNS.
1310591b689SDag-Erling Smørgrav      - VersionAddendum defaults to "FreeBSD-YYYYMMDD".
132ba11afccSDag-Erling Smørgrav
133ba11afccSDag-Erling Smørgrav3) Canonic host names
134ba11afccSDag-Erling Smørgrav
135ba11afccSDag-Erling Smørgrav   We've added code to ssh.c to canonicize the target host name after
136ba11afccSDag-Erling Smørgrav   reading options but before trying to connect.  This eliminates the
137ba11afccSDag-Erling Smørgrav   usual problem with duplicate known_hosts entries.
138ba11afccSDag-Erling Smørgrav
139cb7b8027SDag-Erling Smørgrav4) setusercontext() environment
140ba11afccSDag-Erling Smørgrav
141ba11afccSDag-Erling Smørgrav   Our setusercontext(3) can set environment variables, which we must
142ba11afccSDag-Erling Smørgrav   take care to transfer to the child's environment.
143ba11afccSDag-Erling Smørgrav
1440591b689SDag-Erling Smørgrav5) TCP wrappers
1450591b689SDag-Erling Smørgrav
1460591b689SDag-Erling Smørgrav   Support for TCP wrappers was removed in upstream 6.7p1.  We've
1470591b689SDag-Erling Smørgrav   added it back by porting the 6.6p1 code forward.
1480591b689SDag-Erling Smørgrav
149e491358cSEd Maste   TCP wrappers support in sshd will be disabled in HEAD and will
150e491358cSEd Maste   be removed from FreeBSD in the future.
151e491358cSEd Maste
1529ded3306SDag-Erling Smørgrav6) Agent client reference counting
1530591b689SDag-Erling Smørgrav
1540591b689SDag-Erling Smørgrav   We've added code to ssh-agent.c to implement client reference
1550591b689SDag-Erling Smørgrav   counting; the agent will automatically exit when the last client
1560591b689SDag-Erling Smørgrav   disconnects.
1570591b689SDag-Erling Smørgrav
158f3fd8850SEd Maste7) Class-based login restrictions (27ceebbc2402)
1590591b689SDag-Erling Smørgrav
160f3fd8850SEd Maste   We've added code to auth.c to enforce the host.allow, host.deny,
161f3fd8850SEd Maste   times.allow and times.deny login class capabilities, based on an
162f3fd8850SEd Maste   upstream submission from
163f3fd8850SEd Maste   https://github.com/openssh/openssh-portable/pull/262.
16435a03425SEd Maste
1656f7bc8e7SEd Maste8) Retired patches
1660591b689SDag-Erling Smørgrav
1676f7bc8e7SEd Maste   We no longer have HPN patches (adaptive buffer size for increased
1686f7bc8e7SEd Maste   throughput on high-BxD links) or client-side VersionAddendum, but we
1696f7bc8e7SEd Maste   recognize and ignore the configuration options to avoid breaking
1706f7bc8e7SEd Maste   existing configurations.
1710591b689SDag-Erling Smørgrav
172ba11afccSDag-Erling Smørgrav
173ba11afccSDag-Erling Smørgrav
174ba11afccSDag-Erling SmørgravThis port was brought to you by (in no particular order) DARPA, NAI
1750085282bSDag-Erling SmørgravLabs, ThinkSec, Nescafé, the Aberlour Glenlivet Distillery Co.,
176ba11afccSDag-Erling SmørgravSuzanne Vega, and a Sanford's #69 Deluxe Marker.
177ba11afccSDag-Erling Smørgrav
178ba11afccSDag-Erling Smørgrav					-- des@FreeBSD.org
179