xref: /freebsd/crypto/openssh/FREEBSD-upgrade (revision 8974fa45151fda994a663fdfc8a77d9e3bde3c5b)
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
9fca7ac55SEd 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
12fca7ac55SEd 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
15fca7ac55SEd Maste03) Verify the signature:
16ba11afccSDag-Erling Smørgrav
17cf783db1SDag-Erling Smørgrav    $ gpg --verify openssh-X.YpZ.tar.gz.asc
181c71974bSDag-Erling Smørgrav
19fca7ac55SEd 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
23fca7ac55SEd 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
30fca7ac55SEd Maste06) Take care of added / deleted files:
31ba11afccSDag-Erling Smørgrav
3274c59ab7SEd Maste    $ git add -A
33ba11afccSDag-Erling Smørgrav
34fca7ac55SEd Maste07) Commit:
35ba11afccSDag-Erling Smørgrav
3674c59ab7SEd Maste    $ git commit -m "Vendor import of OpenSSH X.YpZ"
37ba11afccSDag-Erling Smørgrav
38fca7ac55SEd 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
68fca7ac55SEd 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
72fca7ac55SEd 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
81fca7ac55SEd Maste12) Run the configure script:
82cf783db1SDag-Erling Smørgrav
83cf783db1SDag-Erling Smørgrav    $ sh freebsd-configure.sh
84cf783db1SDag-Erling Smørgrav
85fca7ac55SEd 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
90fca7ac55SEd 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
93fca7ac55SEd Maste15) Update ssh_namespace.h:
94ba11afccSDag-Erling Smørgrav
954f52dfbbSDag-Erling Smørgrav    $ sh freebsd-namespace.sh
96e66498cdSDag-Erling Smørgrav
97fca7ac55SEd 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
102fca7ac55SEd 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
106fca7ac55SEd 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".
122c4cd1fa4SDag-Erling Smørgrav      - UseDNS defaults to "yes".
123ba11afccSDag-Erling Smørgrav
124ba11afccSDag-Erling Smørgrav2) Modified client-side defaults
125ba11afccSDag-Erling Smørgrav
126ba11afccSDag-Erling Smørgrav   We've modified some configuration defaults in ssh:
127ba11afccSDag-Erling Smørgrav
128ba11afccSDag-Erling Smørgrav      - CheckHostIP defaults to "no".
1290591b689SDag-Erling Smørgrav      - VerifyHostKeyDNS defaults to "yes" if built with LDNS.
130ba11afccSDag-Erling Smørgrav
131ba11afccSDag-Erling Smørgrav3) Canonic host names
132ba11afccSDag-Erling Smørgrav
133ba11afccSDag-Erling Smørgrav   We've added code to ssh.c to canonicize the target host name after
134ba11afccSDag-Erling Smørgrav   reading options but before trying to connect.  This eliminates the
135ba11afccSDag-Erling Smørgrav   usual problem with duplicate known_hosts entries.
136ba11afccSDag-Erling Smørgrav
137cb7b8027SDag-Erling Smørgrav4) setusercontext() environment
138ba11afccSDag-Erling Smørgrav
139ba11afccSDag-Erling Smørgrav   Our setusercontext(3) can set environment variables, which we must
140ba11afccSDag-Erling Smørgrav   take care to transfer to the child's environment.
141ba11afccSDag-Erling Smørgrav
1420591b689SDag-Erling Smørgrav5) TCP wrappers
1430591b689SDag-Erling Smørgrav
1440591b689SDag-Erling Smørgrav   Support for TCP wrappers was removed in upstream 6.7p1.  We've
1450591b689SDag-Erling Smørgrav   added it back by porting the 6.6p1 code forward.
1460591b689SDag-Erling Smørgrav
147e491358cSEd Maste   TCP wrappers support in sshd will be disabled in HEAD and will
148e491358cSEd Maste   be removed from FreeBSD in the future.
149e491358cSEd Maste
1509ded3306SDag-Erling Smørgrav6) Agent client reference counting
1510591b689SDag-Erling Smørgrav
1520591b689SDag-Erling Smørgrav   We've added code to ssh-agent.c to implement client reference
1530591b689SDag-Erling Smørgrav   counting; the agent will automatically exit when the last client
1540591b689SDag-Erling Smørgrav   disconnects.
1550591b689SDag-Erling Smørgrav
156f3fd8850SEd Maste7) Class-based login restrictions (27ceebbc2402)
1570591b689SDag-Erling Smørgrav
158f3fd8850SEd Maste   We've added code to auth.c to enforce the host.allow, host.deny,
159f3fd8850SEd Maste   times.allow and times.deny login class capabilities, based on an
160f3fd8850SEd Maste   upstream submission from
161f3fd8850SEd Maste   https://github.com/openssh/openssh-portable/pull/262.
16235a03425SEd Maste
163*8974fa45SEd Maste8) Blocklist integration
164*8974fa45SEd Maste
165*8974fa45SEd Maste   We include blocklist (https://github.com/zoulasc/blocklist) in FreeBSD,
166*8974fa45SEd Maste   and ssh is patched to report login failures to it.
167*8974fa45SEd Maste
168*8974fa45SEd Maste9) Paths
169*8974fa45SEd Maste
170*8974fa45SEd Maste   A number of paths are changed to match FreeBSD's configuration (e.g.,
171*8974fa45SEd Maste   using /usr/local/ instead of /uxr/X11R6/).
172*8974fa45SEd Maste
173*8974fa45SEd Maste10) Retired patches
1740591b689SDag-Erling Smørgrav
1756f7bc8e7SEd Maste   We no longer have HPN patches (adaptive buffer size for increased
1766f7bc8e7SEd Maste   throughput on high-BxD links) or client-side VersionAddendum, but we
1776f7bc8e7SEd Maste   recognize and ignore the configuration options to avoid breaking
1786f7bc8e7SEd Maste   existing configurations.
1790591b689SDag-Erling Smørgrav
180ba11afccSDag-Erling Smørgrav
181ba11afccSDag-Erling Smørgrav
182ba11afccSDag-Erling SmørgravThis port was brought to you by (in no particular order) DARPA, NAI
1830085282bSDag-Erling SmørgravLabs, ThinkSec, Nescafé, the Aberlour Glenlivet Distillery Co.,
184ba11afccSDag-Erling SmørgravSuzanne Vega, and a Sanford's #69 Deluxe Marker.
185ba11afccSDag-Erling Smørgrav
186ba11afccSDag-Erling Smørgrav					-- des@FreeBSD.org
187