2002-06-29 10:39:14 +00:00
|
|
|
|
FreeBSD maintainer's guide to OpenSSH-portable
|
|
|
|
|
==============================================
|
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
00) Make sure your mail spool has plenty of free space. It'll fill up
|
|
|
|
|
pretty fast once you're done with this checklist.
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
01) Download the latest OpenSSH-portable tarball and signature from
|
2020-02-14 19:33:50 +00:00
|
|
|
|
OpenBSD (https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/).
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
02) Verify the signature:
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
$ gpg --verify openssh-X.YpZ.tar.gz.asc
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
03) Unpack the tarball in a suitable directory:
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
$ tar xf openssh-X.YpZ.tar.gz
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
04) Copy to the vendor directory:
|
2004-01-07 11:51:18 +00:00
|
|
|
|
|
2018-05-06 13:21:44 +00:00
|
|
|
|
$ svn co svn+ssh://repo.freebsd.org/base/vendor-crypto/openssh/dist
|
2014-03-24 19:15:13 +00:00
|
|
|
|
$ rsync --archive --delete openssh-X.YpZ/ dist/
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
05) Take care of added / deleted files:
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
$ svn rm $(svn stat dist | awk '$1 == "!" { print $2 }')
|
|
|
|
|
$ svn add --no-auto-props $(svn stat dist | awk '$1 == "?" { print $2 }')
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
06) Commit:
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
$ svn commit -m "Vendor import of OpenSSH X.YpZ." dist
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
07) Tag:
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
$ svn copy -m "Tag OpenSSH X.YpZ." \
|
2018-05-06 13:21:44 +00:00
|
|
|
|
svn+ssh://repo.freebsd.org/base/vendor-crypto/openssh/dist \
|
|
|
|
|
svn+ssh://repo.freebsd.org/base/vendor-crypto/openssh/X.YpZ
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2016-01-21 12:42:31 +00:00
|
|
|
|
08) Check out head and run the pre-merge script, which strips our RCS
|
|
|
|
|
tags from files that have them:
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2018-05-06 13:21:44 +00:00
|
|
|
|
$ svn co svn+ssh://repo.freebsd.org/base/head
|
2014-03-24 19:15:13 +00:00
|
|
|
|
$ cd head/crypto/openssh
|
|
|
|
|
$ sh freebsd-pre-merge.sh
|
2006-10-02 12:39:28 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
09) Merge from the vendor branch:
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
$ svn merge -cNNNNNN \^/vendor-crypto/openssh/dist .
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2020-02-25 22:15:25 +00:00
|
|
|
|
A number of files have been deleted from FreeBSD's copy of ssh,
|
|
|
|
|
including rendered man pages (which have a .0 extension). When
|
|
|
|
|
svn prompts for these deleted files during the merge, choose 'r'
|
|
|
|
|
(leaving them deleted).
|
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
0A) Resolve conflicts. Remember to bump the version addendum in
|
|
|
|
|
version.h, and update the default value in ssh{,d}_config and
|
|
|
|
|
ssh{,d}_config.5.
|
2006-10-02 12:39:28 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
0B) Diff against the vendor branch:
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2016-01-21 12:42:31 +00:00
|
|
|
|
$ svn diff --no-diff-deleted --no-diff-added \
|
|
|
|
|
--ignore-properties \^/vendor-crypto/openssh/X.YpZ .
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
Files that have modifications relative to the vendor code, and
|
|
|
|
|
only those files, must have the svn:keywords property set to
|
|
|
|
|
FreeBSD=%H and be listed in the 'keywords' file created by the
|
|
|
|
|
pre-merge script.
|
|
|
|
|
|
2016-01-21 12:42:31 +00:00
|
|
|
|
0C) Run the post-merge script, which re-adds RCS tags to files that
|
|
|
|
|
need them:
|
2014-03-24 19:15:13 +00:00
|
|
|
|
|
|
|
|
|
$ sh freebsd-post-merge.sh
|
|
|
|
|
|
|
|
|
|
0D) Run the configure script:
|
|
|
|
|
|
|
|
|
|
$ sh freebsd-configure.sh
|
|
|
|
|
|
2016-01-21 12:42:31 +00:00
|
|
|
|
0E) Review changes to config.h very carefully.
|
2014-03-24 19:15:13 +00:00
|
|
|
|
|
2020-02-14 17:05:35 +00:00
|
|
|
|
Note that libwrap should not be defined in config.h; as of
|
|
|
|
|
r311585 it is conditional on MK_TCP_WRAPPERS.
|
|
|
|
|
|
2014-03-24 19:15:13 +00:00
|
|
|
|
0F) If source files have been added or removed, update the appropriate
|
|
|
|
|
makefiles to reflect changes in the vendor's Makefile.in.
|
|
|
|
|
|
2018-05-08 23:13:11 +00:00
|
|
|
|
10) Update ssh_namespace.h:
|
2014-03-24 19:15:13 +00:00
|
|
|
|
|
2018-05-08 23:13:11 +00:00
|
|
|
|
$ sh freebsd-namespace.sh
|
2014-03-24 19:15:13 +00:00
|
|
|
|
|
2018-05-08 23:13:11 +00:00
|
|
|
|
11) Build and install world, reboot, test. Pay particular attention
|
2014-03-24 19:15:13 +00:00
|
|
|
|
to pam_ssh(8), which gropes inside libssh and will break if
|
|
|
|
|
something significant changes or if ssh_namespace.h is out of
|
|
|
|
|
whack.
|
|
|
|
|
|
2018-05-08 23:13:11 +00:00
|
|
|
|
12) Commit, and hunker down for the inevitable storm of complaints.
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
An overview of FreeBSD changes to OpenSSH-portable
|
|
|
|
|
==================================================
|
|
|
|
|
|
|
|
|
|
0) VersionAddendum
|
|
|
|
|
|
|
|
|
|
The SSH protocol allows for a human-readable version string of up
|
|
|
|
|
to 40 characters to be appended to the protocol version string.
|
|
|
|
|
FreeBSD takes advantage of this to include a date indicating the
|
|
|
|
|
"patch level", so people can easily determine whether their system
|
|
|
|
|
is vulnerable when an OpenSSH advisory goes out. Some people,
|
|
|
|
|
however, dislike advertising their patch level in the protocol
|
|
|
|
|
handshake, so we've added a VersionAddendum configuration variable
|
2016-01-21 12:42:31 +00:00
|
|
|
|
to allow them to change or disable it. Upstream added support for
|
|
|
|
|
VersionAddendum on the server side, but we also support it on the
|
|
|
|
|
client side.
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
|
|
|
|
1) Modified server-side defaults
|
|
|
|
|
|
|
|
|
|
We've modified some configuration defaults in sshd:
|
|
|
|
|
|
2016-01-21 12:42:31 +00:00
|
|
|
|
- UsePAM defaults to "yes".
|
2002-06-29 10:39:14 +00:00
|
|
|
|
- PermitRootLogin defaults to "no".
|
2016-01-21 12:42:31 +00:00
|
|
|
|
- X11Forwarding defaults to "yes".
|
|
|
|
|
- PasswordAuthentication defaults to "no".
|
|
|
|
|
- VersionAddendum defaults to "FreeBSD-YYYYMMDD".
|
|
|
|
|
- PrivilegeSeparation defaults to "sandbox".
|
2016-01-27 13:40:44 +00:00
|
|
|
|
- UseDNS defaults to "yes".
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
|
|
|
|
2) Modified client-side defaults
|
|
|
|
|
|
|
|
|
|
We've modified some configuration defaults in ssh:
|
|
|
|
|
|
|
|
|
|
- CheckHostIP defaults to "no".
|
2016-01-21 12:42:31 +00:00
|
|
|
|
- VerifyHostKeyDNS defaults to "yes" if built with LDNS.
|
|
|
|
|
- VersionAddendum defaults to "FreeBSD-YYYYMMDD".
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
|
|
|
|
3) Canonic host names
|
|
|
|
|
|
|
|
|
|
We've added code to ssh.c to canonicize the target host name after
|
|
|
|
|
reading options but before trying to connect. This eliminates the
|
|
|
|
|
usual problem with duplicate known_hosts entries.
|
|
|
|
|
|
2008-08-01 00:28:50 +00:00
|
|
|
|
4) setusercontext() environment
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
|
|
|
|
Our setusercontext(3) can set environment variables, which we must
|
|
|
|
|
take care to transfer to the child's environment.
|
|
|
|
|
|
2016-01-21 12:42:31 +00:00
|
|
|
|
5) TCP wrappers
|
|
|
|
|
|
|
|
|
|
Support for TCP wrappers was removed in upstream 6.7p1. We've
|
|
|
|
|
added it back by porting the 6.6p1 code forward.
|
|
|
|
|
|
2020-02-14 18:59:50 +00:00
|
|
|
|
TCP wrappers support in sshd will be disabled in HEAD and will
|
|
|
|
|
be removed from FreeBSD in the future.
|
|
|
|
|
|
2016-08-03 16:08:21 +00:00
|
|
|
|
6) Agent client reference counting
|
2016-01-21 12:42:31 +00:00
|
|
|
|
|
|
|
|
|
We've added code to ssh-agent.c to implement client reference
|
|
|
|
|
counting; the agent will automatically exit when the last client
|
|
|
|
|
disconnects.
|
|
|
|
|
|
2016-08-03 16:08:21 +00:00
|
|
|
|
7) Class-based login restrictions
|
2016-01-21 12:42:31 +00:00
|
|
|
|
|
|
|
|
|
We've added code to auth2.c to enforce the host.allow, host.deny,
|
|
|
|
|
times.allow and times.deny login class capabilities.
|
|
|
|
|
|
2016-08-03 16:08:21 +00:00
|
|
|
|
8) HPN
|
2016-01-21 12:42:31 +00:00
|
|
|
|
|
|
|
|
|
We no longer have the HPN patches (adaptive buffer size for
|
|
|
|
|
increased throughput on high-BxD links), but we recognize and
|
|
|
|
|
ignore HPN-related configuration options to avoid breaking existing
|
|
|
|
|
configurations.
|
|
|
|
|
|
2002-06-29 10:39:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This port was brought to you by (in no particular order) DARPA, NAI
|
2013-09-23 20:35:54 +00:00
|
|
|
|
Labs, ThinkSec, Nescafé, the Aberlour Glenlivet Distillery Co.,
|
2002-06-29 10:39:14 +00:00
|
|
|
|
Suzanne Vega, and a Sanford's #69 Deluxe Marker.
|
|
|
|
|
|
|
|
|
|
-- des@FreeBSD.org
|
|
|
|
|
|
|
|
|
|
$FreeBSD$
|