--- /dev/null	Fri Dec  4 17:14:47 2015
+++ new/build/openssh/patches/0004-Reorganise-man-pages-into-Illumos-numbering-adjust-t.patch	Fri Dec  4 17:14:47 2015
@@ -0,0 +1,9905 @@
+From 0b784f8f36fc30f8722e784777fe012062beb0d3 Mon Sep 17 00:00:00 2001
+From: oracle <solaris@oracle.com>
+Date: Mon, 3 Aug 2015 14:34:55 -0700
+Subject: [PATCH 04/30] Reorganise man pages into Illumos numbering, adjust
+ text
+
+---
+ Makefile.in          |   22 +-
+ moduli.4             |  127 ++++
+ moduli.5             |  127 ----
+ sftp-server.1m       |  170 +++++
+ sftp-server.8        |  170 -----
+ ssh-keysign.1m       |   93 +++
+ ssh-keysign.8        |   93 ---
+ ssh-pkcs11-helper.1m |   43 ++
+ ssh-pkcs11-helper.8  |   43 --
+ ssh_config.4         | 1726 +++++++++++++++++++++++++++++++++++++++++++++++++
+ ssh_config.5         | 1726 -------------------------------------------------
+ sshd.1m              |  971 ++++++++++++++++++++++++++++
+ sshd.8               |  971 ----------------------------
+ sshd_config.4        | 1736 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ sshd_config.5        | 1736 --------------------------------------------------
+ 15 files changed, 4877 insertions(+), 4877 deletions(-)
+ create mode 100644 moduli.4
+ delete mode 100644 moduli.5
+ create mode 100644 sftp-server.1m
+ delete mode 100644 sftp-server.8
+ create mode 100644 ssh-keysign.1m
+ delete mode 100644 ssh-keysign.8
+ create mode 100644 ssh-pkcs11-helper.1m
+ delete mode 100644 ssh-pkcs11-helper.8
+ create mode 100644 ssh_config.4
+ delete mode 100644 ssh_config.5
+ create mode 100644 sshd.1m
+ delete mode 100644 sshd.8
+ create mode 100644 sshd_config.4
+ delete mode 100644 sshd_config.5
+
+diff --git a/Makefile.in b/Makefile.in
+index 8e52bca..0dd46b1 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -112,8 +112,8 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o auth-rsa.o auth-rh-rsa.o \
+ 	sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o \
+ 	sandbox-seccomp-filter.o sandbox-capsicum.o
+ 
+-MANPAGES	= moduli.5.out scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-keysign.8.out ssh-pkcs11-helper.8.out sshd_config.5.out ssh_config.5.out
+-MANPAGES_IN	= moduli.5 scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-keysign.8 ssh-pkcs11-helper.8 sshd_config.5 ssh_config.5
++MANPAGES	= moduli.4.out scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.1m.out sftp-server.1m.out sftp.1.out ssh-keysign.1m.out ssh-pkcs11-helper.1m.out sshd_config.4.out ssh_config.4.out
++MANPAGES_IN	= moduli.4 scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.1m sftp-server.1m sftp.1 ssh-keysign.1m ssh-pkcs11-helper.1m sshd_config.4 ssh_config.4
+ MANTYPE		= @MANTYPE@
+ 
+ CONFIGFILES=sshd_config.out ssh_config.out moduli.out
+@@ -307,8 +307,8 @@ install-files:
+ 	$(srcdir)/mkinstalldirs $(DESTDIR)$(sbindir)
+ 	$(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)
+ 	$(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)1
+-	$(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)5
+-	$(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)8
++	$(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)4
++	$(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)1m
+ 	$(srcdir)/mkinstalldirs $(DESTDIR)$(libexecdir)
+ 	(umask 022 ; $(srcdir)/mkinstalldirs $(DESTDIR)$(PRIVSEP_PATH))
+ 	$(INSTALL) -m 0755 $(STRIP_OPT) ssh$(EXEEXT) $(DESTDIR)$(bindir)/ssh$(EXEEXT)
+@@ -328,14 +328,14 @@ install-files:
+ 	$(INSTALL) -m 644 ssh-agent.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-agent.1
+ 	$(INSTALL) -m 644 ssh-keygen.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-keygen.1
+ 	$(INSTALL) -m 644 ssh-keyscan.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-keyscan.1
+-	$(INSTALL) -m 644 moduli.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/moduli.5
+-	$(INSTALL) -m 644 sshd_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/sshd_config.5
+-	$(INSTALL) -m 644 ssh_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/ssh_config.5
+-	$(INSTALL) -m 644 sshd.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/sshd.8
++	$(INSTALL) -m 644 moduli.4.out $(DESTDIR)$(mandir)/$(mansubdir)4/moduli.4
++	$(INSTALL) -m 644 sshd_config.4.out $(DESTDIR)$(mandir)/$(mansubdir)4/sshd_config.4
++	$(INSTALL) -m 644 ssh_config.4.out $(DESTDIR)$(mandir)/$(mansubdir)4/ssh_config.4
++	$(INSTALL) -m 644 sshd.1m.out $(DESTDIR)$(mandir)/$(mansubdir)1m/sshd.1m
+ 	$(INSTALL) -m 644 sftp.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/sftp.1
+-	$(INSTALL) -m 644 sftp-server.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/sftp-server.8
+-	$(INSTALL) -m 644 ssh-keysign.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-keysign.8
+-	$(INSTALL) -m 644 ssh-pkcs11-helper.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-pkcs11-helper.8
++	$(INSTALL) -m 644 sftp-server.1m.out $(DESTDIR)$(mandir)/$(mansubdir)1m/sftp-server.1m
++	$(INSTALL) -m 644 ssh-keysign.1m.out $(DESTDIR)$(mandir)/$(mansubdir)1m/ssh-keysign.1m
++	$(INSTALL) -m 644 ssh-pkcs11-helper.1m.out $(DESTDIR)$(mandir)/$(mansubdir)1m/ssh-pkcs11-helper.1m
+ 	-rm -f $(DESTDIR)$(bindir)/slogin
+ 	ln -s ./ssh$(EXEEXT) $(DESTDIR)$(bindir)/slogin
+ 	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/slogin.1
+diff --git a/moduli.4 b/moduli.4
+new file mode 100644
+index 0000000..f87556b
+--- /dev/null
++++ b/moduli.4
+@@ -0,0 +1,127 @@
++.\"	$OpenBSD: moduli.5,v 1.17 2012/09/26 17:34:38 jmc Exp $
++.\"
++.\" Copyright (c) 2008 Damien Miller <djm@mindrot.org>
++.\"
++.\" Permission to use, copy, modify, and distribute this software for any
++.\" purpose with or without fee is hereby granted, provided that the above
++.\" copyright notice and this permission notice appear in all copies.
++.\"
++.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
++.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
++.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
++.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
++.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
++.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++.Dd $Mdocdate: September 26 2012 $
++.Dt MODULI 4
++.Os
++.Sh NAME
++.Nm moduli
++.Nd Diffie-Hellman moduli
++.Sh DESCRIPTION
++The
++.Pa /etc/moduli
++file contains prime numbers and generators for use by
++.Xr sshd 1M
++in the Diffie-Hellman Group Exchange key exchange method.
++.Pp
++New moduli may be generated with
++.Xr ssh-keygen 1
++using a two-step process.
++An initial
++.Em candidate generation
++pass, using
++.Ic ssh-keygen -G ,
++calculates numbers that are likely to be useful.
++A second
++.Em primality testing
++pass, using
++.Ic ssh-keygen -T ,
++provides a high degree of assurance that the numbers are prime and are
++safe for use in Diffie-Hellman operations by
++.Xr sshd 1M .
++This
++.Nm
++format is used as the output from each pass.
++.Pp
++The file consists of newline-separated records, one per modulus,
++containing seven space-separated fields.
++These fields are as follows:
++.Bl -tag -width Description -offset indent
++.It timestamp
++The time that the modulus was last processed as YYYYMMDDHHMMSS.
++.It type
++Decimal number specifying the internal structure of the prime modulus.
++Supported types are:
++.Pp
++.Bl -tag -width 0x00 -compact
++.It 0
++Unknown, not tested.
++.It 2
++"Safe" prime; (p-1)/2 is also prime.
++.It 4
++Sophie Germain; 2p+1 is also prime.
++.El
++.Pp
++Moduli candidates initially produced by
++.Xr ssh-keygen 1
++are Sophie Germain primes (type 4).
++Further primality testing with
++.Xr ssh-keygen 1
++produces safe prime moduli (type 2) that are ready for use in
++.Xr sshd 1M .
++Other types are not used by OpenSSH.
++.It tests
++Decimal number indicating the type of primality tests that the number
++has been subjected to represented as a bitmask of the following values:
++.Pp
++.Bl -tag -width 0x00 -compact
++.It 0x00
++Not tested.
++.It 0x01
++Composite number \(en not prime.
++.It 0x02
++Sieve of Eratosthenes.
++.It 0x04
++Probabilistic Miller-Rabin primality tests.
++.El
++.Pp
++The
++.Xr ssh-keygen 1
++moduli candidate generation uses the Sieve of Eratosthenes (flag 0x02).
++Subsequent
++.Xr ssh-keygen 1
++primality tests are Miller-Rabin tests (flag 0x04).
++.It trials
++Decimal number indicating the number of primality trials
++that have been performed on the modulus.
++.It size
++Decimal number indicating the size of the prime in bits.
++.It generator
++The recommended generator for use with this modulus (hexadecimal).
++.It modulus
++The modulus itself in hexadecimal.
++.El
++.Pp
++When performing Diffie-Hellman Group Exchange,
++.Xr sshd 1M
++first estimates the size of the modulus required to produce enough
++Diffie-Hellman output to sufficiently key the selected symmetric cipher.
++.Xr sshd 1M
++then randomly selects a modulus from
++.Fa /etc/moduli
++that best meets the size requirement.
++.Sh SEE ALSO
++.Xr ssh-keygen 1 ,
++.Xr sshd 1M
++.Sh STANDARDS
++.Rs
++.%A M. Friedl
++.%A N. Provos
++.%A W. Simpson
++.%D March 2006
++.%R RFC 4419
++.%T Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol
++.%D 2006
++.Re
+diff --git a/moduli.5 b/moduli.5
+deleted file mode 100644
+index ef0de08..0000000
+--- a/moduli.5
++++ /dev/null
+@@ -1,127 +0,0 @@
+-.\"	$OpenBSD: moduli.5,v 1.17 2012/09/26 17:34:38 jmc Exp $
+-.\"
+-.\" Copyright (c) 2008 Damien Miller <djm@mindrot.org>
+-.\"
+-.\" Permission to use, copy, modify, and distribute this software for any
+-.\" purpose with or without fee is hereby granted, provided that the above
+-.\" copyright notice and this permission notice appear in all copies.
+-.\"
+-.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+-.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+-.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+-.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+-.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+-.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+-.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+-.Dd $Mdocdate: September 26 2012 $
+-.Dt MODULI 5
+-.Os
+-.Sh NAME
+-.Nm moduli
+-.Nd Diffie-Hellman moduli
+-.Sh DESCRIPTION
+-The
+-.Pa /etc/moduli
+-file contains prime numbers and generators for use by
+-.Xr sshd 8
+-in the Diffie-Hellman Group Exchange key exchange method.
+-.Pp
+-New moduli may be generated with
+-.Xr ssh-keygen 1
+-using a two-step process.
+-An initial
+-.Em candidate generation
+-pass, using
+-.Ic ssh-keygen -G ,
+-calculates numbers that are likely to be useful.
+-A second
+-.Em primality testing
+-pass, using
+-.Ic ssh-keygen -T ,
+-provides a high degree of assurance that the numbers are prime and are
+-safe for use in Diffie-Hellman operations by
+-.Xr sshd 8 .
+-This
+-.Nm
+-format is used as the output from each pass.
+-.Pp
+-The file consists of newline-separated records, one per modulus,
+-containing seven space-separated fields.
+-These fields are as follows:
+-.Bl -tag -width Description -offset indent
+-.It timestamp
+-The time that the modulus was last processed as YYYYMMDDHHMMSS.
+-.It type
+-Decimal number specifying the internal structure of the prime modulus.
+-Supported types are:
+-.Pp
+-.Bl -tag -width 0x00 -compact
+-.It 0
+-Unknown, not tested.
+-.It 2
+-"Safe" prime; (p-1)/2 is also prime.
+-.It 4
+-Sophie Germain; 2p+1 is also prime.
+-.El
+-.Pp
+-Moduli candidates initially produced by
+-.Xr ssh-keygen 1
+-are Sophie Germain primes (type 4).
+-Further primality testing with
+-.Xr ssh-keygen 1
+-produces safe prime moduli (type 2) that are ready for use in
+-.Xr sshd 8 .
+-Other types are not used by OpenSSH.
+-.It tests
+-Decimal number indicating the type of primality tests that the number
+-has been subjected to represented as a bitmask of the following values:
+-.Pp
+-.Bl -tag -width 0x00 -compact
+-.It 0x00
+-Not tested.
+-.It 0x01
+-Composite number \(en not prime.
+-.It 0x02
+-Sieve of Eratosthenes.
+-.It 0x04
+-Probabilistic Miller-Rabin primality tests.
+-.El
+-.Pp
+-The
+-.Xr ssh-keygen 1
+-moduli candidate generation uses the Sieve of Eratosthenes (flag 0x02).
+-Subsequent
+-.Xr ssh-keygen 1
+-primality tests are Miller-Rabin tests (flag 0x04).
+-.It trials
+-Decimal number indicating the number of primality trials
+-that have been performed on the modulus.
+-.It size
+-Decimal number indicating the size of the prime in bits.
+-.It generator
+-The recommended generator for use with this modulus (hexadecimal).
+-.It modulus
+-The modulus itself in hexadecimal.
+-.El
+-.Pp
+-When performing Diffie-Hellman Group Exchange,
+-.Xr sshd 8
+-first estimates the size of the modulus required to produce enough
+-Diffie-Hellman output to sufficiently key the selected symmetric cipher.
+-.Xr sshd 8
+-then randomly selects a modulus from
+-.Fa /etc/moduli
+-that best meets the size requirement.
+-.Sh SEE ALSO
+-.Xr ssh-keygen 1 ,
+-.Xr sshd 8
+-.Sh STANDARDS
+-.Rs
+-.%A M. Friedl
+-.%A N. Provos
+-.%A W. Simpson
+-.%D March 2006
+-.%R RFC 4419
+-.%T Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol
+-.%D 2006
+-.Re
+diff --git a/sftp-server.1m b/sftp-server.1m
+new file mode 100644
+index 0000000..42354c2
+--- /dev/null
++++ b/sftp-server.1m
+@@ -0,0 +1,170 @@
++.\" $OpenBSD: sftp-server.8,v 1.27 2014/12/11 04:16:14 djm Exp $
++.\"
++.\" Copyright (c) 2000 Markus Friedl.  All rights reserved.
++.\"
++.\" Redistribution and use in source and binary forms, with or without
++.\" modification, are permitted provided that the following conditions
++.\" are met:
++.\" 1. Redistributions of source code must retain the above copyright
++.\"    notice, this list of conditions and the following disclaimer.
++.\" 2. Redistributions in binary form must reproduce the above copyright
++.\"    notice, this list of conditions and the following disclaimer in the
++.\"    documentation and/or other materials provided with the distribution.
++.\"
++.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
++.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
++.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
++.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
++.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
++.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
++.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++.\"
++.Dd $Mdocdate: December 11 2014 $
++.Dt SFTP-SERVER 1M
++.Os
++.Sh NAME
++.Nm sftp-server
++.Nd SFTP server subsystem
++.Sh SYNOPSIS
++.Nm sftp-server
++.Bk -words
++.Op Fl ehR
++.Op Fl d Ar start_directory
++.Op Fl f Ar log_facility
++.Op Fl l Ar log_level
++.Op Fl P Ar blacklisted_requests
++.Op Fl p Ar whitelisted_requests
++.Op Fl u Ar umask
++.Ek
++.Nm
++.Fl Q Ar protocol_feature
++.Sh DESCRIPTION
++.Nm
++is a program that speaks the server side of SFTP protocol
++to stdout and expects client requests from stdin.
++.Nm
++is not intended to be called directly, but from
++.Xr sshd 1M
++using the
++.Cm Subsystem
++option.
++.Pp
++Command-line flags to
++.Nm
++should be specified in the
++.Cm Subsystem
++declaration.
++See
++.Xr sshd_config 4
++for more information.
++.Pp
++Valid options are:
++.Bl -tag -width Ds
++.It Fl d Ar start_directory
++specifies an alternate starting directory for users.
++The pathname may contain the following tokens that are expanded at runtime:
++%% is replaced by a literal '%',
++%d is replaced by the home directory of the user being authenticated,
++and %u is replaced by the username of that user.
++The default is to use the user's home directory.
++This option is useful in conjunction with the
++.Xr sshd_config 4
++.Cm ChrootDirectory
++option.
++.It Fl e
++Causes
++.Nm
++to print logging information to stderr instead of syslog for debugging.
++.It Fl f Ar log_facility
++Specifies the facility code that is used when logging messages from
++.Nm .
++The possible values are: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2,
++LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7.
++The default is AUTH.
++.It Fl h
++Displays
++.Nm
++usage information.
++.It Fl l Ar log_level
++Specifies which messages will be logged by
++.Nm .
++The possible values are:
++QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3.
++INFO and VERBOSE log transactions that
++.Nm
++performs on behalf of the client.
++DEBUG and DEBUG1 are equivalent.
++DEBUG2 and DEBUG3 each specify higher levels of debugging output.
++The default is ERROR.
++.It Fl P Ar blacklisted_requests
++Specify a comma-separated list of SFTP protocol requests that are banned by
++the server.
++.Nm
++will reply to any blacklisted request with a failure.
++The
++.Fl Q
++flag can be used to determine the supported request types.
++If both a blacklist and a whitelist are specified, then the blacklist is
++applied before the whitelist.
++.It Fl p Ar whitelisted_requests
++Specify a comma-separated list of SFTP protocol requests that are permitted
++by the server.
++All request types that are not on the whitelist will be logged and replied
++to with a failure message.
++.Pp
++Care must be taken when using this feature to ensure that requests made
++implicitly by SFTP clients are permitted.
++.It Fl Q Ar protocol_feature
++Query protocol features supported by
++.Nm .
++At present the only feature that may be queried is
++.Dq requests ,
++which may be used for black or whitelisting (flags
++.Fl P
++and
++.Fl p
++respectively).
++.It Fl R
++Places this instance of
++.Nm
++into a read-only mode.
++Attempts to open files for writing, as well as other operations that change
++the state of the filesystem, will be denied.
++.It Fl u Ar umask
++Sets an explicit
++.Xr umask 2
++to be applied to newly-created files and directories, instead of the
++user's default mask.
++.El
++.Pp
++On some systems,
++.Nm
++must be able to access
++.Pa /dev/log
++for logging to work, and use of
++.Nm
++in a chroot configuration therefore requires that
++.Xr syslogd 8
++establish a logging socket inside the chroot directory.
++.Sh SEE ALSO
++.Xr sftp 1 ,
++.Xr ssh 1 ,
++.Xr sshd_config 4 ,
++.Xr sshd 1M
++.Rs
++.%A T. Ylonen
++.%A S. Lehtinen
++.%T "SSH File Transfer Protocol"
++.%N draft-ietf-secsh-filexfer-02.txt
++.%D October 2001
++.%O work in progress material
++.Re
++.Sh HISTORY
++.Nm
++first appeared in
++.Ox 2.8 .
++.Sh AUTHORS
++.An Markus Friedl Aq Mt markus@openbsd.org
+diff --git a/sftp-server.8 b/sftp-server.8
+deleted file mode 100644
+index c117398..0000000
+--- a/sftp-server.8
++++ /dev/null
+@@ -1,170 +0,0 @@
+-.\" $OpenBSD: sftp-server.8,v 1.27 2014/12/11 04:16:14 djm Exp $
+-.\"
+-.\" Copyright (c) 2000 Markus Friedl.  All rights reserved.
+-.\"
+-.\" Redistribution and use in source and binary forms, with or without
+-.\" modification, are permitted provided that the following conditions
+-.\" are met:
+-.\" 1. Redistributions of source code must retain the above copyright
+-.\"    notice, this list of conditions and the following disclaimer.
+-.\" 2. Redistributions in binary form must reproduce the above copyright
+-.\"    notice, this list of conditions and the following disclaimer in the
+-.\"    documentation and/or other materials provided with the distribution.
+-.\"
+-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+-.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+-.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+-.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+-.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+-.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+-.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+-.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+-.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-.\"
+-.Dd $Mdocdate: December 11 2014 $
+-.Dt SFTP-SERVER 8
+-.Os
+-.Sh NAME
+-.Nm sftp-server
+-.Nd SFTP server subsystem
+-.Sh SYNOPSIS
+-.Nm sftp-server
+-.Bk -words
+-.Op Fl ehR
+-.Op Fl d Ar start_directory
+-.Op Fl f Ar log_facility
+-.Op Fl l Ar log_level
+-.Op Fl P Ar blacklisted_requests
+-.Op Fl p Ar whitelisted_requests
+-.Op Fl u Ar umask
+-.Ek
+-.Nm
+-.Fl Q Ar protocol_feature
+-.Sh DESCRIPTION
+-.Nm
+-is a program that speaks the server side of SFTP protocol
+-to stdout and expects client requests from stdin.
+-.Nm
+-is not intended to be called directly, but from
+-.Xr sshd 8
+-using the
+-.Cm Subsystem
+-option.
+-.Pp
+-Command-line flags to
+-.Nm
+-should be specified in the
+-.Cm Subsystem
+-declaration.
+-See
+-.Xr sshd_config 5
+-for more information.
+-.Pp
+-Valid options are:
+-.Bl -tag -width Ds
+-.It Fl d Ar start_directory
+-specifies an alternate starting directory for users.
+-The pathname may contain the following tokens that are expanded at runtime:
+-%% is replaced by a literal '%',
+-%d is replaced by the home directory of the user being authenticated,
+-and %u is replaced by the username of that user.
+-The default is to use the user's home directory.
+-This option is useful in conjunction with the
+-.Xr sshd_config 5
+-.Cm ChrootDirectory
+-option.
+-.It Fl e
+-Causes
+-.Nm
+-to print logging information to stderr instead of syslog for debugging.
+-.It Fl f Ar log_facility
+-Specifies the facility code that is used when logging messages from
+-.Nm .
+-The possible values are: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2,
+-LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7.
+-The default is AUTH.
+-.It Fl h
+-Displays
+-.Nm
+-usage information.
+-.It Fl l Ar log_level
+-Specifies which messages will be logged by
+-.Nm .
+-The possible values are:
+-QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3.
+-INFO and VERBOSE log transactions that
+-.Nm
+-performs on behalf of the client.
+-DEBUG and DEBUG1 are equivalent.
+-DEBUG2 and DEBUG3 each specify higher levels of debugging output.
+-The default is ERROR.
+-.It Fl P Ar blacklisted_requests
+-Specify a comma-separated list of SFTP protocol requests that are banned by
+-the server.
+-.Nm
+-will reply to any blacklisted request with a failure.
+-The
+-.Fl Q
+-flag can be used to determine the supported request types.
+-If both a blacklist and a whitelist are specified, then the blacklist is
+-applied before the whitelist.
+-.It Fl p Ar whitelisted_requests
+-Specify a comma-separated list of SFTP protocol requests that are permitted
+-by the server.
+-All request types that are not on the whitelist will be logged and replied
+-to with a failure message.
+-.Pp
+-Care must be taken when using this feature to ensure that requests made
+-implicitly by SFTP clients are permitted.
+-.It Fl Q Ar protocol_feature
+-Query protocol features supported by
+-.Nm .
+-At present the only feature that may be queried is
+-.Dq requests ,
+-which may be used for black or whitelisting (flags
+-.Fl P
+-and
+-.Fl p
+-respectively).
+-.It Fl R
+-Places this instance of
+-.Nm
+-into a read-only mode.
+-Attempts to open files for writing, as well as other operations that change
+-the state of the filesystem, will be denied.
+-.It Fl u Ar umask
+-Sets an explicit
+-.Xr umask 2
+-to be applied to newly-created files and directories, instead of the
+-user's default mask.
+-.El
+-.Pp
+-On some systems,
+-.Nm
+-must be able to access
+-.Pa /dev/log
+-for logging to work, and use of
+-.Nm
+-in a chroot configuration therefore requires that
+-.Xr syslogd 8
+-establish a logging socket inside the chroot directory.
+-.Sh SEE ALSO
+-.Xr sftp 1 ,
+-.Xr ssh 1 ,
+-.Xr sshd_config 5 ,
+-.Xr sshd 8
+-.Rs
+-.%A T. Ylonen
+-.%A S. Lehtinen
+-.%T "SSH File Transfer Protocol"
+-.%N draft-ietf-secsh-filexfer-02.txt
+-.%D October 2001
+-.%O work in progress material
+-.Re
+-.Sh HISTORY
+-.Nm
+-first appeared in
+-.Ox 2.8 .
+-.Sh AUTHORS
+-.An Markus Friedl Aq Mt markus@openbsd.org
+diff --git a/ssh-keysign.1m b/ssh-keysign.1m
+new file mode 100644
+index 0000000..60c96ad
+--- /dev/null
++++ b/ssh-keysign.1m
+@@ -0,0 +1,93 @@
++.\" $OpenBSD: ssh-keysign.8,v 1.14 2013/12/07 11:58:46 naddy Exp $
++.\"
++.\" Copyright (c) 2002 Markus Friedl.  All rights reserved.
++.\"
++.\" Redistribution and use in source and binary forms, with or without
++.\" modification, are permitted provided that the following conditions
++.\" are met:
++.\" 1. Redistributions of source code must retain the above copyright
++.\"    notice, this list of conditions and the following disclaimer.
++.\" 2. Redistributions in binary form must reproduce the above copyright
++.\"    notice, this list of conditions and the following disclaimer in the
++.\"    documentation and/or other materials provided with the distribution.
++.\"
++.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
++.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
++.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
++.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
++.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
++.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
++.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++.\"
++.Dd $Mdocdate: December 7 2013 $
++.Dt SSH-KEYSIGN 1M
++.Os
++.Sh NAME
++.Nm ssh-keysign
++.Nd ssh helper program for host-based authentication
++.Sh SYNOPSIS
++.Nm
++.Sh DESCRIPTION
++.Nm
++is used by
++.Xr ssh 1
++to access the local host keys and generate the digital signature
++required during host-based authentication with SSH protocol version 2.
++.Pp
++.Nm
++is disabled by default and can only be enabled in the
++global client configuration file
++.Pa /etc/ssh/ssh_config
++by setting
++.Cm EnableSSHKeysign
++to
++.Dq yes .
++.Pp
++.Nm
++is not intended to be invoked by the user, but from
++.Xr ssh 1 .
++See
++.Xr ssh 1
++and
++.Xr sshd 1M
++for more information about host-based authentication.
++.Sh FILES
++.Bl -tag -width Ds -compact
++.It Pa /etc/ssh/ssh_config
++Controls whether
++.Nm
++is enabled.
++.Pp
++.It Pa /etc/ssh/ssh_host_dsa_key
++.It Pa /etc/ssh/ssh_host_ecdsa_key
++.It Pa /etc/ssh/ssh_host_ed25519_key
++.It Pa /etc/ssh/ssh_host_rsa_key
++These files contain the private parts of the host keys used to
++generate the digital signature.
++They should be owned by root, readable only by root, and not
++accessible to others.
++Since they are readable only by root,
++.Nm
++must be set-uid root if host-based authentication is used.
++.Pp
++.It Pa /etc/ssh/ssh_host_dsa_key-cert.pub
++.It Pa /etc/ssh/ssh_host_ecdsa_key-cert.pub
++.It Pa /etc/ssh/ssh_host_ed25519_key-cert.pub
++.It Pa /etc/ssh/ssh_host_rsa_key-cert.pub
++If these files exist they are assumed to contain public certificate
++information corresponding with the private keys above.
++.El
++.Sh SEE ALSO
++.Xr ssh 1 ,
++.Xr ssh-keygen 1 ,
++.Xr ssh_config 4 ,
++.Xr sshd 1M
++.Sh HISTORY
++.Nm
++first appeared in
++.Ox 3.2 .
++.Sh AUTHORS
++.An Markus Friedl Aq Mt markus@openbsd.org
+diff --git a/ssh-keysign.8 b/ssh-keysign.8
+deleted file mode 100644
+index 69d0829..0000000
+--- a/ssh-keysign.8
++++ /dev/null
+@@ -1,93 +0,0 @@
+-.\" $OpenBSD: ssh-keysign.8,v 1.14 2013/12/07 11:58:46 naddy Exp $
+-.\"
+-.\" Copyright (c) 2002 Markus Friedl.  All rights reserved.
+-.\"
+-.\" Redistribution and use in source and binary forms, with or without
+-.\" modification, are permitted provided that the following conditions
+-.\" are met:
+-.\" 1. Redistributions of source code must retain the above copyright
+-.\"    notice, this list of conditions and the following disclaimer.
+-.\" 2. Redistributions in binary form must reproduce the above copyright
+-.\"    notice, this list of conditions and the following disclaimer in the
+-.\"    documentation and/or other materials provided with the distribution.
+-.\"
+-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+-.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+-.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+-.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+-.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+-.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+-.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+-.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+-.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-.\"
+-.Dd $Mdocdate: December 7 2013 $
+-.Dt SSH-KEYSIGN 8
+-.Os
+-.Sh NAME
+-.Nm ssh-keysign
+-.Nd ssh helper program for host-based authentication
+-.Sh SYNOPSIS
+-.Nm
+-.Sh DESCRIPTION
+-.Nm
+-is used by
+-.Xr ssh 1
+-to access the local host keys and generate the digital signature
+-required during host-based authentication with SSH protocol version 2.
+-.Pp
+-.Nm
+-is disabled by default and can only be enabled in the
+-global client configuration file
+-.Pa /etc/ssh/ssh_config
+-by setting
+-.Cm EnableSSHKeysign
+-to
+-.Dq yes .
+-.Pp
+-.Nm
+-is not intended to be invoked by the user, but from
+-.Xr ssh 1 .
+-See
+-.Xr ssh 1
+-and
+-.Xr sshd 8
+-for more information about host-based authentication.
+-.Sh FILES
+-.Bl -tag -width Ds -compact
+-.It Pa /etc/ssh/ssh_config
+-Controls whether
+-.Nm
+-is enabled.
+-.Pp
+-.It Pa /etc/ssh/ssh_host_dsa_key
+-.It Pa /etc/ssh/ssh_host_ecdsa_key
+-.It Pa /etc/ssh/ssh_host_ed25519_key
+-.It Pa /etc/ssh/ssh_host_rsa_key
+-These files contain the private parts of the host keys used to
+-generate the digital signature.
+-They should be owned by root, readable only by root, and not
+-accessible to others.
+-Since they are readable only by root,
+-.Nm
+-must be set-uid root if host-based authentication is used.
+-.Pp
+-.It Pa /etc/ssh/ssh_host_dsa_key-cert.pub
+-.It Pa /etc/ssh/ssh_host_ecdsa_key-cert.pub
+-.It Pa /etc/ssh/ssh_host_ed25519_key-cert.pub
+-.It Pa /etc/ssh/ssh_host_rsa_key-cert.pub
+-If these files exist they are assumed to contain public certificate
+-information corresponding with the private keys above.
+-.El
+-.Sh SEE ALSO
+-.Xr ssh 1 ,
+-.Xr ssh-keygen 1 ,
+-.Xr ssh_config 5 ,
+-.Xr sshd 8
+-.Sh HISTORY
+-.Nm
+-first appeared in
+-.Ox 3.2 .
+-.Sh AUTHORS
+-.An Markus Friedl Aq Mt markus@openbsd.org
+diff --git a/ssh-pkcs11-helper.1m b/ssh-pkcs11-helper.1m
+new file mode 100644
+index 0000000..646b1fa
+--- /dev/null
++++ b/ssh-pkcs11-helper.1m
+@@ -0,0 +1,43 @@
++.\" $OpenBSD: ssh-pkcs11-helper.8,v 1.4 2013/07/16 00:07:52 schwarze Exp $
++.\"
++.\" Copyright (c) 2010 Markus Friedl.  All rights reserved.
++.\"
++.\" Permission to use, copy, modify, and distribute this software for any
++.\" purpose with or without fee is hereby granted, provided that the above
++.\" copyright notice and this permission notice appear in all copies.
++.\"
++.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
++.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
++.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
++.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
++.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
++.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++.\"
++.Dd $Mdocdate: July 16 2013 $
++.Dt SSH-PKCS11-HELPER 1M
++.Os
++.Sh NAME
++.Nm ssh-pkcs11-helper
++.Nd ssh-agent helper program for PKCS#11 support
++.Sh SYNOPSIS
++.Nm
++.Sh DESCRIPTION
++.Nm
++is used by
++.Xr ssh-agent 1
++to access keys provided by a PKCS#11 token.
++.Pp
++.Nm
++is not intended to be invoked by the user, but from
++.Xr ssh-agent 1 .
++.Sh SEE ALSO
++.Xr ssh 1 ,
++.Xr ssh-add 1 ,
++.Xr ssh-agent 1
++.Sh HISTORY
++.Nm
++first appeared in
++.Ox 4.7 .
++.Sh AUTHORS
++.An Markus Friedl Aq Mt markus@openbsd.org
+diff --git a/ssh-pkcs11-helper.8 b/ssh-pkcs11-helper.8
+deleted file mode 100644
+index 3728c4e..0000000
+--- a/ssh-pkcs11-helper.8
++++ /dev/null
+@@ -1,43 +0,0 @@
+-.\" $OpenBSD: ssh-pkcs11-helper.8,v 1.4 2013/07/16 00:07:52 schwarze Exp $
+-.\"
+-.\" Copyright (c) 2010 Markus Friedl.  All rights reserved.
+-.\"
+-.\" Permission to use, copy, modify, and distribute this software for any
+-.\" purpose with or without fee is hereby granted, provided that the above
+-.\" copyright notice and this permission notice appear in all copies.
+-.\"
+-.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+-.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+-.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+-.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+-.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+-.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+-.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+-.\"
+-.Dd $Mdocdate: July 16 2013 $
+-.Dt SSH-PKCS11-HELPER 8
+-.Os
+-.Sh NAME
+-.Nm ssh-pkcs11-helper
+-.Nd ssh-agent helper program for PKCS#11 support
+-.Sh SYNOPSIS
+-.Nm
+-.Sh DESCRIPTION
+-.Nm
+-is used by
+-.Xr ssh-agent 1
+-to access keys provided by a PKCS#11 token.
+-.Pp
+-.Nm
+-is not intended to be invoked by the user, but from
+-.Xr ssh-agent 1 .
+-.Sh SEE ALSO
+-.Xr ssh 1 ,
+-.Xr ssh-add 1 ,
+-.Xr ssh-agent 1
+-.Sh HISTORY
+-.Nm
+-first appeared in
+-.Ox 4.7 .
+-.Sh AUTHORS
+-.An Markus Friedl Aq Mt markus@openbsd.org
+diff --git a/ssh_config.4 b/ssh_config.4
+new file mode 100644
+index 0000000..8c099eb
+--- /dev/null
++++ b/ssh_config.4
+@@ -0,0 +1,1726 @@
++.\"
++.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
++.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
++.\"                    All rights reserved
++.\"
++.\" As far as I am concerned, the code I have written for this software
++.\" can be used freely for any purpose.  Any derived versions of this
++.\" software must be clearly marked as such, and if the derived work is
++.\" incompatible with the protocol description in the RFC file, it must be
++.\" called by a name other than "ssh" or "Secure Shell".
++.\"
++.\" Copyright (c) 1999,2000 Markus Friedl.  All rights reserved.
++.\" Copyright (c) 1999 Aaron Campbell.  All rights reserved.
++.\" Copyright (c) 1999 Theo de Raadt.  All rights reserved.
++.\"
++.\" Redistribution and use in source and binary forms, with or without
++.\" modification, are permitted provided that the following conditions
++.\" are met:
++.\" 1. Redistributions of source code must retain the above copyright
++.\"    notice, this list of conditions and the following disclaimer.
++.\" 2. Redistributions in binary form must reproduce the above copyright
++.\"    notice, this list of conditions and the following disclaimer in the
++.\"    documentation and/or other materials provided with the distribution.
++.\"
++.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
++.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
++.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
++.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
++.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
++.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
++.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++.\"
++.\" $OpenBSD: ssh_config.5,v 1.215 2015/08/14 15:32:41 jmc Exp $
++.Dd $Mdocdate: August 14 2015 $
++.Dt SSH_CONFIG 4
++.Os
++.Sh NAME
++.Nm ssh_config
++.Nd OpenSSH SSH client configuration files
++.Sh SYNOPSIS
++.Nm ~/.ssh/config
++.Nm /etc/ssh/ssh_config
++.Sh DESCRIPTION
++.Xr ssh 1
++obtains configuration data from the following sources in
++the following order:
++.Pp
++.Bl -enum -offset indent -compact
++.It
++command-line options
++.It
++user's configuration file
++.Pq Pa ~/.ssh/config
++.It
++system-wide configuration file
++.Pq Pa /etc/ssh/ssh_config
++.El
++.Pp
++For each parameter, the first obtained value
++will be used.
++The configuration files contain sections separated by
++.Dq Host
++specifications, and that section is only applied for hosts that
++match one of the patterns given in the specification.
++The matched host name is usually the one given on the command line
++(see the
++.Cm CanonicalizeHostname
++option for exceptions.)
++.Pp
++Since the first obtained value for each parameter is used, more
++host-specific declarations should be given near the beginning of the
++file, and general defaults at the end.
++.Pp
++The configuration file has the following format:
++.Pp
++Empty lines and lines starting with
++.Ql #
++are comments.
++Otherwise a line is of the format
++.Dq keyword arguments .
++Configuration options may be separated by whitespace or
++optional whitespace and exactly one
++.Ql = ;
++the latter format is useful to avoid the need to quote whitespace
++when specifying configuration options using the
++.Nm ssh ,
++.Nm scp ,
++and
++.Nm sftp
++.Fl o
++option.
++Arguments may optionally be enclosed in double quotes
++.Pq \&"
++in order to represent arguments containing spaces.
++.Pp
++The possible
++keywords and their meanings are as follows (note that
++keywords are case-insensitive and arguments are case-sensitive):
++.Bl -tag -width Ds
++.It Cm Host
++Restricts the following declarations (up to the next
++.Cm Host
++or
++.Cm Match
++keyword) to be only for those hosts that match one of the patterns
++given after the keyword.
++If more than one pattern is provided, they should be separated by whitespace.
++A single
++.Ql *
++as a pattern can be used to provide global
++defaults for all hosts.
++The host is usually the
++.Ar hostname
++argument given on the command line
++(see the
++.Cm CanonicalizeHostname
++option for exceptions.)
++.Pp
++A pattern entry may be negated by prefixing it with an exclamation mark
++.Pq Sq !\& .
++If a negated entry is matched, then the
++.Cm Host
++entry is ignored, regardless of whether any other patterns on the line
++match.
++Negated matches are therefore useful to provide exceptions for wildcard
++matches.
++.Pp
++See
++.Sx PATTERNS
++for more information on patterns.
++.It Cm Match
++Restricts the following declarations (up to the next
++.Cm Host
++or
++.Cm Match
++keyword) to be used only when the conditions following the
++.Cm Match
++keyword are satisfied.
++Match conditions are specified using one or more critera
++or the single token
++.Cm all
++which always matches.
++The available criteria keywords are:
++.Cm canonical ,
++.Cm exec ,
++.Cm host ,
++.Cm originalhost ,
++.Cm user ,
++and
++.Cm localuser .
++The
++.Cm all
++criteria must appear alone or immediately after
++.Cm canonical .
++Other criteria may be combined arbitrarily.
++All criteria but
++.Cm all
++and
++.Cm canonical
++require an argument.
++Criteria may be negated by prepending an exclamation mark
++.Pq Sq !\& .
++.Pp
++The
++.Cm canonical
++keyword matches only when the configuration file is being re-parsed
++after hostname canonicalization (see the
++.Cm CanonicalizeHostname
++option.)
++This may be useful to specify conditions that work with canonical host
++names only.
++The
++.Cm exec
++keyword executes the specified command under the user's shell.
++If the command returns a zero exit status then the condition is considered true.
++Commands containing whitespace characters must be quoted.
++The following character sequences in the command will be expanded prior to
++execution:
++.Ql %L
++will be substituted by the first component of the local host name,
++.Ql %l
++will be substituted by the local host name (including any domain name),
++.Ql %h
++will be substituted by the target host name,
++.Ql %n
++will be substituted by the original target host name
++specified on the command-line,
++.Ql %p
++the destination port,
++.Ql %r
++by the remote login username, and
++.Ql %u
++by the username of the user running
++.Xr ssh 1 .
++.Pp
++The other keywords' criteria must be single entries or comma-separated
++lists and may use the wildcard and negation operators described in the
++.Sx PATTERNS
++section.
++The criteria for the
++.Cm host
++keyword are matched against the target hostname, after any substitution
++by the
++.Cm Hostname
++or
++.Cm CanonicalizeHostname
++options.
++The
++.Cm originalhost
++keyword matches against the hostname as it was specified on the command-line.
++The
++.Cm user
++keyword matches against the target username on the remote host.
++The
++.Cm localuser
++keyword matches against the name of the local user running
++.Xr ssh 1
++(this keyword may be useful in system-wide
++.Nm
++files).
++.It Cm AddressFamily
++Specifies which address family to use when connecting.
++Valid arguments are
++.Dq any ,
++.Dq inet
++(use IPv4 only), or
++.Dq inet6
++(use IPv6 only).
++.It Cm BatchMode
++If set to
++.Dq yes ,
++passphrase/password querying will be disabled.
++This option is useful in scripts and other batch jobs where no user
++is present to supply the password.
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++.It Cm BindAddress
++Use the specified address on the local machine as the source address of
++the connection.
++Only useful on systems with more than one address.
++Note that this option does not work if
++.Cm UsePrivilegedPort
++is set to
++.Dq yes .
++.It Cm CanonicalDomains
++When
++.Cm CanonicalizeHostname
++is enabled, this option specifies the list of domain suffixes in which to
++search for the specified destination host.
++.It Cm CanonicalizeFallbackLocal
++Specifies whether to fail with an error when hostname canonicalization fails.
++The default,
++.Dq yes ,
++will attempt to look up the unqualified hostname using the system resolver's
++search rules.
++A value of
++.Dq no
++will cause
++.Xr ssh 1
++to fail instantly if
++.Cm CanonicalizeHostname
++is enabled and the target hostname cannot be found in any of the domains
++specified by
++.Cm CanonicalDomains .
++.It Cm CanonicalizeHostname
++Controls whether explicit hostname canonicalization is performed.
++The default,
++.Dq no ,
++is not to perform any name rewriting and let the system resolver handle all
++hostname lookups.
++If set to
++.Dq yes
++then, for connections that do not use a
++.Cm ProxyCommand ,
++.Xr ssh 1
++will attempt to canonicalize the hostname specified on the command line
++using the
++.Cm CanonicalDomains
++suffixes and
++.Cm CanonicalizePermittedCNAMEs
++rules.
++If
++.Cm CanonicalizeHostname
++is set to
++.Dq always ,
++then canonicalization is applied to proxied connections too.
++.Pp
++If this option is enabled, then the configuration files are processed
++again using the new target name to pick up any new configuration in matching
++.Cm Host
++and
++.Cm Match
++stanzas.
++.It Cm CanonicalizeMaxDots
++Specifies the maximum number of dot characters in a hostname before
++canonicalization is disabled.
++The default,
++.Dq 1 ,
++allows a single dot (i.e. hostname.subdomain).
++.It Cm CanonicalizePermittedCNAMEs
++Specifies rules to determine whether CNAMEs should be followed when
++canonicalizing hostnames.
++The rules consist of one or more arguments of
++.Ar source_domain_list : Ns Ar target_domain_list ,
++where
++.Ar source_domain_list
++is a pattern-list of domains that may follow CNAMEs in canonicalization,
++and
++.Ar target_domain_list
++is a pattern-list of domains that they may resolve to.
++.Pp
++For example,
++.Dq *.a.example.com:*.b.example.com,*.c.example.com
++will allow hostnames matching
++.Dq *.a.example.com
++to be canonicalized to names in the
++.Dq *.b.example.com
++or
++.Dq *.c.example.com
++domains.
++.It Cm ChallengeResponseAuthentication
++Specifies whether to use challenge-response authentication.
++The argument to this keyword must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq yes .
++.It Cm CheckHostIP
++If this flag is set to
++.Dq yes ,
++.Xr ssh 1
++will additionally check the host IP address in the
++.Pa known_hosts
++file.
++This allows ssh to detect if a host key changed due to DNS spoofing
++and will add addresses of destination hosts to
++.Pa ~/.ssh/known_hosts
++in the process, regardless of the setting of
++.Cm StrictHostKeyChecking .
++If the option is set to
++.Dq no ,
++the check will not be executed.
++The default is
++.Dq yes .
++.It Cm Cipher
++Specifies the cipher to use for encrypting the session
++in protocol version 1.
++Currently,
++.Dq blowfish ,
++.Dq 3des ,
++and
++.Dq des
++are supported.
++.Ar des
++is only supported in the
++.Xr ssh 1
++client for interoperability with legacy protocol 1 implementations
++that do not support the
++.Ar 3des
++cipher.
++Its use is strongly discouraged due to cryptographic weaknesses.
++The default is
++.Dq 3des .
++.It Cm Ciphers
++Specifies the ciphers allowed for protocol version 2
++in order of preference.
++Multiple ciphers must be comma-separated.
++If the specified value begins with a
++.Sq +
++character, then the specified ciphers will be appended to the default set
++instead of replacing them.
++.Pp
++The supported ciphers are:
++.Pp
++.Bl -item -compact -offset indent
++.It
++3des-cbc
++.It
++aes128-cbc
++.It
++aes192-cbc
++.It
++aes256-cbc
++.It
++aes128-ctr
++.It
++aes192-ctr
++.It
++aes256-ctr
++.It
++aes128-gcm@openssh.com
++.It
++aes256-gcm@openssh.com
++.It
++arcfour
++.It
++arcfour128
++.It
++arcfour256
++.It
++blowfish-cbc
++.It
++cast128-cbc
++.It
++chacha20-poly1305@openssh.com
++.El
++.Pp
++The default is:
++.Bd -literal -offset indent
++chacha20-poly1305@openssh.com,
++aes128-ctr,aes192-ctr,aes256-ctr,
++aes128-gcm@openssh.com,aes256-gcm@openssh.com,
++arcfour256,arcfour128,
++aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,
++aes192-cbc,aes256-cbc,arcfour
++.Ed
++.Pp
++The list of available ciphers may also be obtained using the
++.Fl Q
++option of
++.Xr ssh 1
++with an argument of
++.Dq cipher .
++.It Cm ClearAllForwardings
++Specifies that all local, remote, and dynamic port forwardings
++specified in the configuration files or on the command line be
++cleared.
++This option is primarily useful when used from the
++.Xr ssh 1
++command line to clear port forwardings set in
++configuration files, and is automatically set by
++.Xr scp 1
++and
++.Xr sftp 1 .
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++.It Cm Compression
++Specifies whether to use compression.
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++.It Cm CompressionLevel
++Specifies the compression level to use if compression is enabled.
++The argument must be an integer from 1 (fast) to 9 (slow, best).
++The default level is 6, which is good for most applications.
++The meaning of the values is the same as in
++.Xr gzip 1 .
++Note that this option applies to protocol version 1 only.
++.It Cm ConnectionAttempts
++Specifies the number of tries (one per second) to make before exiting.
++The argument must be an integer.
++This may be useful in scripts if the connection sometimes fails.
++The default is 1.
++.It Cm ConnectTimeout
++Specifies the timeout (in seconds) used when connecting to the
++SSH server, instead of using the default system TCP timeout.
++This value is used only when the target is down or really unreachable,
++not when it refuses the connection.
++.It Cm ControlMaster
++Enables the sharing of multiple sessions over a single network connection.
++When set to
++.Dq yes ,
++.Xr ssh 1
++will listen for connections on a control socket specified using the
++.Cm ControlPath
++argument.
++Additional sessions can connect to this socket using the same
++.Cm ControlPath
++with
++.Cm ControlMaster
++set to
++.Dq no
++(the default).
++These sessions will try to reuse the master instance's network connection
++rather than initiating new ones, but will fall back to connecting normally
++if the control socket does not exist, or is not listening.
++.Pp
++Setting this to
++.Dq ask
++will cause ssh
++to listen for control connections, but require confirmation using
++.Xr ssh-askpass 1 .
++If the
++.Cm ControlPath
++cannot be opened,
++ssh will continue without connecting to a master instance.
++.Pp
++X11 and
++.Xr ssh-agent 1
++forwarding is supported over these multiplexed connections, however the
++display and agent forwarded will be the one belonging to the master
++connection i.e. it is not possible to forward multiple displays or agents.
++.Pp
++Two additional options allow for opportunistic multiplexing: try to use a
++master connection but fall back to creating a new one if one does not already
++exist.
++These options are:
++.Dq auto
++and
++.Dq autoask .
++The latter requires confirmation like the
++.Dq ask
++option.
++.It Cm ControlPath
++Specify the path to the control socket used for connection sharing as described
++in the
++.Cm ControlMaster
++section above or the string
++.Dq none
++to disable connection sharing.
++In the path,
++.Ql %L
++will be substituted by the first component of the local host name,
++.Ql %l
++will be substituted by the local host name (including any domain name),
++.Ql %h
++will be substituted by the target host name,
++.Ql %n
++will be substituted by the original target host name
++specified on the command line,
++.Ql %p
++the destination port,
++.Ql %r
++by the remote login username,
++.Ql %u
++by the username of the user running
++.Xr ssh 1 , and
++.Ql \&%C
++by a hash of the concatenation: %l%h%p%r.
++It is recommended that any
++.Cm ControlPath
++used for opportunistic connection sharing include
++at least %h, %p, and %r (or alternatively %C) and be placed in a directory
++that is not writable by other users.
++This ensures that shared connections are uniquely identified.
++.It Cm ControlPersist
++When used in conjunction with
++.Cm ControlMaster ,
++specifies that the master connection should remain open
++in the background (waiting for future client connections)
++after the initial client connection has been closed.
++If set to
++.Dq no ,
++then the master connection will not be placed into the background,
++and will close as soon as the initial client connection is closed.
++If set to
++.Dq yes
++or
++.Dq 0 ,
++then the master connection will remain in the background indefinitely
++(until killed or closed via a mechanism such as the
++.Xr ssh 1
++.Dq Fl O No exit
++option).
++If set to a time in seconds, or a time in any of the formats documented in
++.Xr sshd_config 4 ,
++then the backgrounded master connection will automatically terminate
++after it has remained idle (with no client connections) for the
++specified time.
++.It Cm DynamicForward
++Specifies that a TCP port on the local machine be forwarded
++over the secure channel, and the application
++protocol is then used to determine where to connect to from the
++remote machine.
++.Pp
++The argument must be
++.Sm off
++.Oo Ar bind_address : Oc Ar port .
++.Sm on
++IPv6 addresses can be specified by enclosing addresses in square brackets.
++By default, the local port is bound in accordance with the
++.Cm GatewayPorts
++setting.
++However, an explicit
++.Ar bind_address
++may be used to bind the connection to a specific address.
++The
++.Ar bind_address
++of
++.Dq localhost
++indicates that the listening port be bound for local use only, while an
++empty address or
++.Sq *
++indicates that the port should be available from all interfaces.
++.Pp
++Currently the SOCKS4 and SOCKS5 protocols are supported, and
++.Xr ssh 1
++will act as a SOCKS server.
++Multiple forwardings may be specified, and
++additional forwardings can be given on the command line.
++Only the superuser can forward privileged ports.
++.It Cm EnableSSHKeysign
++Setting this option to
++.Dq yes
++in the global client configuration file
++.Pa /etc/ssh/ssh_config
++enables the use of the helper program
++.Xr ssh-keysign 8
++during
++.Cm HostbasedAuthentication .
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++This option should be placed in the non-hostspecific section.
++See
++.Xr ssh-keysign 8
++for more information.
++.It Cm EscapeChar
++Sets the escape character (default:
++.Ql ~ ) .
++The escape character can also
++be set on the command line.
++The argument should be a single character,
++.Ql ^
++followed by a letter, or
++.Dq none
++to disable the escape
++character entirely (making the connection transparent for binary
++data).
++.It Cm ExitOnForwardFailure
++Specifies whether
++.Xr ssh 1
++should terminate the connection if it cannot set up all requested
++dynamic, tunnel, local, and remote port forwardings.
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++.It Cm FingerprintHash
++Specifies the hash algorithm used when displaying key fingerprints.
++Valid options are:
++.Dq md5
++and
++.Dq sha256 .
++The default is
++.Dq sha256 .
++.It Cm ForwardAgent
++Specifies whether the connection to the authentication agent (if any)
++will be forwarded to the remote machine.
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++.Pp
++Agent forwarding should be enabled with caution.
++Users with the ability to bypass file permissions on the remote host
++(for the agent's Unix-domain socket)
++can access the local agent through the forwarded connection.
++An attacker cannot obtain key material from the agent,
++however they can perform operations on the keys that enable them to
++authenticate using the identities loaded into the agent.
++.It Cm ForwardX11
++Specifies whether X11 connections will be automatically redirected
++over the secure channel and
++.Ev DISPLAY
++set.
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++.Pp
++X11 forwarding should be enabled with caution.
++Users with the ability to bypass file permissions on the remote host
++(for the user's X11 authorization database)
++can access the local X11 display through the forwarded connection.
++An attacker may then be able to perform activities such as keystroke monitoring
++if the
++.Cm ForwardX11Trusted
++option is also enabled.
++.It Cm ForwardX11Timeout
++Specify a timeout for untrusted X11 forwarding
++using the format described in the
++TIME FORMATS section of
++.Xr sshd_config 4 .
++X11 connections received by
++.Xr ssh 1
++after this time will be refused.
++The default is to disable untrusted X11 forwarding after twenty minutes has
++elapsed.
++.It Cm ForwardX11Trusted
++If this option is set to
++.Dq yes ,
++remote X11 clients will have full access to the original X11 display.
++.Pp
++If this option is set to
++.Dq no ,
++remote X11 clients will be considered untrusted and prevented
++from stealing or tampering with data belonging to trusted X11
++clients.
++Furthermore, the
++.Xr xauth 1
++token used for the session will be set to expire after 20 minutes.
++Remote clients will be refused access after this time.
++.Pp
++The default is
++.Dq no .
++.Pp
++See the X11 SECURITY extension specification for full details on
++the restrictions imposed on untrusted clients.
++.It Cm GatewayPorts
++Specifies whether remote hosts are allowed to connect to local
++forwarded ports.
++By default,
++.Xr ssh 1
++binds local port forwardings to the loopback address.
++This prevents other remote hosts from connecting to forwarded ports.
++.Cm GatewayPorts
++can be used to specify that ssh
++should bind local port forwardings to the wildcard address,
++thus allowing remote hosts to connect to forwarded ports.
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++.It Cm GlobalKnownHostsFile
++Specifies one or more files to use for the global
++host key database, separated by whitespace.
++The default is
++.Pa /etc/ssh/ssh_known_hosts ,
++.Pa /etc/ssh/ssh_known_hosts2 .
++.It Cm GSSAPIAuthentication
++Specifies whether user authentication based on GSSAPI is allowed.
++The default is
++.Dq no .
++Note that this option applies to protocol version 2 only.
++.It Cm GSSAPIDelegateCredentials
++Forward (delegate) credentials to the server.
++The default is
++.Dq no .
++Note that this option applies to protocol version 2 only.
++.It Cm HashKnownHosts
++Indicates that
++.Xr ssh 1
++should hash host names and addresses when they are added to
++.Pa ~/.ssh/known_hosts .
++These hashed names may be used normally by
++.Xr ssh 1
++and
++.Xr sshd 1M ,
++but they do not reveal identifying information should the file's contents
++be disclosed.
++The default is
++.Dq no .
++Note that existing names and addresses in known hosts files
++will not be converted automatically,
++but may be manually hashed using
++.Xr ssh-keygen 1 .
++.It Cm HostbasedAuthentication
++Specifies whether to try rhosts based authentication with public key
++authentication.
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++This option applies to protocol version 2 only and
++is similar to
++.Cm RhostsRSAAuthentication .
++.It Cm HostbasedKeyTypes
++Specifies the key types that will be used for hostbased authentication
++as a comma-separated pattern list.
++Alternately if the specified value begins with a
++.Sq +
++character, then the specified key types will be appended to the default set
++instead of replacing them.
++The default for this option is:
++.Bd -literal -offset 3n
++ecdsa-sha2-nistp256-cert-v01@openssh.com,
++ecdsa-sha2-nistp384-cert-v01@openssh.com,
++ecdsa-sha2-nistp521-cert-v01@openssh.com,
++ssh-ed25519-cert-v01@openssh.com,
++ssh-rsa-cert-v01@openssh.com,
++ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
++ssh-ed25519,ssh-rsa
++.Ed
++.Pp
++The
++.Fl Q
++option of
++.Xr ssh 1
++may be used to list supported key types.
++.It Cm HostKeyAlgorithms
++Specifies the protocol version 2 host key algorithms
++that the client wants to use in order of preference.
++Alternately if the specified value begins with a
++.Sq +
++character, then the specified key types will be appended to the default set
++instead of replacing them.
++The default for this option is:
++.Bd -literal -offset 3n
++ecdsa-sha2-nistp256-cert-v01@openssh.com,
++ecdsa-sha2-nistp384-cert-v01@openssh.com,
++ecdsa-sha2-nistp521-cert-v01@openssh.com,
++ssh-ed25519-cert-v01@openssh.com,
++ssh-rsa-cert-v01@openssh.com,
++ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
++ssh-ed25519,ssh-rsa
++.Ed
++.Pp
++If hostkeys are known for the destination host then this default is modified
++to prefer their algorithms.
++.Pp
++The list of available key types may also be obtained using the
++.Fl Q
++option of
++.Xr ssh 1
++with an argument of
++.Dq key .
++.It Cm HostKeyAlias
++Specifies an alias that should be used instead of the
++real host name when looking up or saving the host key
++in the host key database files.
++This option is useful for tunneling SSH connections
++or for multiple servers running on a single host.
++.It Cm HostName
++Specifies the real host name to log into.
++This can be used to specify nicknames or abbreviations for hosts.
++If the hostname contains the character sequence
++.Ql %h ,
++then this will be replaced with the host name specified on the command line
++(this is useful for manipulating unqualified names).
++The character sequence
++.Ql %%
++will be replaced by a single
++.Ql %
++character, which may be used when specifying IPv6 link-local addresses.
++.Pp
++The default is the name given on the command line.
++Numeric IP addresses are also permitted (both on the command line and in
++.Cm HostName
++specifications).
++.It Cm IdentitiesOnly
++Specifies that
++.Xr ssh 1
++should only use the authentication identity files configured in the
++.Nm
++files,
++even if
++.Xr ssh-agent 1
++or a
++.Cm PKCS11Provider
++offers more identities.
++The argument to this keyword must be
++.Dq yes
++or
++.Dq no .
++This option is intended for situations where ssh-agent
++offers many different identities.
++The default is
++.Dq no .
++.It Cm IdentityFile
++Specifies a file from which the user's DSA, ECDSA, Ed25519 or RSA authentication
++identity is read.
++The default is
++.Pa ~/.ssh/identity
++for protocol version 1, and
++.Pa ~/.ssh/id_dsa ,
++.Pa ~/.ssh/id_ecdsa ,
++.Pa ~/.ssh/id_ed25519
++and
++.Pa ~/.ssh/id_rsa
++for protocol version 2.
++Additionally, any identities represented by the authentication agent
++will be used for authentication unless
++.Cm IdentitiesOnly
++is set.
++.Xr ssh 1
++will try to load certificate information from the filename obtained by
++appending
++.Pa -cert.pub
++to the path of a specified
++.Cm IdentityFile .
++.Pp
++The file name may use the tilde
++syntax to refer to a user's home directory or one of the following
++escape characters:
++.Ql %d
++(local user's home directory),
++.Ql %u
++(local user name),
++.Ql %l
++(local host name),
++.Ql %h
++(remote host name) or
++.Ql %r
++(remote user name).
++.Pp
++It is possible to have
++multiple identity files specified in configuration files; all these
++identities will be tried in sequence.
++Multiple
++.Cm IdentityFile
++directives will add to the list of identities tried (this behaviour
++differs from that of other configuration directives).
++.Pp
++.Cm IdentityFile
++may be used in conjunction with
++.Cm IdentitiesOnly
++to select which identities in an agent are offered during authentication.
++.It Cm IgnoreUnknown
++Specifies a pattern-list of unknown options to be ignored if they are
++encountered in configuration parsing.
++This may be used to suppress errors if
++.Nm
++contains options that are unrecognised by
++.Xr ssh 1 .
++It is recommended that
++.Cm IgnoreUnknown
++be listed early in the configuration file as it will not be applied
++to unknown options that appear before it.
++.It Cm IPQoS
++Specifies the IPv4 type-of-service or DSCP class for connections.
++Accepted values are
++.Dq af11 ,
++.Dq af12 ,
++.Dq af13 ,
++.Dq af21 ,
++.Dq af22 ,
++.Dq af23 ,
++.Dq af31 ,
++.Dq af32 ,
++.Dq af33 ,
++.Dq af41 ,
++.Dq af42 ,
++.Dq af43 ,
++.Dq cs0 ,
++.Dq cs1 ,
++.Dq cs2 ,
++.Dq cs3 ,
++.Dq cs4 ,
++.Dq cs5 ,
++.Dq cs6 ,
++.Dq cs7 ,
++.Dq ef ,
++.Dq lowdelay ,
++.Dq throughput ,
++.Dq reliability ,
++or a numeric value.
++This option may take one or two arguments, separated by whitespace.
++If one argument is specified, it is used as the packet class unconditionally.
++If two values are specified, the first is automatically selected for
++interactive sessions and the second for non-interactive sessions.
++The default is
++.Dq lowdelay
++for interactive sessions and
++.Dq throughput
++for non-interactive sessions.
++.It Cm KbdInteractiveAuthentication
++Specifies whether to use keyboard-interactive authentication.
++The argument to this keyword must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq yes .
++.It Cm KbdInteractiveDevices
++Specifies the list of methods to use in keyboard-interactive authentication.
++Multiple method names must be comma-separated.
++The default is to use the server specified list.
++The methods available vary depending on what the server supports.
++For an OpenSSH server,
++it may be zero or more of:
++.Dq bsdauth ,
++.Dq pam ,
++and
++.Dq skey .
++.It Cm KexAlgorithms
++Specifies the available KEX (Key Exchange) algorithms.
++Multiple algorithms must be comma-separated.
++Alternately if the specified value begins with a
++.Sq +
++character, then the specified methods will be appended to the default set
++instead of replacing them.
++The default is:
++.Bd -literal -offset indent
++curve25519-sha256@libssh.org,
++ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
++diffie-hellman-group-exchange-sha256,
++diffie-hellman-group-exchange-sha1,
++diffie-hellman-group14-sha1
++.Ed
++.Pp
++The list of available key exchange algorithms may also be obtained using the
++.Fl Q
++option of
++.Xr ssh 1
++with an argument of
++.Dq kex .
++.It Cm LocalCommand
++Specifies a command to execute on the local machine after successfully
++connecting to the server.
++The command string extends to the end of the line, and is executed with
++the user's shell.
++The following escape character substitutions will be performed:
++.Ql %d
++(local user's home directory),
++.Ql %h
++(remote host name),
++.Ql %l
++(local host name),
++.Ql %n
++(host name as provided on the command line),
++.Ql %p
++(remote port),
++.Ql %r
++(remote user name) or
++.Ql %u
++(local user name) or
++.Ql \&%C
++by a hash of the concatenation: %l%h%p%r.
++.Pp
++The command is run synchronously and does not have access to the
++session of the
++.Xr ssh 1
++that spawned it.
++It should not be used for interactive commands.
++.Pp
++This directive is ignored unless
++.Cm PermitLocalCommand
++has been enabled.
++.It Cm LocalForward
++Specifies that a TCP port on the local machine be forwarded over
++the secure channel to the specified host and port from the remote machine.
++The first argument must be
++.Sm off
++.Oo Ar bind_address : Oc Ar port
++.Sm on
++and the second argument must be
++.Ar host : Ns Ar hostport .
++IPv6 addresses can be specified by enclosing addresses in square brackets.
++Multiple forwardings may be specified, and additional forwardings can be
++given on the command line.
++Only the superuser can forward privileged ports.
++By default, the local port is bound in accordance with the
++.Cm GatewayPorts
++setting.
++However, an explicit
++.Ar bind_address
++may be used to bind the connection to a specific address.
++The
++.Ar bind_address
++of
++.Dq localhost
++indicates that the listening port be bound for local use only, while an
++empty address or
++.Sq *
++indicates that the port should be available from all interfaces.
++.It Cm LogLevel
++Gives the verbosity level that is used when logging messages from
++.Xr ssh 1 .
++The possible values are:
++QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3.
++The default is INFO.
++DEBUG and DEBUG1 are equivalent.
++DEBUG2 and DEBUG3 each specify higher levels of verbose output.
++.It Cm MACs
++Specifies the MAC (message authentication code) algorithms
++in order of preference.
++The MAC algorithm is used in protocol version 2
++for data integrity protection.
++Multiple algorithms must be comma-separated.
++If the specified value begins with a
++.Sq +
++character, then the specified algorithms will be appended to the default set
++instead of replacing them.
++.Pp
++The algorithms that contain
++.Dq -etm
++calculate the MAC after encryption (encrypt-then-mac).
++These are considered safer and their use recommended.
++.Pp
++The default is:
++.Bd -literal -offset indent
++umac-64-etm@openssh.com,umac-128-etm@openssh.com,
++hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,
++umac-64@openssh.com,umac-128@openssh.com,
++hmac-sha2-256,hmac-sha2-512,
++hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,
++hmac-ripemd160-etm@openssh.com,
++hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,
++hmac-md5,hmac-sha1,hmac-ripemd160,
++hmac-sha1-96,hmac-md5-96
++.Ed
++.Pp
++The list of available MAC algorithms may also be obtained using the
++.Fl Q
++option of
++.Xr ssh 1
++with an argument of
++.Dq mac .
++.It Cm NoHostAuthenticationForLocalhost
++This option can be used if the home directory is shared across machines.
++In this case localhost will refer to a different machine on each of
++the machines and the user will get many warnings about changed host keys.
++However, this option disables host authentication for localhost.
++The argument to this keyword must be
++.Dq yes
++or
++.Dq no .
++The default is to check the host key for localhost.
++.It Cm NumberOfPasswordPrompts
++Specifies the number of password prompts before giving up.
++The argument to this keyword must be an integer.
++The default is 3.
++.It Cm PasswordAuthentication
++Specifies whether to use password authentication.
++The argument to this keyword must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq yes .
++.It Cm PermitLocalCommand
++Allow local command execution via the
++.Ic LocalCommand
++option or using the
++.Ic !\& Ns Ar command
++escape sequence in
++.Xr ssh 1 .
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++.It Cm PKCS11Provider
++Specifies which PKCS#11 provider to use.
++The argument to this keyword is the PKCS#11 shared library
++.Xr ssh 1
++should use to communicate with a PKCS#11 token providing the user's
++private RSA key.
++.It Cm Port
++Specifies the port number to connect on the remote host.
++The default is 22.
++.It Cm PreferredAuthentications
++Specifies the order in which the client should try protocol 2
++authentication methods.
++This allows a client to prefer one method (e.g.\&
++.Cm keyboard-interactive )
++over another method (e.g.\&
++.Cm password ) .
++The default is:
++.Bd -literal -offset indent
++gssapi-with-mic,hostbased,publickey,
++keyboard-interactive,password
++.Ed
++.It Cm Protocol
++Specifies the protocol versions
++.Xr ssh 1
++should support in order of preference.
++The possible values are
++.Sq 1
++and
++.Sq 2 .
++Multiple versions must be comma-separated.
++When this option is set to
++.Dq 2,1
++.Nm ssh
++will try version 2 and fall back to version 1
++if version 2 is not available.
++The default is
++.Sq 2 .
++.It Cm ProxyCommand
++Specifies the command to use to connect to the server.
++The command
++string extends to the end of the line, and is executed
++using the user's shell
++.Ql exec
++directive to avoid a lingering shell process.
++.Pp
++In the command string, any occurrence of
++.Ql %h
++will be substituted by the host name to
++connect,
++.Ql %p
++by the port, and
++.Ql %r
++by the remote user name.
++The command can be basically anything,
++and should read from its standard input and write to its standard output.
++It should eventually connect an
++.Xr sshd 8
++server running on some machine, or execute
++.Ic sshd -i
++somewhere.
++Host key management will be done using the
++HostName of the host being connected (defaulting to the name typed by
++the user).
++Setting the command to
++.Dq none
++disables this option entirely.
++Note that
++.Cm CheckHostIP
++is not available for connects with a proxy command.
++.Pp
++This directive is useful in conjunction with
++.Xr nc 1
++and its proxy support.
++For example, the following directive would connect via an HTTP proxy at
++192.0.2.0:
++.Bd -literal -offset 3n
++ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p
++.Ed
++.It Cm ProxyUseFdpass
++Specifies that
++.Cm ProxyCommand
++will pass a connected file descriptor back to
++.Xr ssh 1
++instead of continuing to execute and pass data.
++The default is
++.Dq no .
++.It Cm PubkeyAcceptedKeyTypes
++Specifies the key types that will be used for public key authentication
++as a comma-separated pattern list.
++Alternately if the specified value begins with a
++.Sq +
++character, then the key types after it will be appended to the default
++instead of replacing it.
++The default for this option is:
++.Bd -literal -offset 3n
++ecdsa-sha2-nistp256-cert-v01@openssh.com,
++ecdsa-sha2-nistp384-cert-v01@openssh.com,
++ecdsa-sha2-nistp521-cert-v01@openssh.com,
++ssh-ed25519-cert-v01@openssh.com,
++ssh-rsa-cert-v01@openssh.com,
++ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
++ssh-ed25519,ssh-rsa
++.Ed
++.Pp
++The
++.Fl Q
++option of
++.Xr ssh 1
++may be used to list supported key types.
++.It Cm PubkeyAuthentication
++Specifies whether to try public key authentication.
++The argument to this keyword must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq yes .
++This option applies to protocol version 2 only.
++.It Cm RekeyLimit
++Specifies the maximum amount of data that may be transmitted before the
++session key is renegotiated, optionally followed a maximum amount of
++time that may pass before the session key is renegotiated.
++The first argument is specified in bytes and may have a suffix of
++.Sq K ,
++.Sq M ,
++or
++.Sq G
++to indicate Kilobytes, Megabytes, or Gigabytes, respectively.
++The default is between
++.Sq 1G
++and
++.Sq 4G ,
++depending on the cipher.
++The optional second value is specified in seconds and may use any of the
++units documented in the
++TIME FORMATS section of
++.Xr sshd_config 4 .
++The default value for
++.Cm RekeyLimit
++is
++.Dq default none ,
++which means that rekeying is performed after the cipher's default amount
++of data has been sent or received and no time based rekeying is done.
++This option applies to protocol version 2 only.
++.It Cm RemoteForward
++Specifies that a TCP port on the remote machine be forwarded over
++the secure channel to the specified host and port from the local machine.
++The first argument must be
++.Sm off
++.Oo Ar bind_address : Oc Ar port
++.Sm on
++and the second argument must be
++.Ar host : Ns Ar hostport .
++IPv6 addresses can be specified by enclosing addresses in square brackets.
++Multiple forwardings may be specified, and additional
++forwardings can be given on the command line.
++Privileged ports can be forwarded only when
++logging in as root on the remote machine.
++.Pp
++If the
++.Ar port
++argument is
++.Ql 0 ,
++the listen port will be dynamically allocated on the server and reported
++to the client at run time.
++.Pp
++If the
++.Ar bind_address
++is not specified, the default is to only bind to loopback addresses.
++If the
++.Ar bind_address
++is
++.Ql *
++or an empty string, then the forwarding is requested to listen on all
++interfaces.
++Specifying a remote
++.Ar bind_address
++will only succeed if the server's
++.Cm GatewayPorts
++option is enabled (see
++.Xr sshd_config 4 ) .
++.It Cm RequestTTY
++Specifies whether to request a pseudo-tty for the session.
++The argument may be one of:
++.Dq no
++(never request a TTY),
++.Dq yes
++(always request a TTY when standard input is a TTY),
++.Dq force
++(always request a TTY) or
++.Dq auto
++(request a TTY when opening a login session).
++This option mirrors the
++.Fl t
++and
++.Fl T
++flags for
++.Xr ssh 1 .
++.It Cm RevokedHostKeys
++Specifies revoked host public keys.
++Keys listed in this file will be refused for host authentication.
++Note that if this file does not exist or is not readable,
++then host authentication will be refused for all hosts.
++Keys may be specified as a text file, listing one public key per line, or as
++an OpenSSH Key Revocation List (KRL) as generated by
++.Xr ssh-keygen 1 .
++For more information on KRLs, see the KEY REVOCATION LISTS section in
++.Xr ssh-keygen 1 .
++.It Cm RhostsRSAAuthentication
++Specifies whether to try rhosts based authentication with RSA host
++authentication.
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++This option applies to protocol version 1 only and requires
++.Xr ssh 1
++to be setuid root.
++.It Cm RSAAuthentication
++Specifies whether to try RSA authentication.
++The argument to this keyword must be
++.Dq yes
++or
++.Dq no .
++RSA authentication will only be
++attempted if the identity file exists, or an authentication agent is
++running.
++The default is
++.Dq yes .
++Note that this option applies to protocol version 1 only.
++.It Cm SendEnv
++Specifies what variables from the local
++.Xr environ 7
++should be sent to the server.
++Note that environment passing is only supported for protocol 2.
++The server must also support it, and the server must be configured to
++accept these environment variables.
++Note that the
++.Ev TERM
++environment variable is always sent whenever a
++pseudo-terminal is requested as it is required by the protocol.
++Refer to
++.Cm AcceptEnv
++in
++.Xr sshd_config 4
++for how to configure the server.
++Variables are specified by name, which may contain wildcard characters.
++Multiple environment variables may be separated by whitespace or spread
++across multiple
++.Cm SendEnv
++directives.
++The default is not to send any environment variables.
++.Pp
++See
++.Sx PATTERNS
++for more information on patterns.
++.It Cm ServerAliveCountMax
++Sets the number of server alive messages (see below) which may be
++sent without
++.Xr ssh 1
++receiving any messages back from the server.
++If this threshold is reached while server alive messages are being sent,
++ssh will disconnect from the server, terminating the session.
++It is important to note that the use of server alive messages is very
++different from
++.Cm TCPKeepAlive
++(below).
++The server alive messages are sent through the encrypted channel
++and therefore will not be spoofable.
++The TCP keepalive option enabled by
++.Cm TCPKeepAlive
++is spoofable.
++The server alive mechanism is valuable when the client or
++server depend on knowing when a connection has become inactive.
++.Pp
++The default value is 3.
++If, for example,
++.Cm ServerAliveInterval
++(see below) is set to 15 and
++.Cm ServerAliveCountMax
++is left at the default, if the server becomes unresponsive,
++ssh will disconnect after approximately 45 seconds.
++This option applies to protocol version 2 only.
++.It Cm ServerAliveInterval
++Sets a timeout interval in seconds after which if no data has been received
++from the server,
++.Xr ssh 1
++will send a message through the encrypted
++channel to request a response from the server.
++The default
++is 0, indicating that these messages will not be sent to the server.
++This option applies to protocol version 2 only.
++.It Cm StreamLocalBindMask
++Sets the octal file creation mode mask
++.Pq umask
++used when creating a Unix-domain socket file for local or remote
++port forwarding.
++This option is only used for port forwarding to a Unix-domain socket file.
++.Pp
++The default value is 0177, which creates a Unix-domain socket file that is
++readable and writable only by the owner.
++Note that not all operating systems honor the file mode on Unix-domain
++socket files.
++.It Cm StreamLocalBindUnlink
++Specifies whether to remove an existing Unix-domain socket file for local
++or remote port forwarding before creating a new one.
++If the socket file already exists and
++.Cm StreamLocalBindUnlink
++is not enabled,
++.Nm ssh
++will be unable to forward the port to the Unix-domain socket file.
++This option is only used for port forwarding to a Unix-domain socket file.
++.Pp
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++.It Cm StrictHostKeyChecking
++If this flag is set to
++.Dq yes ,
++.Xr ssh 1
++will never automatically add host keys to the
++.Pa ~/.ssh/known_hosts
++file, and refuses to connect to hosts whose host key has changed.
++This provides maximum protection against trojan horse attacks,
++though it can be annoying when the
++.Pa /etc/ssh/ssh_known_hosts
++file is poorly maintained or when connections to new hosts are
++frequently made.
++This option forces the user to manually
++add all new hosts.
++If this flag is set to
++.Dq no ,
++ssh will automatically add new host keys to the
++user known hosts files.
++If this flag is set to
++.Dq ask ,
++new host keys
++will be added to the user known host files only after the user
++has confirmed that is what they really want to do, and
++ssh will refuse to connect to hosts whose host key has changed.
++The host keys of
++known hosts will be verified automatically in all cases.
++The argument must be
++.Dq yes ,
++.Dq no ,
++or
++.Dq ask .
++The default is
++.Dq ask .
++.It Cm TCPKeepAlive
++Specifies whether the system should send TCP keepalive messages to the
++other side.
++If they are sent, death of the connection or crash of one
++of the machines will be properly noticed.
++However, this means that
++connections will die if the route is down temporarily, and some people
++find it annoying.
++.Pp
++The default is
++.Dq yes
++(to send TCP keepalive messages), and the client will notice
++if the network goes down or the remote host dies.
++This is important in scripts, and many users want it too.
++.Pp
++To disable TCP keepalive messages, the value should be set to
++.Dq no .
++.It Cm Tunnel
++Request
++.Xr tun 4
++device forwarding between the client and the server.
++The argument must be
++.Dq yes ,
++.Dq point-to-point
++(layer 3),
++.Dq ethernet
++(layer 2),
++or
++.Dq no .
++Specifying
++.Dq yes
++requests the default tunnel mode, which is
++.Dq point-to-point .
++The default is
++.Dq no .
++.It Cm TunnelDevice
++Specifies the
++.Xr tun 4
++devices to open on the client
++.Pq Ar local_tun
++and the server
++.Pq Ar remote_tun .
++.Pp
++The argument must be
++.Sm off
++.Ar local_tun Op : Ar remote_tun .
++.Sm on
++The devices may be specified by numerical ID or the keyword
++.Dq any ,
++which uses the next available tunnel device.
++If
++.Ar remote_tun
++is not specified, it defaults to
++.Dq any .
++The default is
++.Dq any:any .
++.It Cm UpdateHostKeys
++Specifies whether
++.Xr ssh 1
++should accept notifications of additional hostkeys from the server sent
++after authentication has completed and add them to
++.Cm UserKnownHostsFile .
++The argument must be
++.Dq yes ,
++.Dq no
++(the default) or
++.Dq ask .
++Enabling this option allows learning alternate hostkeys for a server
++and supports graceful key rotation by allowing a server to send replacement
++public keys before old ones are removed.
++Additional hostkeys are only accepted if the key used to authenticate the
++host was already trusted or explicity accepted by the user.
++If
++.Cm UpdateHostKeys
++is set to
++.Dq ask ,
++then the user is asked to confirm the modifications to the known_hosts file.
++Confirmation is currently incompatible with
++.Cm ControlPersist ,
++and will be disabled if it is enabled.
++.Pp
++Presently, only
++.Xr sshd 8
++from OpenSSH 6.8 and greater support the
++.Dq hostkeys@openssh.com
++protocol extension used to inform the client of all the server's hostkeys.
++.It Cm UsePrivilegedPort
++Specifies whether to use a privileged port for outgoing connections.
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++If set to
++.Dq yes ,
++.Xr ssh 1
++must be setuid root.
++Note that this option must be set to
++.Dq yes
++for
++.Cm RhostsRSAAuthentication
++with older servers.
++.It Cm User
++Specifies the user to log in as.
++This can be useful when a different user name is used on different machines.
++This saves the trouble of
++having to remember to give the user name on the command line.
++.It Cm UserKnownHostsFile
++Specifies one or more files to use for the user
++host key database, separated by whitespace.
++The default is
++.Pa ~/.ssh/known_hosts ,
++.Pa ~/.ssh/known_hosts2 .
++.It Cm VerifyHostKeyDNS
++Specifies whether to verify the remote key using DNS and SSHFP resource
++records.
++If this option is set to
++.Dq yes ,
++the client will implicitly trust keys that match a secure fingerprint
++from DNS.
++Insecure fingerprints will be handled as if this option was set to
++.Dq ask .
++If this option is set to
++.Dq ask ,
++information on fingerprint match will be displayed, but the user will still
++need to confirm new host keys according to the
++.Cm StrictHostKeyChecking
++option.
++The argument must be
++.Dq yes ,
++.Dq no ,
++or
++.Dq ask .
++The default is
++.Dq no .
++Note that this option applies to protocol version 2 only.
++.Pp
++See also VERIFYING HOST KEYS in
++.Xr ssh 1 .
++.It Cm VisualHostKey
++If this flag is set to
++.Dq yes ,
++an ASCII art representation of the remote host key fingerprint is
++printed in addition to the fingerprint string at login and
++for unknown host keys.
++If this flag is set to
++.Dq no ,
++no fingerprint strings are printed at login and
++only the fingerprint string will be printed for unknown host keys.
++The default is
++.Dq no .
++.It Cm XAuthLocation
++Specifies the full pathname of the
++.Xr xauth 1
++program.
++The default is
++.Pa /usr/X11R6/bin/xauth .
++.El
++.Sh PATTERNS
++A
++.Em pattern
++consists of zero or more non-whitespace characters,
++.Sq *
++(a wildcard that matches zero or more characters),
++or
++.Sq ?\&
++(a wildcard that matches exactly one character).
++For example, to specify a set of declarations for any host in the
++.Dq .co.uk
++set of domains,
++the following pattern could be used:
++.Pp
++.Dl Host *.co.uk
++.Pp
++The following pattern
++would match any host in the 192.168.0.[0-9] network range:
++.Pp
++.Dl Host 192.168.0.?
++.Pp
++A
++.Em pattern-list
++is a comma-separated list of patterns.
++Patterns within pattern-lists may be negated
++by preceding them with an exclamation mark
++.Pq Sq !\& .
++For example,
++to allow a key to be used from anywhere within an organization
++except from the
++.Dq dialup
++pool,
++the following entry (in authorized_keys) could be used:
++.Pp
++.Dl from=\&"!*.dialup.example.com,*.example.com\&"
++.Sh FILES
++.Bl -tag -width Ds
++.It Pa ~/.ssh/config
++This is the per-user configuration file.
++The format of this file is described above.
++This file is used by the SSH client.
++Because of the potential for abuse, this file must have strict permissions:
++read/write for the user, and not accessible by others.
++.It Pa /etc/ssh/ssh_config
++Systemwide configuration file.
++This file provides defaults for those
++values that are not specified in the user's configuration file, and
++for those users who do not have a configuration file.
++This file must be world-readable.
++.El
++.Sh SEE ALSO
++.Xr ssh 1
++.Sh AUTHORS
++OpenSSH is a derivative of the original and free
++ssh 1.2.12 release by Tatu Ylonen.
++Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
++Theo de Raadt and Dug Song
++removed many bugs, re-added newer features and
++created OpenSSH.
++Markus Friedl contributed the support for SSH
++protocol versions 1.5 and 2.0.
+diff --git a/ssh_config.5 b/ssh_config.5
+deleted file mode 100644
+index a47f3ca..0000000
+--- a/ssh_config.5
++++ /dev/null
+@@ -1,1726 +0,0 @@
+-.\"
+-.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
+-.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
+-.\"                    All rights reserved
+-.\"
+-.\" As far as I am concerned, the code I have written for this software
+-.\" can be used freely for any purpose.  Any derived versions of this
+-.\" software must be clearly marked as such, and if the derived work is
+-.\" incompatible with the protocol description in the RFC file, it must be
+-.\" called by a name other than "ssh" or "Secure Shell".
+-.\"
+-.\" Copyright (c) 1999,2000 Markus Friedl.  All rights reserved.
+-.\" Copyright (c) 1999 Aaron Campbell.  All rights reserved.
+-.\" Copyright (c) 1999 Theo de Raadt.  All rights reserved.
+-.\"
+-.\" Redistribution and use in source and binary forms, with or without
+-.\" modification, are permitted provided that the following conditions
+-.\" are met:
+-.\" 1. Redistributions of source code must retain the above copyright
+-.\"    notice, this list of conditions and the following disclaimer.
+-.\" 2. Redistributions in binary form must reproduce the above copyright
+-.\"    notice, this list of conditions and the following disclaimer in the
+-.\"    documentation and/or other materials provided with the distribution.
+-.\"
+-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+-.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+-.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+-.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+-.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+-.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+-.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+-.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+-.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-.\"
+-.\" $OpenBSD: ssh_config.5,v 1.215 2015/08/14 15:32:41 jmc Exp $
+-.Dd $Mdocdate: August 14 2015 $
+-.Dt SSH_CONFIG 5
+-.Os
+-.Sh NAME
+-.Nm ssh_config
+-.Nd OpenSSH SSH client configuration files
+-.Sh SYNOPSIS
+-.Nm ~/.ssh/config
+-.Nm /etc/ssh/ssh_config
+-.Sh DESCRIPTION
+-.Xr ssh 1
+-obtains configuration data from the following sources in
+-the following order:
+-.Pp
+-.Bl -enum -offset indent -compact
+-.It
+-command-line options
+-.It
+-user's configuration file
+-.Pq Pa ~/.ssh/config
+-.It
+-system-wide configuration file
+-.Pq Pa /etc/ssh/ssh_config
+-.El
+-.Pp
+-For each parameter, the first obtained value
+-will be used.
+-The configuration files contain sections separated by
+-.Dq Host
+-specifications, and that section is only applied for hosts that
+-match one of the patterns given in the specification.
+-The matched host name is usually the one given on the command line
+-(see the
+-.Cm CanonicalizeHostname
+-option for exceptions.)
+-.Pp
+-Since the first obtained value for each parameter is used, more
+-host-specific declarations should be given near the beginning of the
+-file, and general defaults at the end.
+-.Pp
+-The configuration file has the following format:
+-.Pp
+-Empty lines and lines starting with
+-.Ql #
+-are comments.
+-Otherwise a line is of the format
+-.Dq keyword arguments .
+-Configuration options may be separated by whitespace or
+-optional whitespace and exactly one
+-.Ql = ;
+-the latter format is useful to avoid the need to quote whitespace
+-when specifying configuration options using the
+-.Nm ssh ,
+-.Nm scp ,
+-and
+-.Nm sftp
+-.Fl o
+-option.
+-Arguments may optionally be enclosed in double quotes
+-.Pq \&"
+-in order to represent arguments containing spaces.
+-.Pp
+-The possible
+-keywords and their meanings are as follows (note that
+-keywords are case-insensitive and arguments are case-sensitive):
+-.Bl -tag -width Ds
+-.It Cm Host
+-Restricts the following declarations (up to the next
+-.Cm Host
+-or
+-.Cm Match
+-keyword) to be only for those hosts that match one of the patterns
+-given after the keyword.
+-If more than one pattern is provided, they should be separated by whitespace.
+-A single
+-.Ql *
+-as a pattern can be used to provide global
+-defaults for all hosts.
+-The host is usually the
+-.Ar hostname
+-argument given on the command line
+-(see the
+-.Cm CanonicalizeHostname
+-option for exceptions.)
+-.Pp
+-A pattern entry may be negated by prefixing it with an exclamation mark
+-.Pq Sq !\& .
+-If a negated entry is matched, then the
+-.Cm Host
+-entry is ignored, regardless of whether any other patterns on the line
+-match.
+-Negated matches are therefore useful to provide exceptions for wildcard
+-matches.
+-.Pp
+-See
+-.Sx PATTERNS
+-for more information on patterns.
+-.It Cm Match
+-Restricts the following declarations (up to the next
+-.Cm Host
+-or
+-.Cm Match
+-keyword) to be used only when the conditions following the
+-.Cm Match
+-keyword are satisfied.
+-Match conditions are specified using one or more critera
+-or the single token
+-.Cm all
+-which always matches.
+-The available criteria keywords are:
+-.Cm canonical ,
+-.Cm exec ,
+-.Cm host ,
+-.Cm originalhost ,
+-.Cm user ,
+-and
+-.Cm localuser .
+-The
+-.Cm all
+-criteria must appear alone or immediately after
+-.Cm canonical .
+-Other criteria may be combined arbitrarily.
+-All criteria but
+-.Cm all
+-and
+-.Cm canonical
+-require an argument.
+-Criteria may be negated by prepending an exclamation mark
+-.Pq Sq !\& .
+-.Pp
+-The
+-.Cm canonical
+-keyword matches only when the configuration file is being re-parsed
+-after hostname canonicalization (see the
+-.Cm CanonicalizeHostname
+-option.)
+-This may be useful to specify conditions that work with canonical host
+-names only.
+-The
+-.Cm exec
+-keyword executes the specified command under the user's shell.
+-If the command returns a zero exit status then the condition is considered true.
+-Commands containing whitespace characters must be quoted.
+-The following character sequences in the command will be expanded prior to
+-execution:
+-.Ql %L
+-will be substituted by the first component of the local host name,
+-.Ql %l
+-will be substituted by the local host name (including any domain name),
+-.Ql %h
+-will be substituted by the target host name,
+-.Ql %n
+-will be substituted by the original target host name
+-specified on the command-line,
+-.Ql %p
+-the destination port,
+-.Ql %r
+-by the remote login username, and
+-.Ql %u
+-by the username of the user running
+-.Xr ssh 1 .
+-.Pp
+-The other keywords' criteria must be single entries or comma-separated
+-lists and may use the wildcard and negation operators described in the
+-.Sx PATTERNS
+-section.
+-The criteria for the
+-.Cm host
+-keyword are matched against the target hostname, after any substitution
+-by the
+-.Cm Hostname
+-or
+-.Cm CanonicalizeHostname
+-options.
+-The
+-.Cm originalhost
+-keyword matches against the hostname as it was specified on the command-line.
+-The
+-.Cm user
+-keyword matches against the target username on the remote host.
+-The
+-.Cm localuser
+-keyword matches against the name of the local user running
+-.Xr ssh 1
+-(this keyword may be useful in system-wide
+-.Nm
+-files).
+-.It Cm AddressFamily
+-Specifies which address family to use when connecting.
+-Valid arguments are
+-.Dq any ,
+-.Dq inet
+-(use IPv4 only), or
+-.Dq inet6
+-(use IPv6 only).
+-.It Cm BatchMode
+-If set to
+-.Dq yes ,
+-passphrase/password querying will be disabled.
+-This option is useful in scripts and other batch jobs where no user
+-is present to supply the password.
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-.It Cm BindAddress
+-Use the specified address on the local machine as the source address of
+-the connection.
+-Only useful on systems with more than one address.
+-Note that this option does not work if
+-.Cm UsePrivilegedPort
+-is set to
+-.Dq yes .
+-.It Cm CanonicalDomains
+-When
+-.Cm CanonicalizeHostname
+-is enabled, this option specifies the list of domain suffixes in which to
+-search for the specified destination host.
+-.It Cm CanonicalizeFallbackLocal
+-Specifies whether to fail with an error when hostname canonicalization fails.
+-The default,
+-.Dq yes ,
+-will attempt to look up the unqualified hostname using the system resolver's
+-search rules.
+-A value of
+-.Dq no
+-will cause
+-.Xr ssh 1
+-to fail instantly if
+-.Cm CanonicalizeHostname
+-is enabled and the target hostname cannot be found in any of the domains
+-specified by
+-.Cm CanonicalDomains .
+-.It Cm CanonicalizeHostname
+-Controls whether explicit hostname canonicalization is performed.
+-The default,
+-.Dq no ,
+-is not to perform any name rewriting and let the system resolver handle all
+-hostname lookups.
+-If set to
+-.Dq yes
+-then, for connections that do not use a
+-.Cm ProxyCommand ,
+-.Xr ssh 1
+-will attempt to canonicalize the hostname specified on the command line
+-using the
+-.Cm CanonicalDomains
+-suffixes and
+-.Cm CanonicalizePermittedCNAMEs
+-rules.
+-If
+-.Cm CanonicalizeHostname
+-is set to
+-.Dq always ,
+-then canonicalization is applied to proxied connections too.
+-.Pp
+-If this option is enabled, then the configuration files are processed
+-again using the new target name to pick up any new configuration in matching
+-.Cm Host
+-and
+-.Cm Match
+-stanzas.
+-.It Cm CanonicalizeMaxDots
+-Specifies the maximum number of dot characters in a hostname before
+-canonicalization is disabled.
+-The default,
+-.Dq 1 ,
+-allows a single dot (i.e. hostname.subdomain).
+-.It Cm CanonicalizePermittedCNAMEs
+-Specifies rules to determine whether CNAMEs should be followed when
+-canonicalizing hostnames.
+-The rules consist of one or more arguments of
+-.Ar source_domain_list : Ns Ar target_domain_list ,
+-where
+-.Ar source_domain_list
+-is a pattern-list of domains that may follow CNAMEs in canonicalization,
+-and
+-.Ar target_domain_list
+-is a pattern-list of domains that they may resolve to.
+-.Pp
+-For example,
+-.Dq *.a.example.com:*.b.example.com,*.c.example.com
+-will allow hostnames matching
+-.Dq *.a.example.com
+-to be canonicalized to names in the
+-.Dq *.b.example.com
+-or
+-.Dq *.c.example.com
+-domains.
+-.It Cm ChallengeResponseAuthentication
+-Specifies whether to use challenge-response authentication.
+-The argument to this keyword must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq yes .
+-.It Cm CheckHostIP
+-If this flag is set to
+-.Dq yes ,
+-.Xr ssh 1
+-will additionally check the host IP address in the
+-.Pa known_hosts
+-file.
+-This allows ssh to detect if a host key changed due to DNS spoofing
+-and will add addresses of destination hosts to
+-.Pa ~/.ssh/known_hosts
+-in the process, regardless of the setting of
+-.Cm StrictHostKeyChecking .
+-If the option is set to
+-.Dq no ,
+-the check will not be executed.
+-The default is
+-.Dq yes .
+-.It Cm Cipher
+-Specifies the cipher to use for encrypting the session
+-in protocol version 1.
+-Currently,
+-.Dq blowfish ,
+-.Dq 3des ,
+-and
+-.Dq des
+-are supported.
+-.Ar des
+-is only supported in the
+-.Xr ssh 1
+-client for interoperability with legacy protocol 1 implementations
+-that do not support the
+-.Ar 3des
+-cipher.
+-Its use is strongly discouraged due to cryptographic weaknesses.
+-The default is
+-.Dq 3des .
+-.It Cm Ciphers
+-Specifies the ciphers allowed for protocol version 2
+-in order of preference.
+-Multiple ciphers must be comma-separated.
+-If the specified value begins with a
+-.Sq +
+-character, then the specified ciphers will be appended to the default set
+-instead of replacing them.
+-.Pp
+-The supported ciphers are:
+-.Pp
+-.Bl -item -compact -offset indent
+-.It
+-3des-cbc
+-.It
+-aes128-cbc
+-.It
+-aes192-cbc
+-.It
+-aes256-cbc
+-.It
+-aes128-ctr
+-.It
+-aes192-ctr
+-.It
+-aes256-ctr
+-.It
+-aes128-gcm@openssh.com
+-.It
+-aes256-gcm@openssh.com
+-.It
+-arcfour
+-.It
+-arcfour128
+-.It
+-arcfour256
+-.It
+-blowfish-cbc
+-.It
+-cast128-cbc
+-.It
+-chacha20-poly1305@openssh.com
+-.El
+-.Pp
+-The default is:
+-.Bd -literal -offset indent
+-chacha20-poly1305@openssh.com,
+-aes128-ctr,aes192-ctr,aes256-ctr,
+-aes128-gcm@openssh.com,aes256-gcm@openssh.com,
+-arcfour256,arcfour128,
+-aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,
+-aes192-cbc,aes256-cbc,arcfour
+-.Ed
+-.Pp
+-The list of available ciphers may also be obtained using the
+-.Fl Q
+-option of
+-.Xr ssh 1
+-with an argument of
+-.Dq cipher .
+-.It Cm ClearAllForwardings
+-Specifies that all local, remote, and dynamic port forwardings
+-specified in the configuration files or on the command line be
+-cleared.
+-This option is primarily useful when used from the
+-.Xr ssh 1
+-command line to clear port forwardings set in
+-configuration files, and is automatically set by
+-.Xr scp 1
+-and
+-.Xr sftp 1 .
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-.It Cm Compression
+-Specifies whether to use compression.
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-.It Cm CompressionLevel
+-Specifies the compression level to use if compression is enabled.
+-The argument must be an integer from 1 (fast) to 9 (slow, best).
+-The default level is 6, which is good for most applications.
+-The meaning of the values is the same as in
+-.Xr gzip 1 .
+-Note that this option applies to protocol version 1 only.
+-.It Cm ConnectionAttempts
+-Specifies the number of tries (one per second) to make before exiting.
+-The argument must be an integer.
+-This may be useful in scripts if the connection sometimes fails.
+-The default is 1.
+-.It Cm ConnectTimeout
+-Specifies the timeout (in seconds) used when connecting to the
+-SSH server, instead of using the default system TCP timeout.
+-This value is used only when the target is down or really unreachable,
+-not when it refuses the connection.
+-.It Cm ControlMaster
+-Enables the sharing of multiple sessions over a single network connection.
+-When set to
+-.Dq yes ,
+-.Xr ssh 1
+-will listen for connections on a control socket specified using the
+-.Cm ControlPath
+-argument.
+-Additional sessions can connect to this socket using the same
+-.Cm ControlPath
+-with
+-.Cm ControlMaster
+-set to
+-.Dq no
+-(the default).
+-These sessions will try to reuse the master instance's network connection
+-rather than initiating new ones, but will fall back to connecting normally
+-if the control socket does not exist, or is not listening.
+-.Pp
+-Setting this to
+-.Dq ask
+-will cause ssh
+-to listen for control connections, but require confirmation using
+-.Xr ssh-askpass 1 .
+-If the
+-.Cm ControlPath
+-cannot be opened,
+-ssh will continue without connecting to a master instance.
+-.Pp
+-X11 and
+-.Xr ssh-agent 1
+-forwarding is supported over these multiplexed connections, however the
+-display and agent forwarded will be the one belonging to the master
+-connection i.e. it is not possible to forward multiple displays or agents.
+-.Pp
+-Two additional options allow for opportunistic multiplexing: try to use a
+-master connection but fall back to creating a new one if one does not already
+-exist.
+-These options are:
+-.Dq auto
+-and
+-.Dq autoask .
+-The latter requires confirmation like the
+-.Dq ask
+-option.
+-.It Cm ControlPath
+-Specify the path to the control socket used for connection sharing as described
+-in the
+-.Cm ControlMaster
+-section above or the string
+-.Dq none
+-to disable connection sharing.
+-In the path,
+-.Ql %L
+-will be substituted by the first component of the local host name,
+-.Ql %l
+-will be substituted by the local host name (including any domain name),
+-.Ql %h
+-will be substituted by the target host name,
+-.Ql %n
+-will be substituted by the original target host name
+-specified on the command line,
+-.Ql %p
+-the destination port,
+-.Ql %r
+-by the remote login username,
+-.Ql %u
+-by the username of the user running
+-.Xr ssh 1 , and
+-.Ql \&%C
+-by a hash of the concatenation: %l%h%p%r.
+-It is recommended that any
+-.Cm ControlPath
+-used for opportunistic connection sharing include
+-at least %h, %p, and %r (or alternatively %C) and be placed in a directory
+-that is not writable by other users.
+-This ensures that shared connections are uniquely identified.
+-.It Cm ControlPersist
+-When used in conjunction with
+-.Cm ControlMaster ,
+-specifies that the master connection should remain open
+-in the background (waiting for future client connections)
+-after the initial client connection has been closed.
+-If set to
+-.Dq no ,
+-then the master connection will not be placed into the background,
+-and will close as soon as the initial client connection is closed.
+-If set to
+-.Dq yes
+-or
+-.Dq 0 ,
+-then the master connection will remain in the background indefinitely
+-(until killed or closed via a mechanism such as the
+-.Xr ssh 1
+-.Dq Fl O No exit
+-option).
+-If set to a time in seconds, or a time in any of the formats documented in
+-.Xr sshd_config 5 ,
+-then the backgrounded master connection will automatically terminate
+-after it has remained idle (with no client connections) for the
+-specified time.
+-.It Cm DynamicForward
+-Specifies that a TCP port on the local machine be forwarded
+-over the secure channel, and the application
+-protocol is then used to determine where to connect to from the
+-remote machine.
+-.Pp
+-The argument must be
+-.Sm off
+-.Oo Ar bind_address : Oc Ar port .
+-.Sm on
+-IPv6 addresses can be specified by enclosing addresses in square brackets.
+-By default, the local port is bound in accordance with the
+-.Cm GatewayPorts
+-setting.
+-However, an explicit
+-.Ar bind_address
+-may be used to bind the connection to a specific address.
+-The
+-.Ar bind_address
+-of
+-.Dq localhost
+-indicates that the listening port be bound for local use only, while an
+-empty address or
+-.Sq *
+-indicates that the port should be available from all interfaces.
+-.Pp
+-Currently the SOCKS4 and SOCKS5 protocols are supported, and
+-.Xr ssh 1
+-will act as a SOCKS server.
+-Multiple forwardings may be specified, and
+-additional forwardings can be given on the command line.
+-Only the superuser can forward privileged ports.
+-.It Cm EnableSSHKeysign
+-Setting this option to
+-.Dq yes
+-in the global client configuration file
+-.Pa /etc/ssh/ssh_config
+-enables the use of the helper program
+-.Xr ssh-keysign 8
+-during
+-.Cm HostbasedAuthentication .
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-This option should be placed in the non-hostspecific section.
+-See
+-.Xr ssh-keysign 8
+-for more information.
+-.It Cm EscapeChar
+-Sets the escape character (default:
+-.Ql ~ ) .
+-The escape character can also
+-be set on the command line.
+-The argument should be a single character,
+-.Ql ^
+-followed by a letter, or
+-.Dq none
+-to disable the escape
+-character entirely (making the connection transparent for binary
+-data).
+-.It Cm ExitOnForwardFailure
+-Specifies whether
+-.Xr ssh 1
+-should terminate the connection if it cannot set up all requested
+-dynamic, tunnel, local, and remote port forwardings.
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-.It Cm FingerprintHash
+-Specifies the hash algorithm used when displaying key fingerprints.
+-Valid options are:
+-.Dq md5
+-and
+-.Dq sha256 .
+-The default is
+-.Dq sha256 .
+-.It Cm ForwardAgent
+-Specifies whether the connection to the authentication agent (if any)
+-will be forwarded to the remote machine.
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-.Pp
+-Agent forwarding should be enabled with caution.
+-Users with the ability to bypass file permissions on the remote host
+-(for the agent's Unix-domain socket)
+-can access the local agent through the forwarded connection.
+-An attacker cannot obtain key material from the agent,
+-however they can perform operations on the keys that enable them to
+-authenticate using the identities loaded into the agent.
+-.It Cm ForwardX11
+-Specifies whether X11 connections will be automatically redirected
+-over the secure channel and
+-.Ev DISPLAY
+-set.
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-.Pp
+-X11 forwarding should be enabled with caution.
+-Users with the ability to bypass file permissions on the remote host
+-(for the user's X11 authorization database)
+-can access the local X11 display through the forwarded connection.
+-An attacker may then be able to perform activities such as keystroke monitoring
+-if the
+-.Cm ForwardX11Trusted
+-option is also enabled.
+-.It Cm ForwardX11Timeout
+-Specify a timeout for untrusted X11 forwarding
+-using the format described in the
+-TIME FORMATS section of
+-.Xr sshd_config 5 .
+-X11 connections received by
+-.Xr ssh 1
+-after this time will be refused.
+-The default is to disable untrusted X11 forwarding after twenty minutes has
+-elapsed.
+-.It Cm ForwardX11Trusted
+-If this option is set to
+-.Dq yes ,
+-remote X11 clients will have full access to the original X11 display.
+-.Pp
+-If this option is set to
+-.Dq no ,
+-remote X11 clients will be considered untrusted and prevented
+-from stealing or tampering with data belonging to trusted X11
+-clients.
+-Furthermore, the
+-.Xr xauth 1
+-token used for the session will be set to expire after 20 minutes.
+-Remote clients will be refused access after this time.
+-.Pp
+-The default is
+-.Dq no .
+-.Pp
+-See the X11 SECURITY extension specification for full details on
+-the restrictions imposed on untrusted clients.
+-.It Cm GatewayPorts
+-Specifies whether remote hosts are allowed to connect to local
+-forwarded ports.
+-By default,
+-.Xr ssh 1
+-binds local port forwardings to the loopback address.
+-This prevents other remote hosts from connecting to forwarded ports.
+-.Cm GatewayPorts
+-can be used to specify that ssh
+-should bind local port forwardings to the wildcard address,
+-thus allowing remote hosts to connect to forwarded ports.
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-.It Cm GlobalKnownHostsFile
+-Specifies one or more files to use for the global
+-host key database, separated by whitespace.
+-The default is
+-.Pa /etc/ssh/ssh_known_hosts ,
+-.Pa /etc/ssh/ssh_known_hosts2 .
+-.It Cm GSSAPIAuthentication
+-Specifies whether user authentication based on GSSAPI is allowed.
+-The default is
+-.Dq no .
+-Note that this option applies to protocol version 2 only.
+-.It Cm GSSAPIDelegateCredentials
+-Forward (delegate) credentials to the server.
+-The default is
+-.Dq no .
+-Note that this option applies to protocol version 2 only.
+-.It Cm HashKnownHosts
+-Indicates that
+-.Xr ssh 1
+-should hash host names and addresses when they are added to
+-.Pa ~/.ssh/known_hosts .
+-These hashed names may be used normally by
+-.Xr ssh 1
+-and
+-.Xr sshd 8 ,
+-but they do not reveal identifying information should the file's contents
+-be disclosed.
+-The default is
+-.Dq no .
+-Note that existing names and addresses in known hosts files
+-will not be converted automatically,
+-but may be manually hashed using
+-.Xr ssh-keygen 1 .
+-.It Cm HostbasedAuthentication
+-Specifies whether to try rhosts based authentication with public key
+-authentication.
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-This option applies to protocol version 2 only and
+-is similar to
+-.Cm RhostsRSAAuthentication .
+-.It Cm HostbasedKeyTypes
+-Specifies the key types that will be used for hostbased authentication
+-as a comma-separated pattern list.
+-Alternately if the specified value begins with a
+-.Sq +
+-character, then the specified key types will be appended to the default set
+-instead of replacing them.
+-The default for this option is:
+-.Bd -literal -offset 3n
+-ecdsa-sha2-nistp256-cert-v01@openssh.com,
+-ecdsa-sha2-nistp384-cert-v01@openssh.com,
+-ecdsa-sha2-nistp521-cert-v01@openssh.com,
+-ssh-ed25519-cert-v01@openssh.com,
+-ssh-rsa-cert-v01@openssh.com,
+-ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
+-ssh-ed25519,ssh-rsa
+-.Ed
+-.Pp
+-The
+-.Fl Q
+-option of
+-.Xr ssh 1
+-may be used to list supported key types.
+-.It Cm HostKeyAlgorithms
+-Specifies the protocol version 2 host key algorithms
+-that the client wants to use in order of preference.
+-Alternately if the specified value begins with a
+-.Sq +
+-character, then the specified key types will be appended to the default set
+-instead of replacing them.
+-The default for this option is:
+-.Bd -literal -offset 3n
+-ecdsa-sha2-nistp256-cert-v01@openssh.com,
+-ecdsa-sha2-nistp384-cert-v01@openssh.com,
+-ecdsa-sha2-nistp521-cert-v01@openssh.com,
+-ssh-ed25519-cert-v01@openssh.com,
+-ssh-rsa-cert-v01@openssh.com,
+-ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
+-ssh-ed25519,ssh-rsa
+-.Ed
+-.Pp
+-If hostkeys are known for the destination host then this default is modified
+-to prefer their algorithms.
+-.Pp
+-The list of available key types may also be obtained using the
+-.Fl Q
+-option of
+-.Xr ssh 1
+-with an argument of
+-.Dq key .
+-.It Cm HostKeyAlias
+-Specifies an alias that should be used instead of the
+-real host name when looking up or saving the host key
+-in the host key database files.
+-This option is useful for tunneling SSH connections
+-or for multiple servers running on a single host.
+-.It Cm HostName
+-Specifies the real host name to log into.
+-This can be used to specify nicknames or abbreviations for hosts.
+-If the hostname contains the character sequence
+-.Ql %h ,
+-then this will be replaced with the host name specified on the command line
+-(this is useful for manipulating unqualified names).
+-The character sequence
+-.Ql %%
+-will be replaced by a single
+-.Ql %
+-character, which may be used when specifying IPv6 link-local addresses.
+-.Pp
+-The default is the name given on the command line.
+-Numeric IP addresses are also permitted (both on the command line and in
+-.Cm HostName
+-specifications).
+-.It Cm IdentitiesOnly
+-Specifies that
+-.Xr ssh 1
+-should only use the authentication identity files configured in the
+-.Nm
+-files,
+-even if
+-.Xr ssh-agent 1
+-or a
+-.Cm PKCS11Provider
+-offers more identities.
+-The argument to this keyword must be
+-.Dq yes
+-or
+-.Dq no .
+-This option is intended for situations where ssh-agent
+-offers many different identities.
+-The default is
+-.Dq no .
+-.It Cm IdentityFile
+-Specifies a file from which the user's DSA, ECDSA, Ed25519 or RSA authentication
+-identity is read.
+-The default is
+-.Pa ~/.ssh/identity
+-for protocol version 1, and
+-.Pa ~/.ssh/id_dsa ,
+-.Pa ~/.ssh/id_ecdsa ,
+-.Pa ~/.ssh/id_ed25519
+-and
+-.Pa ~/.ssh/id_rsa
+-for protocol version 2.
+-Additionally, any identities represented by the authentication agent
+-will be used for authentication unless
+-.Cm IdentitiesOnly
+-is set.
+-.Xr ssh 1
+-will try to load certificate information from the filename obtained by
+-appending
+-.Pa -cert.pub
+-to the path of a specified
+-.Cm IdentityFile .
+-.Pp
+-The file name may use the tilde
+-syntax to refer to a user's home directory or one of the following
+-escape characters:
+-.Ql %d
+-(local user's home directory),
+-.Ql %u
+-(local user name),
+-.Ql %l
+-(local host name),
+-.Ql %h
+-(remote host name) or
+-.Ql %r
+-(remote user name).
+-.Pp
+-It is possible to have
+-multiple identity files specified in configuration files; all these
+-identities will be tried in sequence.
+-Multiple
+-.Cm IdentityFile
+-directives will add to the list of identities tried (this behaviour
+-differs from that of other configuration directives).
+-.Pp
+-.Cm IdentityFile
+-may be used in conjunction with
+-.Cm IdentitiesOnly
+-to select which identities in an agent are offered during authentication.
+-.It Cm IgnoreUnknown
+-Specifies a pattern-list of unknown options to be ignored if they are
+-encountered in configuration parsing.
+-This may be used to suppress errors if
+-.Nm
+-contains options that are unrecognised by
+-.Xr ssh 1 .
+-It is recommended that
+-.Cm IgnoreUnknown
+-be listed early in the configuration file as it will not be applied
+-to unknown options that appear before it.
+-.It Cm IPQoS
+-Specifies the IPv4 type-of-service or DSCP class for connections.
+-Accepted values are
+-.Dq af11 ,
+-.Dq af12 ,
+-.Dq af13 ,
+-.Dq af21 ,
+-.Dq af22 ,
+-.Dq af23 ,
+-.Dq af31 ,
+-.Dq af32 ,
+-.Dq af33 ,
+-.Dq af41 ,
+-.Dq af42 ,
+-.Dq af43 ,
+-.Dq cs0 ,
+-.Dq cs1 ,
+-.Dq cs2 ,
+-.Dq cs3 ,
+-.Dq cs4 ,
+-.Dq cs5 ,
+-.Dq cs6 ,
+-.Dq cs7 ,
+-.Dq ef ,
+-.Dq lowdelay ,
+-.Dq throughput ,
+-.Dq reliability ,
+-or a numeric value.
+-This option may take one or two arguments, separated by whitespace.
+-If one argument is specified, it is used as the packet class unconditionally.
+-If two values are specified, the first is automatically selected for
+-interactive sessions and the second for non-interactive sessions.
+-The default is
+-.Dq lowdelay
+-for interactive sessions and
+-.Dq throughput
+-for non-interactive sessions.
+-.It Cm KbdInteractiveAuthentication
+-Specifies whether to use keyboard-interactive authentication.
+-The argument to this keyword must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq yes .
+-.It Cm KbdInteractiveDevices
+-Specifies the list of methods to use in keyboard-interactive authentication.
+-Multiple method names must be comma-separated.
+-The default is to use the server specified list.
+-The methods available vary depending on what the server supports.
+-For an OpenSSH server,
+-it may be zero or more of:
+-.Dq bsdauth ,
+-.Dq pam ,
+-and
+-.Dq skey .
+-.It Cm KexAlgorithms
+-Specifies the available KEX (Key Exchange) algorithms.
+-Multiple algorithms must be comma-separated.
+-Alternately if the specified value begins with a
+-.Sq +
+-character, then the specified methods will be appended to the default set
+-instead of replacing them.
+-The default is:
+-.Bd -literal -offset indent
+-curve25519-sha256@libssh.org,
+-ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
+-diffie-hellman-group-exchange-sha256,
+-diffie-hellman-group-exchange-sha1,
+-diffie-hellman-group14-sha1
+-.Ed
+-.Pp
+-The list of available key exchange algorithms may also be obtained using the
+-.Fl Q
+-option of
+-.Xr ssh 1
+-with an argument of
+-.Dq kex .
+-.It Cm LocalCommand
+-Specifies a command to execute on the local machine after successfully
+-connecting to the server.
+-The command string extends to the end of the line, and is executed with
+-the user's shell.
+-The following escape character substitutions will be performed:
+-.Ql %d
+-(local user's home directory),
+-.Ql %h
+-(remote host name),
+-.Ql %l
+-(local host name),
+-.Ql %n
+-(host name as provided on the command line),
+-.Ql %p
+-(remote port),
+-.Ql %r
+-(remote user name) or
+-.Ql %u
+-(local user name) or
+-.Ql \&%C
+-by a hash of the concatenation: %l%h%p%r.
+-.Pp
+-The command is run synchronously and does not have access to the
+-session of the
+-.Xr ssh 1
+-that spawned it.
+-It should not be used for interactive commands.
+-.Pp
+-This directive is ignored unless
+-.Cm PermitLocalCommand
+-has been enabled.
+-.It Cm LocalForward
+-Specifies that a TCP port on the local machine be forwarded over
+-the secure channel to the specified host and port from the remote machine.
+-The first argument must be
+-.Sm off
+-.Oo Ar bind_address : Oc Ar port
+-.Sm on
+-and the second argument must be
+-.Ar host : Ns Ar hostport .
+-IPv6 addresses can be specified by enclosing addresses in square brackets.
+-Multiple forwardings may be specified, and additional forwardings can be
+-given on the command line.
+-Only the superuser can forward privileged ports.
+-By default, the local port is bound in accordance with the
+-.Cm GatewayPorts
+-setting.
+-However, an explicit
+-.Ar bind_address
+-may be used to bind the connection to a specific address.
+-The
+-.Ar bind_address
+-of
+-.Dq localhost
+-indicates that the listening port be bound for local use only, while an
+-empty address or
+-.Sq *
+-indicates that the port should be available from all interfaces.
+-.It Cm LogLevel
+-Gives the verbosity level that is used when logging messages from
+-.Xr ssh 1 .
+-The possible values are:
+-QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3.
+-The default is INFO.
+-DEBUG and DEBUG1 are equivalent.
+-DEBUG2 and DEBUG3 each specify higher levels of verbose output.
+-.It Cm MACs
+-Specifies the MAC (message authentication code) algorithms
+-in order of preference.
+-The MAC algorithm is used in protocol version 2
+-for data integrity protection.
+-Multiple algorithms must be comma-separated.
+-If the specified value begins with a
+-.Sq +
+-character, then the specified algorithms will be appended to the default set
+-instead of replacing them.
+-.Pp
+-The algorithms that contain
+-.Dq -etm
+-calculate the MAC after encryption (encrypt-then-mac).
+-These are considered safer and their use recommended.
+-.Pp
+-The default is:
+-.Bd -literal -offset indent
+-umac-64-etm@openssh.com,umac-128-etm@openssh.com,
+-hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,
+-umac-64@openssh.com,umac-128@openssh.com,
+-hmac-sha2-256,hmac-sha2-512,
+-hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,
+-hmac-ripemd160-etm@openssh.com,
+-hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,
+-hmac-md5,hmac-sha1,hmac-ripemd160,
+-hmac-sha1-96,hmac-md5-96
+-.Ed
+-.Pp
+-The list of available MAC algorithms may also be obtained using the
+-.Fl Q
+-option of
+-.Xr ssh 1
+-with an argument of
+-.Dq mac .
+-.It Cm NoHostAuthenticationForLocalhost
+-This option can be used if the home directory is shared across machines.
+-In this case localhost will refer to a different machine on each of
+-the machines and the user will get many warnings about changed host keys.
+-However, this option disables host authentication for localhost.
+-The argument to this keyword must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is to check the host key for localhost.
+-.It Cm NumberOfPasswordPrompts
+-Specifies the number of password prompts before giving up.
+-The argument to this keyword must be an integer.
+-The default is 3.
+-.It Cm PasswordAuthentication
+-Specifies whether to use password authentication.
+-The argument to this keyword must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq yes .
+-.It Cm PermitLocalCommand
+-Allow local command execution via the
+-.Ic LocalCommand
+-option or using the
+-.Ic !\& Ns Ar command
+-escape sequence in
+-.Xr ssh 1 .
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-.It Cm PKCS11Provider
+-Specifies which PKCS#11 provider to use.
+-The argument to this keyword is the PKCS#11 shared library
+-.Xr ssh 1
+-should use to communicate with a PKCS#11 token providing the user's
+-private RSA key.
+-.It Cm Port
+-Specifies the port number to connect on the remote host.
+-The default is 22.
+-.It Cm PreferredAuthentications
+-Specifies the order in which the client should try protocol 2
+-authentication methods.
+-This allows a client to prefer one method (e.g.\&
+-.Cm keyboard-interactive )
+-over another method (e.g.\&
+-.Cm password ) .
+-The default is:
+-.Bd -literal -offset indent
+-gssapi-with-mic,hostbased,publickey,
+-keyboard-interactive,password
+-.Ed
+-.It Cm Protocol
+-Specifies the protocol versions
+-.Xr ssh 1
+-should support in order of preference.
+-The possible values are
+-.Sq 1
+-and
+-.Sq 2 .
+-Multiple versions must be comma-separated.
+-When this option is set to
+-.Dq 2,1
+-.Nm ssh
+-will try version 2 and fall back to version 1
+-if version 2 is not available.
+-The default is
+-.Sq 2 .
+-.It Cm ProxyCommand
+-Specifies the command to use to connect to the server.
+-The command
+-string extends to the end of the line, and is executed
+-using the user's shell
+-.Ql exec
+-directive to avoid a lingering shell process.
+-.Pp
+-In the command string, any occurrence of
+-.Ql %h
+-will be substituted by the host name to
+-connect,
+-.Ql %p
+-by the port, and
+-.Ql %r
+-by the remote user name.
+-The command can be basically anything,
+-and should read from its standard input and write to its standard output.
+-It should eventually connect an
+-.Xr sshd 8
+-server running on some machine, or execute
+-.Ic sshd -i
+-somewhere.
+-Host key management will be done using the
+-HostName of the host being connected (defaulting to the name typed by
+-the user).
+-Setting the command to
+-.Dq none
+-disables this option entirely.
+-Note that
+-.Cm CheckHostIP
+-is not available for connects with a proxy command.
+-.Pp
+-This directive is useful in conjunction with
+-.Xr nc 1
+-and its proxy support.
+-For example, the following directive would connect via an HTTP proxy at
+-192.0.2.0:
+-.Bd -literal -offset 3n
+-ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p
+-.Ed
+-.It Cm ProxyUseFdpass
+-Specifies that
+-.Cm ProxyCommand
+-will pass a connected file descriptor back to
+-.Xr ssh 1
+-instead of continuing to execute and pass data.
+-The default is
+-.Dq no .
+-.It Cm PubkeyAcceptedKeyTypes
+-Specifies the key types that will be used for public key authentication
+-as a comma-separated pattern list.
+-Alternately if the specified value begins with a
+-.Sq +
+-character, then the key types after it will be appended to the default
+-instead of replacing it.
+-The default for this option is:
+-.Bd -literal -offset 3n
+-ecdsa-sha2-nistp256-cert-v01@openssh.com,
+-ecdsa-sha2-nistp384-cert-v01@openssh.com,
+-ecdsa-sha2-nistp521-cert-v01@openssh.com,
+-ssh-ed25519-cert-v01@openssh.com,
+-ssh-rsa-cert-v01@openssh.com,
+-ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
+-ssh-ed25519,ssh-rsa
+-.Ed
+-.Pp
+-The
+-.Fl Q
+-option of
+-.Xr ssh 1
+-may be used to list supported key types.
+-.It Cm PubkeyAuthentication
+-Specifies whether to try public key authentication.
+-The argument to this keyword must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq yes .
+-This option applies to protocol version 2 only.
+-.It Cm RekeyLimit
+-Specifies the maximum amount of data that may be transmitted before the
+-session key is renegotiated, optionally followed a maximum amount of
+-time that may pass before the session key is renegotiated.
+-The first argument is specified in bytes and may have a suffix of
+-.Sq K ,
+-.Sq M ,
+-or
+-.Sq G
+-to indicate Kilobytes, Megabytes, or Gigabytes, respectively.
+-The default is between
+-.Sq 1G
+-and
+-.Sq 4G ,
+-depending on the cipher.
+-The optional second value is specified in seconds and may use any of the
+-units documented in the
+-TIME FORMATS section of
+-.Xr sshd_config 5 .
+-The default value for
+-.Cm RekeyLimit
+-is
+-.Dq default none ,
+-which means that rekeying is performed after the cipher's default amount
+-of data has been sent or received and no time based rekeying is done.
+-This option applies to protocol version 2 only.
+-.It Cm RemoteForward
+-Specifies that a TCP port on the remote machine be forwarded over
+-the secure channel to the specified host and port from the local machine.
+-The first argument must be
+-.Sm off
+-.Oo Ar bind_address : Oc Ar port
+-.Sm on
+-and the second argument must be
+-.Ar host : Ns Ar hostport .
+-IPv6 addresses can be specified by enclosing addresses in square brackets.
+-Multiple forwardings may be specified, and additional
+-forwardings can be given on the command line.
+-Privileged ports can be forwarded only when
+-logging in as root on the remote machine.
+-.Pp
+-If the
+-.Ar port
+-argument is
+-.Ql 0 ,
+-the listen port will be dynamically allocated on the server and reported
+-to the client at run time.
+-.Pp
+-If the
+-.Ar bind_address
+-is not specified, the default is to only bind to loopback addresses.
+-If the
+-.Ar bind_address
+-is
+-.Ql *
+-or an empty string, then the forwarding is requested to listen on all
+-interfaces.
+-Specifying a remote
+-.Ar bind_address
+-will only succeed if the server's
+-.Cm GatewayPorts
+-option is enabled (see
+-.Xr sshd_config 5 ) .
+-.It Cm RequestTTY
+-Specifies whether to request a pseudo-tty for the session.
+-The argument may be one of:
+-.Dq no
+-(never request a TTY),
+-.Dq yes
+-(always request a TTY when standard input is a TTY),
+-.Dq force
+-(always request a TTY) or
+-.Dq auto
+-(request a TTY when opening a login session).
+-This option mirrors the
+-.Fl t
+-and
+-.Fl T
+-flags for
+-.Xr ssh 1 .
+-.It Cm RevokedHostKeys
+-Specifies revoked host public keys.
+-Keys listed in this file will be refused for host authentication.
+-Note that if this file does not exist or is not readable,
+-then host authentication will be refused for all hosts.
+-Keys may be specified as a text file, listing one public key per line, or as
+-an OpenSSH Key Revocation List (KRL) as generated by
+-.Xr ssh-keygen 1 .
+-For more information on KRLs, see the KEY REVOCATION LISTS section in
+-.Xr ssh-keygen 1 .
+-.It Cm RhostsRSAAuthentication
+-Specifies whether to try rhosts based authentication with RSA host
+-authentication.
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-This option applies to protocol version 1 only and requires
+-.Xr ssh 1
+-to be setuid root.
+-.It Cm RSAAuthentication
+-Specifies whether to try RSA authentication.
+-The argument to this keyword must be
+-.Dq yes
+-or
+-.Dq no .
+-RSA authentication will only be
+-attempted if the identity file exists, or an authentication agent is
+-running.
+-The default is
+-.Dq yes .
+-Note that this option applies to protocol version 1 only.
+-.It Cm SendEnv
+-Specifies what variables from the local
+-.Xr environ 7
+-should be sent to the server.
+-Note that environment passing is only supported for protocol 2.
+-The server must also support it, and the server must be configured to
+-accept these environment variables.
+-Note that the
+-.Ev TERM
+-environment variable is always sent whenever a
+-pseudo-terminal is requested as it is required by the protocol.
+-Refer to
+-.Cm AcceptEnv
+-in
+-.Xr sshd_config 5
+-for how to configure the server.
+-Variables are specified by name, which may contain wildcard characters.
+-Multiple environment variables may be separated by whitespace or spread
+-across multiple
+-.Cm SendEnv
+-directives.
+-The default is not to send any environment variables.
+-.Pp
+-See
+-.Sx PATTERNS
+-for more information on patterns.
+-.It Cm ServerAliveCountMax
+-Sets the number of server alive messages (see below) which may be
+-sent without
+-.Xr ssh 1
+-receiving any messages back from the server.
+-If this threshold is reached while server alive messages are being sent,
+-ssh will disconnect from the server, terminating the session.
+-It is important to note that the use of server alive messages is very
+-different from
+-.Cm TCPKeepAlive
+-(below).
+-The server alive messages are sent through the encrypted channel
+-and therefore will not be spoofable.
+-The TCP keepalive option enabled by
+-.Cm TCPKeepAlive
+-is spoofable.
+-The server alive mechanism is valuable when the client or
+-server depend on knowing when a connection has become inactive.
+-.Pp
+-The default value is 3.
+-If, for example,
+-.Cm ServerAliveInterval
+-(see below) is set to 15 and
+-.Cm ServerAliveCountMax
+-is left at the default, if the server becomes unresponsive,
+-ssh will disconnect after approximately 45 seconds.
+-This option applies to protocol version 2 only.
+-.It Cm ServerAliveInterval
+-Sets a timeout interval in seconds after which if no data has been received
+-from the server,
+-.Xr ssh 1
+-will send a message through the encrypted
+-channel to request a response from the server.
+-The default
+-is 0, indicating that these messages will not be sent to the server.
+-This option applies to protocol version 2 only.
+-.It Cm StreamLocalBindMask
+-Sets the octal file creation mode mask
+-.Pq umask
+-used when creating a Unix-domain socket file for local or remote
+-port forwarding.
+-This option is only used for port forwarding to a Unix-domain socket file.
+-.Pp
+-The default value is 0177, which creates a Unix-domain socket file that is
+-readable and writable only by the owner.
+-Note that not all operating systems honor the file mode on Unix-domain
+-socket files.
+-.It Cm StreamLocalBindUnlink
+-Specifies whether to remove an existing Unix-domain socket file for local
+-or remote port forwarding before creating a new one.
+-If the socket file already exists and
+-.Cm StreamLocalBindUnlink
+-is not enabled,
+-.Nm ssh
+-will be unable to forward the port to the Unix-domain socket file.
+-This option is only used for port forwarding to a Unix-domain socket file.
+-.Pp
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-.It Cm StrictHostKeyChecking
+-If this flag is set to
+-.Dq yes ,
+-.Xr ssh 1
+-will never automatically add host keys to the
+-.Pa ~/.ssh/known_hosts
+-file, and refuses to connect to hosts whose host key has changed.
+-This provides maximum protection against trojan horse attacks,
+-though it can be annoying when the
+-.Pa /etc/ssh/ssh_known_hosts
+-file is poorly maintained or when connections to new hosts are
+-frequently made.
+-This option forces the user to manually
+-add all new hosts.
+-If this flag is set to
+-.Dq no ,
+-ssh will automatically add new host keys to the
+-user known hosts files.
+-If this flag is set to
+-.Dq ask ,
+-new host keys
+-will be added to the user known host files only after the user
+-has confirmed that is what they really want to do, and
+-ssh will refuse to connect to hosts whose host key has changed.
+-The host keys of
+-known hosts will be verified automatically in all cases.
+-The argument must be
+-.Dq yes ,
+-.Dq no ,
+-or
+-.Dq ask .
+-The default is
+-.Dq ask .
+-.It Cm TCPKeepAlive
+-Specifies whether the system should send TCP keepalive messages to the
+-other side.
+-If they are sent, death of the connection or crash of one
+-of the machines will be properly noticed.
+-However, this means that
+-connections will die if the route is down temporarily, and some people
+-find it annoying.
+-.Pp
+-The default is
+-.Dq yes
+-(to send TCP keepalive messages), and the client will notice
+-if the network goes down or the remote host dies.
+-This is important in scripts, and many users want it too.
+-.Pp
+-To disable TCP keepalive messages, the value should be set to
+-.Dq no .
+-.It Cm Tunnel
+-Request
+-.Xr tun 4
+-device forwarding between the client and the server.
+-The argument must be
+-.Dq yes ,
+-.Dq point-to-point
+-(layer 3),
+-.Dq ethernet
+-(layer 2),
+-or
+-.Dq no .
+-Specifying
+-.Dq yes
+-requests the default tunnel mode, which is
+-.Dq point-to-point .
+-The default is
+-.Dq no .
+-.It Cm TunnelDevice
+-Specifies the
+-.Xr tun 4
+-devices to open on the client
+-.Pq Ar local_tun
+-and the server
+-.Pq Ar remote_tun .
+-.Pp
+-The argument must be
+-.Sm off
+-.Ar local_tun Op : Ar remote_tun .
+-.Sm on
+-The devices may be specified by numerical ID or the keyword
+-.Dq any ,
+-which uses the next available tunnel device.
+-If
+-.Ar remote_tun
+-is not specified, it defaults to
+-.Dq any .
+-The default is
+-.Dq any:any .
+-.It Cm UpdateHostKeys
+-Specifies whether
+-.Xr ssh 1
+-should accept notifications of additional hostkeys from the server sent
+-after authentication has completed and add them to
+-.Cm UserKnownHostsFile .
+-The argument must be
+-.Dq yes ,
+-.Dq no
+-(the default) or
+-.Dq ask .
+-Enabling this option allows learning alternate hostkeys for a server
+-and supports graceful key rotation by allowing a server to send replacement
+-public keys before old ones are removed.
+-Additional hostkeys are only accepted if the key used to authenticate the
+-host was already trusted or explicity accepted by the user.
+-If
+-.Cm UpdateHostKeys
+-is set to
+-.Dq ask ,
+-then the user is asked to confirm the modifications to the known_hosts file.
+-Confirmation is currently incompatible with
+-.Cm ControlPersist ,
+-and will be disabled if it is enabled.
+-.Pp
+-Presently, only
+-.Xr sshd 8
+-from OpenSSH 6.8 and greater support the
+-.Dq hostkeys@openssh.com
+-protocol extension used to inform the client of all the server's hostkeys.
+-.It Cm UsePrivilegedPort
+-Specifies whether to use a privileged port for outgoing connections.
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-If set to
+-.Dq yes ,
+-.Xr ssh 1
+-must be setuid root.
+-Note that this option must be set to
+-.Dq yes
+-for
+-.Cm RhostsRSAAuthentication
+-with older servers.
+-.It Cm User
+-Specifies the user to log in as.
+-This can be useful when a different user name is used on different machines.
+-This saves the trouble of
+-having to remember to give the user name on the command line.
+-.It Cm UserKnownHostsFile
+-Specifies one or more files to use for the user
+-host key database, separated by whitespace.
+-The default is
+-.Pa ~/.ssh/known_hosts ,
+-.Pa ~/.ssh/known_hosts2 .
+-.It Cm VerifyHostKeyDNS
+-Specifies whether to verify the remote key using DNS and SSHFP resource
+-records.
+-If this option is set to
+-.Dq yes ,
+-the client will implicitly trust keys that match a secure fingerprint
+-from DNS.
+-Insecure fingerprints will be handled as if this option was set to
+-.Dq ask .
+-If this option is set to
+-.Dq ask ,
+-information on fingerprint match will be displayed, but the user will still
+-need to confirm new host keys according to the
+-.Cm StrictHostKeyChecking
+-option.
+-The argument must be
+-.Dq yes ,
+-.Dq no ,
+-or
+-.Dq ask .
+-The default is
+-.Dq no .
+-Note that this option applies to protocol version 2 only.
+-.Pp
+-See also VERIFYING HOST KEYS in
+-.Xr ssh 1 .
+-.It Cm VisualHostKey
+-If this flag is set to
+-.Dq yes ,
+-an ASCII art representation of the remote host key fingerprint is
+-printed in addition to the fingerprint string at login and
+-for unknown host keys.
+-If this flag is set to
+-.Dq no ,
+-no fingerprint strings are printed at login and
+-only the fingerprint string will be printed for unknown host keys.
+-The default is
+-.Dq no .
+-.It Cm XAuthLocation
+-Specifies the full pathname of the
+-.Xr xauth 1
+-program.
+-The default is
+-.Pa /usr/X11R6/bin/xauth .
+-.El
+-.Sh PATTERNS
+-A
+-.Em pattern
+-consists of zero or more non-whitespace characters,
+-.Sq *
+-(a wildcard that matches zero or more characters),
+-or
+-.Sq ?\&
+-(a wildcard that matches exactly one character).
+-For example, to specify a set of declarations for any host in the
+-.Dq .co.uk
+-set of domains,
+-the following pattern could be used:
+-.Pp
+-.Dl Host *.co.uk
+-.Pp
+-The following pattern
+-would match any host in the 192.168.0.[0-9] network range:
+-.Pp
+-.Dl Host 192.168.0.?
+-.Pp
+-A
+-.Em pattern-list
+-is a comma-separated list of patterns.
+-Patterns within pattern-lists may be negated
+-by preceding them with an exclamation mark
+-.Pq Sq !\& .
+-For example,
+-to allow a key to be used from anywhere within an organization
+-except from the
+-.Dq dialup
+-pool,
+-the following entry (in authorized_keys) could be used:
+-.Pp
+-.Dl from=\&"!*.dialup.example.com,*.example.com\&"
+-.Sh FILES
+-.Bl -tag -width Ds
+-.It Pa ~/.ssh/config
+-This is the per-user configuration file.
+-The format of this file is described above.
+-This file is used by the SSH client.
+-Because of the potential for abuse, this file must have strict permissions:
+-read/write for the user, and not accessible by others.
+-.It Pa /etc/ssh/ssh_config
+-Systemwide configuration file.
+-This file provides defaults for those
+-values that are not specified in the user's configuration file, and
+-for those users who do not have a configuration file.
+-This file must be world-readable.
+-.El
+-.Sh SEE ALSO
+-.Xr ssh 1
+-.Sh AUTHORS
+-OpenSSH is a derivative of the original and free
+-ssh 1.2.12 release by Tatu Ylonen.
+-Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
+-Theo de Raadt and Dug Song
+-removed many bugs, re-added newer features and
+-created OpenSSH.
+-Markus Friedl contributed the support for SSH
+-protocol versions 1.5 and 2.0.
+diff --git a/sshd.1m b/sshd.1m
+new file mode 100644
+index 0000000..967a753
+--- /dev/null
++++ b/sshd.1m
+@@ -0,0 +1,971 @@
++.\"
++.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
++.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
++.\"                    All rights reserved
++.\"
++.\" As far as I am concerned, the code I have written for this software
++.\" can be used freely for any purpose.  Any derived versions of this
++.\" software must be clearly marked as such, and if the derived work is
++.\" incompatible with the protocol description in the RFC file, it must be
++.\" called by a name other than "ssh" or "Secure Shell".
++.\"
++.\" Copyright (c) 1999,2000 Markus Friedl.  All rights reserved.
++.\" Copyright (c) 1999 Aaron Campbell.  All rights reserved.
++.\" Copyright (c) 1999 Theo de Raadt.  All rights reserved.
++.\"
++.\" Redistribution and use in source and binary forms, with or without
++.\" modification, are permitted provided that the following conditions
++.\" are met:
++.\" 1. Redistributions of source code must retain the above copyright
++.\"    notice, this list of conditions and the following disclaimer.
++.\" 2. Redistributions in binary form must reproduce the above copyright
++.\"    notice, this list of conditions and the following disclaimer in the
++.\"    documentation and/or other materials provided with the distribution.
++.\"
++.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
++.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
++.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
++.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
++.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
++.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
++.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++.\"
++.\" $OpenBSD: sshd.8,v 1.280 2015/07/03 03:49:45 djm Exp $
++.Dd $Mdocdate: July 3 2015 $
++.Dt SSHD 1M
++.Os
++.Sh NAME
++.Nm sshd
++.Nd OpenSSH SSH daemon
++.Sh SYNOPSIS
++.Nm sshd
++.Bk -words
++.Op Fl 46DdeiqTt
++.Op Fl b Ar bits
++.Op Fl C Ar connection_spec
++.Op Fl c Ar host_certificate_file
++.Op Fl E Ar log_file
++.Op Fl f Ar config_file
++.Op Fl g Ar login_grace_time
++.Op Fl h Ar host_key_file
++.Op Fl k Ar key_gen_time
++.Op Fl o Ar option
++.Op Fl p Ar port
++.Op Fl u Ar len
++.Ek
++.Sh DESCRIPTION
++.Nm
++(OpenSSH Daemon) is the daemon program for
++.Xr ssh 1 .
++Together these programs replace rlogin and rsh,
++and provide secure encrypted communications between two untrusted hosts
++over an insecure network.
++.Pp
++.Nm
++listens for connections from clients.
++It is normally started at boot from
++.Pa /etc/rc .
++It forks a new
++daemon for each incoming connection.
++The forked daemons handle
++key exchange, encryption, authentication, command execution,
++and data exchange.
++.Pp
++.Nm
++can be configured using command-line options or a configuration file
++(by default
++.Xr sshd_config 4 ) ;
++command-line options override values specified in the
++configuration file.
++.Nm
++rereads its configuration file when it receives a hangup signal,
++.Dv SIGHUP ,
++by executing itself with the name and options it was started with, e.g.\&
++.Pa /usr/sbin/sshd .
++.Pp
++The options are as follows:
++.Bl -tag -width Ds
++.It Fl 4
++Forces
++.Nm
++to use IPv4 addresses only.
++.It Fl 6
++Forces
++.Nm
++to use IPv6 addresses only.
++.It Fl b Ar bits
++Specifies the number of bits in the ephemeral protocol version 1
++server key (default 1024).
++.It Fl C Ar connection_spec
++Specify the connection parameters to use for the
++.Fl T
++extended test mode.
++If provided, any
++.Cm Match
++directives in the configuration file
++that would apply to the specified user, host, and address will be set before
++the configuration is written to standard output.
++The connection parameters are supplied as keyword=value pairs.
++The keywords are
++.Dq user ,
++.Dq host ,
++.Dq laddr ,
++.Dq lport ,
++and
++.Dq addr .
++All are required and may be supplied in any order, either with multiple
++.Fl C
++options or as a comma-separated list.
++.It Fl c Ar host_certificate_file
++Specifies a path to a certificate file to identify
++.Nm
++during key exchange.
++The certificate file must match a host key file specified using the
++.Fl h
++option or the
++.Cm HostKey
++configuration directive.
++.It Fl D
++When this option is specified,
++.Nm
++will not detach and does not become a daemon.
++This allows easy monitoring of
++.Nm sshd .
++.It Fl d
++Debug mode.
++The server sends verbose debug output to standard error,
++and does not put itself in the background.
++The server also will not fork and will only process one connection.
++This option is only intended for debugging for the server.
++Multiple
++.Fl d
++options increase the debugging level.
++Maximum is 3.
++.It Fl E Ar log_file
++Append debug logs to
++.Ar log_file
++instead of the system log.
++.It Fl e
++Write debug logs to standard error instead of the system log.
++.It Fl f Ar config_file
++Specifies the name of the configuration file.
++The default is
++.Pa /etc/ssh/sshd_config .
++.Nm
++refuses to start if there is no configuration file.
++.It Fl g Ar login_grace_time
++Gives the grace time for clients to authenticate themselves (default
++120 seconds).
++If the client fails to authenticate the user within
++this many seconds, the server disconnects and exits.
++A value of zero indicates no limit.
++.It Fl h Ar host_key_file
++Specifies a file from which a host key is read.
++This option must be given if
++.Nm
++is not run as root (as the normal
++host key files are normally not readable by anyone but root).
++The default is
++.Pa /etc/ssh/ssh_host_key
++for protocol version 1, and
++.Pa /etc/ssh/ssh_host_dsa_key ,
++.Pa /etc/ssh/ssh_host_ecdsa_key .
++.Pa /etc/ssh/ssh_host_ed25519_key
++and
++.Pa /etc/ssh/ssh_host_rsa_key
++for protocol version 2.
++It is possible to have multiple host key files for
++the different protocol versions and host key algorithms.
++.It Fl i
++Specifies that
++.Nm
++is being run from
++.Xr inetd 8 .
++If SSH protocol 1 is enabled,
++.Nm
++should not  normally be run
++from inetd because it needs to generate the server key before it can
++respond to the client, and this may take some time.
++Clients may have to wait too long if the key was regenerated every time.
++.It Fl k Ar key_gen_time
++Specifies how often the ephemeral protocol version 1 server key is
++regenerated (default 3600 seconds, or one hour).
++The motivation for regenerating the key fairly
++often is that the key is not stored anywhere, and after about an hour
++it becomes impossible to recover the key for decrypting intercepted
++communications even if the machine is cracked into or physically
++seized.
++A value of zero indicates that the key will never be regenerated.
++.It Fl o Ar option
++Can be used to give options in the format used in the configuration file.
++This is useful for specifying options for which there is no separate
++command-line flag.
++For full details of the options, and their values, see
++.Xr sshd_config 4 .
++.It Fl p Ar port
++Specifies the port on which the server listens for connections
++(default 22).
++Multiple port options are permitted.
++Ports specified in the configuration file with the
++.Cm Port
++option are ignored when a command-line port is specified.
++Ports specified using the
++.Cm ListenAddress
++option override command-line ports.
++.It Fl q
++Quiet mode.
++Nothing is sent to the system log.
++Normally the beginning,
++authentication, and termination of each connection is logged.
++.It Fl T
++Extended test mode.
++Check the validity of the configuration file, output the effective configuration
++to stdout and then exit.
++Optionally,
++.Cm Match
++rules may be applied by specifying the connection parameters using one or more
++.Fl C
++options.
++.It Fl t
++Test mode.
++Only check the validity of the configuration file and sanity of the keys.
++This is useful for updating
++.Nm
++reliably as configuration options may change.
++.It Fl u Ar len
++This option is used to specify the size of the field
++in the
++.Li utmp
++structure that holds the remote host name.
++If the resolved host name is longer than
++.Ar len ,
++the dotted decimal value will be used instead.
++This allows hosts with very long host names that
++overflow this field to still be uniquely identified.
++Specifying
++.Fl u0
++indicates that only dotted decimal addresses
++should be put into the
++.Pa utmp
++file.
++.Fl u0
++may also be used to prevent
++.Nm
++from making DNS requests unless the authentication
++mechanism or configuration requires it.
++Authentication mechanisms that may require DNS include
++.Cm RhostsRSAAuthentication ,
++.Cm HostbasedAuthentication ,
++and using a
++.Cm from="pattern-list"
++option in a key file.
++Configuration options that require DNS include using a
++USER@HOST pattern in
++.Cm AllowUsers
++or
++.Cm DenyUsers .
++.El
++.Sh AUTHENTICATION
++The OpenSSH SSH daemon supports SSH protocols 1 and 2.
++The default is to use protocol 2 only,
++though this can be changed via the
++.Cm Protocol
++option in
++.Xr sshd_config 4 .
++Protocol 2 supports DSA, ECDSA, Ed25519 and RSA keys;
++protocol 1 only supports RSA keys.
++For both protocols,
++each host has a host-specific key,
++normally 2048 bits,
++used to identify the host.
++.Pp
++Forward security for protocol 1 is provided through
++an additional server key,
++normally 1024 bits,
++generated when the server starts.
++This key is normally regenerated every hour if it has been used, and
++is never stored on disk.
++Whenever a client connects, the daemon responds with its public
++host and server keys.
++The client compares the
++RSA host key against its own database to verify that it has not changed.
++The client then generates a 256-bit random number.
++It encrypts this
++random number using both the host key and the server key, and sends
++the encrypted number to the server.
++Both sides then use this
++random number as a session key which is used to encrypt all further
++communications in the session.
++The rest of the session is encrypted
++using a conventional cipher, currently Blowfish or 3DES, with 3DES
++being used by default.
++The client selects the encryption algorithm
++to use from those offered by the server.
++.Pp
++For protocol 2,
++forward security is provided through a Diffie-Hellman key agreement.
++This key agreement results in a shared session key.
++The rest of the session is encrypted using a symmetric cipher, currently
++128-bit AES, Blowfish, 3DES, CAST128, Arcfour, 192-bit AES, or 256-bit AES.
++The client selects the encryption algorithm
++to use from those offered by the server.
++Additionally, session integrity is provided
++through a cryptographic message authentication code
++(hmac-md5, hmac-sha1, umac-64, umac-128, hmac-ripemd160,
++hmac-sha2-256 or hmac-sha2-512).
++.Pp
++Finally, the server and the client enter an authentication dialog.
++The client tries to authenticate itself using
++host-based authentication,
++public key authentication,
++challenge-response authentication,
++or password authentication.
++.Pp
++Regardless of the authentication type, the account is checked to
++ensure that it is accessible.  An account is not accessible if it is
++locked, listed in
++.Cm DenyUsers
++or its group is listed in
++.Cm DenyGroups
++\&.  The definition of a locked account is system dependant. Some platforms
++have their own account database (eg AIX) and some modify the passwd field (
++.Ql \&*LK\&*
++on Solaris and UnixWare,
++.Ql \&*
++on HP-UX, containing
++.Ql Nologin
++on Tru64,
++a leading
++.Ql \&*LOCKED\&*
++on FreeBSD and a leading
++.Ql \&!
++on most Linuxes).
++If there is a requirement to disable password authentication
++for the account while allowing still public-key, then the passwd field
++should be set to something other than these values (eg
++.Ql NP
++or
++.Ql \&*NP\&*
++).
++.Pp
++If the client successfully authenticates itself, a dialog for
++preparing the session is entered.
++At this time the client may request
++things like allocating a pseudo-tty, forwarding X11 connections,
++forwarding TCP connections, or forwarding the authentication agent
++connection over the secure channel.
++.Pp
++After this, the client either requests a shell or execution of a command.
++The sides then enter session mode.
++In this mode, either side may send
++data at any time, and such data is forwarded to/from the shell or
++command on the server side, and the user terminal in the client side.
++.Pp
++When the user program terminates and all forwarded X11 and other
++connections have been closed, the server sends command exit status to
++the client, and both sides exit.
++.Sh LOGIN PROCESS
++When a user successfully logs in,
++.Nm
++does the following:
++.Bl -enum -offset indent
++.It
++If the login is on a tty, and no command has been specified,
++prints last login time and
++.Pa /etc/motd
++(unless prevented in the configuration file or by
++.Pa ~/.hushlogin ;
++see the
++.Sx FILES
++section).
++.It
++If the login is on a tty, records login time.
++.It
++Checks
++.Pa /etc/nologin ;
++if it exists, prints contents and quits
++(unless root).
++.It
++Changes to run with normal user privileges.
++.It
++Sets up basic environment.
++.It
++Reads the file
++.Pa ~/.ssh/environment ,
++if it exists, and users are allowed to change their environment.
++See the
++.Cm PermitUserEnvironment
++option in
++.Xr sshd_config 4 .
++.It
++Changes to user's home directory.
++.It
++If
++.Pa ~/.ssh/rc
++exists and the
++.Xr sshd_config 5
++.Cm PermitUserRC
++option is set, runs it; else if
++.Pa /etc/ssh/sshrc
++exists, runs
++it; otherwise runs xauth.
++The
++.Dq rc
++files are given the X11
++authentication protocol and cookie in standard input.
++See
++.Sx SSHRC ,
++below.
++.It
++Runs user's shell or command.
++All commands are run under the user's login shell as specified in the
++system password database.
++.El
++.Sh SSHRC
++If the file
++.Pa ~/.ssh/rc
++exists,
++.Xr sh 1
++runs it after reading the
++environment files but before starting the user's shell or command.
++It must not produce any output on stdout; stderr must be used
++instead.
++If X11 forwarding is in use, it will receive the "proto cookie" pair in
++its standard input (and
++.Ev DISPLAY
++in its environment).
++The script must call
++.Xr xauth 1
++because
++.Nm
++will not run xauth automatically to add X11 cookies.
++.Pp
++The primary purpose of this file is to run any initialization routines
++which may be needed before the user's home directory becomes
++accessible; AFS is a particular example of such an environment.
++.Pp
++This file will probably contain some initialization code followed by
++something similar to:
++.Bd -literal -offset 3n
++if read proto cookie && [ -n "$DISPLAY" ]; then
++	if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
++		# X11UseLocalhost=yes
++		echo add unix:`echo $DISPLAY |
++		    cut -c11-` $proto $cookie
++	else
++		# X11UseLocalhost=no
++		echo add $DISPLAY $proto $cookie
++	fi | xauth -q -
++fi
++.Ed
++.Pp
++If this file does not exist,
++.Pa /etc/ssh/sshrc
++is run, and if that
++does not exist either, xauth is used to add the cookie.
++.Sh AUTHORIZED_KEYS FILE FORMAT
++.Cm AuthorizedKeysFile
++specifies the files containing public keys for
++public key authentication;
++if none is specified, the default is
++.Pa ~/.ssh/authorized_keys
++and
++.Pa ~/.ssh/authorized_keys2 .
++Each line of the file contains one
++key (empty lines and lines starting with a
++.Ql #
++are ignored as
++comments).
++Protocol 1 public keys consist of the following space-separated fields:
++options, bits, exponent, modulus, comment.
++Protocol 2 public key consist of:
++options, keytype, base64-encoded key, comment.
++The options field is optional;
++its presence is determined by whether the line starts
++with a number or not (the options field never starts with a number).
++The bits, exponent, modulus, and comment fields give the RSA key for
++protocol version 1; the
++comment field is not used for anything (but may be convenient for the
++user to identify the key).
++For protocol version 2 the keytype is
++.Dq ecdsa-sha2-nistp256 ,
++.Dq ecdsa-sha2-nistp384 ,
++.Dq ecdsa-sha2-nistp521 ,
++.Dq ssh-ed25519 ,
++.Dq ssh-dss
++or
++.Dq ssh-rsa .
++.Pp
++Note that lines in this file are usually several hundred bytes long
++(because of the size of the public key encoding) up to a limit of
++8 kilobytes, which permits DSA keys up to 8 kilobits and RSA
++keys up to 16 kilobits.
++You don't want to type them in; instead, copy the
++.Pa identity.pub ,
++.Pa id_dsa.pub ,
++.Pa id_ecdsa.pub ,
++.Pa id_ed25519.pub ,
++or the
++.Pa id_rsa.pub
++file and edit it.
++.Pp
++.Nm
++enforces a minimum RSA key modulus size for protocol 1
++and protocol 2 keys of 768 bits.
++.Pp
++The options (if present) consist of comma-separated option
++specifications.
++No spaces are permitted, except within double quotes.
++The following option specifications are supported (note
++that option keywords are case-insensitive):
++.Bl -tag -width Ds
++.It Cm cert-authority
++Specifies that the listed key is a certification authority (CA) that is
++trusted to validate signed certificates for user authentication.
++.Pp
++Certificates may encode access restrictions similar to these key options.
++If both certificate restrictions and key options are present, the most
++restrictive union of the two is applied.
++.It Cm command="command"
++Specifies that the command is executed whenever this key is used for
++authentication.
++The command supplied by the user (if any) is ignored.
++The command is run on a pty if the client requests a pty;
++otherwise it is run without a tty.
++If an 8-bit clean channel is required,
++one must not request a pty or should specify
++.Cm no-pty .
++A quote may be included in the command by quoting it with a backslash.
++This option might be useful
++to restrict certain public keys to perform just a specific operation.
++An example might be a key that permits remote backups but nothing else.
++Note that the client may specify TCP and/or X11
++forwarding unless they are explicitly prohibited.
++The command originally supplied by the client is available in the
++.Ev SSH_ORIGINAL_COMMAND
++environment variable.
++Note that this option applies to shell, command or subsystem execution.
++Also note that this command may be superseded by either a
++.Xr sshd_config 4
++.Cm ForceCommand
++directive or a command embedded in a certificate.
++.It Cm environment="NAME=value"
++Specifies that the string is to be added to the environment when
++logging in using this key.
++Environment variables set this way
++override other default environment values.
++Multiple options of this type are permitted.
++Environment processing is disabled by default and is
++controlled via the
++.Cm PermitUserEnvironment
++option.
++This option is automatically disabled if
++.Cm UseLogin
++is enabled.
++.It Cm from="pattern-list"
++Specifies that in addition to public key authentication, either the canonical
++name of the remote host or its IP address must be present in the
++comma-separated list of patterns.
++See PATTERNS in
++.Xr ssh_config 4
++for more information on patterns.
++.Pp
++In addition to the wildcard matching that may be applied to hostnames or
++addresses, a
++.Cm from
++stanza may match IP addresses using CIDR address/masklen notation.
++.Pp
++The purpose of this option is to optionally increase security: public key
++authentication by itself does not trust the network or name servers or
++anything (but the key); however, if somebody somehow steals the key, the key
++permits an intruder to log in from anywhere in the world.
++This additional option makes using a stolen key more difficult (name
++servers and/or routers would have to be compromised in addition to
++just the key).
++.It Cm no-agent-forwarding
++Forbids authentication agent forwarding when this key is used for
++authentication.
++.It Cm no-port-forwarding
++Forbids TCP forwarding when this key is used for authentication.
++Any port forward requests by the client will return an error.
++This might be used, e.g. in connection with the
++.Cm command
++option.
++.It Cm no-pty
++Prevents tty allocation (a request to allocate a pty will fail).
++.It Cm no-user-rc
++Disables execution of
++.Pa ~/.ssh/rc .
++.It Cm no-X11-forwarding
++Forbids X11 forwarding when this key is used for authentication.
++Any X11 forward requests by the client will return an error.
++.It Cm permitopen="host:port"
++Limit local port forwarding with
++.Xr ssh 1
++.Fl L
++such that it may only connect to the specified host and port.
++IPv6 addresses can be specified by enclosing the address in square brackets.
++Multiple
++.Cm permitopen
++options may be applied separated by commas.
++No pattern matching is performed on the specified hostnames,
++they must be literal domains or addresses.
++A port specification of
++.Cm *
++matches any port.
++.It Cm principals="principals"
++On a
++.Cm cert-authority
++line, specifies allowed principals for certificate authentication as a
++comma-separated list.
++At least one name from the list must appear in the certificate's
++list of principals for the certificate to be accepted.
++This option is ignored for keys that are not marked as trusted certificate
++signers using the
++.Cm cert-authority
++option.
++.It Cm tunnel="n"
++Force a
++.Xr tun 4
++device on the server.
++Without this option, the next available device will be used if
++the client requests a tunnel.
++.El
++.Pp
++An example authorized_keys file:
++.Bd -literal -offset 3n
++# Comments allowed at start of line
++ssh-rsa AAAAB3Nza...LiPk== user@example.net
++from="*.sales.example.net,!pc.sales.example.net" ssh-rsa
++AAAAB2...19Q== john@example.net
++command="dump /home",no-pty,no-port-forwarding ssh-dss
++AAAAC3...51R== example.net
++permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-dss
++AAAAB5...21S==
++tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...==
++jane@example.net
++.Ed
++.Sh SSH_KNOWN_HOSTS FILE FORMAT
++The
++.Pa /etc/ssh/ssh_known_hosts
++and
++.Pa ~/.ssh/known_hosts
++files contain host public keys for all known hosts.
++The global file should
++be prepared by the administrator (optional), and the per-user file is
++maintained automatically: whenever the user connects from an unknown host,
++its key is added to the per-user file.
++.Pp
++Each line in these files contains the following fields: markers (optional),
++hostnames, bits, exponent, modulus, comment.
++The fields are separated by spaces.
++.Pp
++The marker is optional, but if it is present then it must be one of
++.Dq @cert-authority ,
++to indicate that the line contains a certification authority (CA) key,
++or
++.Dq @revoked ,
++to indicate that the key contained on the line is revoked and must not ever
++be accepted.
++Only one marker should be used on a key line.
++.Pp
++Hostnames is a comma-separated list of patterns
++.Pf ( Ql *
++and
++.Ql \&?
++act as
++wildcards); each pattern in turn is matched against the canonical host
++name (when authenticating a client) or against the user-supplied
++name (when authenticating a server).
++A pattern may also be preceded by
++.Ql \&!
++to indicate negation: if the host name matches a negated
++pattern, it is not accepted (by that line) even if it matched another
++pattern on the line.
++A hostname or address may optionally be enclosed within
++.Ql \&[
++and
++.Ql \&]
++brackets then followed by
++.Ql \&:
++and a non-standard port number.
++.Pp
++Alternately, hostnames may be stored in a hashed form which hides host names
++and addresses should the file's contents be disclosed.
++Hashed hostnames start with a
++.Ql |
++character.
++Only one hashed hostname may appear on a single line and none of the above
++negation or wildcard operators may be applied.
++.Pp
++Bits, exponent, and modulus are taken directly from the RSA host key; they
++can be obtained, for example, from
++.Pa /etc/ssh/ssh_host_key.pub .
++The optional comment field continues to the end of the line, and is not used.
++.Pp
++Lines starting with
++.Ql #
++and empty lines are ignored as comments.
++.Pp
++When performing host authentication, authentication is accepted if any
++matching line has the proper key; either one that matches exactly or,
++if the server has presented a certificate for authentication, the key
++of the certification authority that signed the certificate.
++For a key to be trusted as a certification authority, it must use the
++.Dq @cert-authority
++marker described above.
++.Pp
++The known hosts file also provides a facility to mark keys as revoked,
++for example when it is known that the associated private key has been
++stolen.
++Revoked keys are specified by including the
++.Dq @revoked
++marker at the beginning of the key line, and are never accepted for
++authentication or as certification authorities, but instead will
++produce a warning from
++.Xr ssh 1
++when they are encountered.
++.Pp
++It is permissible (but not
++recommended) to have several lines or different host keys for the same
++names.
++This will inevitably happen when short forms of host names
++from different domains are put in the file.
++It is possible
++that the files contain conflicting information; authentication is
++accepted if valid information can be found from either file.
++.Pp
++Note that the lines in these files are typically hundreds of characters
++long, and you definitely don't want to type in the host keys by hand.
++Rather, generate them by a script,
++.Xr ssh-keyscan 1
++or by taking
++.Pa /etc/ssh/ssh_host_key.pub
++and adding the host names at the front.
++.Xr ssh-keygen 1
++also offers some basic automated editing for
++.Pa ~/.ssh/known_hosts
++including removing hosts matching a host name and converting all host
++names to their hashed representations.
++.Pp
++An example ssh_known_hosts file:
++.Bd -literal -offset 3n
++# Comments allowed at start of line
++closenet,...,192.0.2.53 1024 37 159...93 closenet.example.net
++cvs.example.net,192.0.2.10 ssh-rsa AAAA1234.....=
++# A hashed hostname
++|1|JfKTdBh7rNbXkVAQCRp4OQoPfmI=|USECr3SWf1JUPsms5AqfD5QfxkM= ssh-rsa
++AAAA1234.....=
++# A revoked key
++@revoked * ssh-rsa AAAAB5W...
++# A CA key, accepted for any host in *.mydomain.com or *.mydomain.org
++@cert-authority *.mydomain.org,*.mydomain.com ssh-rsa AAAAB5W...
++.Ed
++.Sh FILES
++.Bl -tag -width Ds -compact
++.It Pa ~/.hushlogin
++This file is used to suppress printing the last login time and
++.Pa /etc/motd ,
++if
++.Cm PrintLastLog
++and
++.Cm PrintMotd ,
++respectively,
++are enabled.
++It does not suppress printing of the banner specified by
++.Cm Banner .
++.Pp
++.It Pa ~/.rhosts
++This file is used for host-based authentication (see
++.Xr ssh 1
++for more information).
++On some machines this file may need to be
++world-readable if the user's home directory is on an NFS partition,
++because
++.Nm
++reads it as root.
++Additionally, this file must be owned by the user,
++and must not have write permissions for anyone else.
++The recommended
++permission for most machines is read/write for the user, and not
++accessible by others.
++.Pp
++.It Pa ~/.shosts
++This file is used in exactly the same way as
++.Pa .rhosts ,
++but allows host-based authentication without permitting login with
++rlogin/rsh.
++.Pp
++.It Pa ~/.ssh/
++This directory is the default location for all user-specific configuration
++and authentication information.
++There is no general requirement to keep the entire contents of this directory
++secret, but the recommended permissions are read/write/execute for the user,
++and not accessible by others.
++.Pp
++.It Pa ~/.ssh/authorized_keys
++Lists the public keys (DSA, ECDSA, Ed25519, RSA)
++that can be used for logging in as this user.
++The format of this file is described above.
++The content of the file is not highly sensitive, but the recommended
++permissions are read/write for the user, and not accessible by others.
++.Pp
++If this file, the
++.Pa ~/.ssh
++directory, or the user's home directory are writable
++by other users, then the file could be modified or replaced by unauthorized
++users.
++In this case,
++.Nm
++will not allow it to be used unless the
++.Cm StrictModes
++option has been set to
++.Dq no .
++.Pp
++.It Pa ~/.ssh/environment
++This file is read into the environment at login (if it exists).
++It can only contain empty lines, comment lines (that start with
++.Ql # ) ,
++and assignment lines of the form name=value.
++The file should be writable
++only by the user; it need not be readable by anyone else.
++Environment processing is disabled by default and is
++controlled via the
++.Cm PermitUserEnvironment
++option.
++.Pp
++.It Pa ~/.ssh/known_hosts
++Contains a list of host keys for all hosts the user has logged into
++that are not already in the systemwide list of known host keys.
++The format of this file is described above.
++This file should be writable only by root/the owner and
++can, but need not be, world-readable.
++.Pp
++.It Pa ~/.ssh/rc
++Contains initialization routines to be run before
++the user's home directory becomes accessible.
++This file should be writable only by the user, and need not be
++readable by anyone else.
++.Pp
++.It Pa /etc/hosts.equiv
++This file is for host-based authentication (see
++.Xr ssh 1 ) .
++It should only be writable by root.
++.Pp
++.It Pa /etc/moduli
++Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange".
++The file format is described in
++.Xr moduli 4 .
++.Pp
++.It Pa /etc/motd
++See
++.Xr motd 5 .
++.Pp
++.It Pa /etc/nologin
++If this file exists,
++.Nm
++refuses to let anyone except root log in.
++The contents of the file
++are displayed to anyone trying to log in, and non-root connections are
++refused.
++The file should be world-readable.
++.Pp
++.It Pa /etc/shosts.equiv
++This file is used in exactly the same way as
++.Pa hosts.equiv ,
++but allows host-based authentication without permitting login with
++rlogin/rsh.
++.Pp
++.It Pa /etc/ssh/ssh_host_key
++.It Pa /etc/ssh/ssh_host_dsa_key
++.It Pa /etc/ssh/ssh_host_ecdsa_key
++.It Pa /etc/ssh/ssh_host_ed25519_key
++.It Pa /etc/ssh/ssh_host_rsa_key
++These files contain the private parts of the host keys.
++These files should only be owned by root, readable only by root, and not
++accessible to others.
++Note that
++.Nm
++does not start if these files are group/world-accessible.
++.Pp
++.It Pa /etc/ssh/ssh_host_key.pub
++.It Pa /etc/ssh/ssh_host_dsa_key.pub
++.It Pa /etc/ssh/ssh_host_ecdsa_key.pub
++.It Pa /etc/ssh/ssh_host_ed25519_key.pub
++.It Pa /etc/ssh/ssh_host_rsa_key.pub
++These files contain the public parts of the host keys.
++These files should be world-readable but writable only by
++root.
++Their contents should match the respective private parts.
++These files are not
++really used for anything; they are provided for the convenience of
++the user so their contents can be copied to known hosts files.
++These files are created using
++.Xr ssh-keygen 1 .
++.Pp
++.It Pa /etc/ssh/ssh_known_hosts
++Systemwide list of known host keys.
++This file should be prepared by the
++system administrator to contain the public host keys of all machines in the
++organization.
++The format of this file is described above.
++This file should be writable only by root/the owner and
++should be world-readable.
++.Pp
++.It Pa /etc/ssh/sshd_config
++Contains configuration data for
++.Nm sshd .
++The file format and configuration options are described in
++.Xr sshd_config 4 .
++.Pp
++.It Pa /etc/ssh/sshrc
++Similar to
++.Pa ~/.ssh/rc ,
++it can be used to specify
++machine-specific login-time initializations globally.
++This file should be writable only by root, and should be world-readable.
++.Pp
++.It Pa /var/empty
++.Xr chroot 2
++directory used by
++.Nm
++during privilege separation in the pre-authentication phase.
++The directory should not contain any files and must be owned by root
++and not group or world-writable.
++.Pp
++.It Pa /var/run/sshd.pid
++Contains the process ID of the
++.Nm
++listening for connections (if there are several daemons running
++concurrently for different ports, this contains the process ID of the one
++started last).
++The content of this file is not sensitive; it can be world-readable.
++.El
++.Sh SEE ALSO
++.Xr scp 1 ,
++.Xr sftp 1 ,
++.Xr ssh 1 ,
++.Xr ssh-add 1 ,
++.Xr ssh-agent 1 ,
++.Xr ssh-keygen 1 ,
++.Xr ssh-keyscan 1 ,
++.Xr chroot 2 ,
++.Xr login.conf 5 ,
++.Xr moduli 4 ,
++.Xr sshd_config 4 ,
++.Xr inetd 1M ,
++.Xr sftp-server 1M
++.Sh AUTHORS
++OpenSSH is a derivative of the original and free
++ssh 1.2.12 release by Tatu Ylonen.
++Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
++Theo de Raadt and Dug Song
++removed many bugs, re-added newer features and
++created OpenSSH.
++Markus Friedl contributed the support for SSH
++protocol versions 1.5 and 2.0.
++Niels Provos and Markus Friedl contributed support
++for privilege separation.
+diff --git a/sshd.8 b/sshd.8
+deleted file mode 100644
+index 213b5fc..0000000
+--- a/sshd.8
++++ /dev/null
+@@ -1,971 +0,0 @@
+-.\"
+-.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
+-.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
+-.\"                    All rights reserved
+-.\"
+-.\" As far as I am concerned, the code I have written for this software
+-.\" can be used freely for any purpose.  Any derived versions of this
+-.\" software must be clearly marked as such, and if the derived work is
+-.\" incompatible with the protocol description in the RFC file, it must be
+-.\" called by a name other than "ssh" or "Secure Shell".
+-.\"
+-.\" Copyright (c) 1999,2000 Markus Friedl.  All rights reserved.
+-.\" Copyright (c) 1999 Aaron Campbell.  All rights reserved.
+-.\" Copyright (c) 1999 Theo de Raadt.  All rights reserved.
+-.\"
+-.\" Redistribution and use in source and binary forms, with or without
+-.\" modification, are permitted provided that the following conditions
+-.\" are met:
+-.\" 1. Redistributions of source code must retain the above copyright
+-.\"    notice, this list of conditions and the following disclaimer.
+-.\" 2. Redistributions in binary form must reproduce the above copyright
+-.\"    notice, this list of conditions and the following disclaimer in the
+-.\"    documentation and/or other materials provided with the distribution.
+-.\"
+-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+-.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+-.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+-.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+-.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+-.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+-.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+-.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+-.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-.\"
+-.\" $OpenBSD: sshd.8,v 1.280 2015/07/03 03:49:45 djm Exp $
+-.Dd $Mdocdate: July 3 2015 $
+-.Dt SSHD 8
+-.Os
+-.Sh NAME
+-.Nm sshd
+-.Nd OpenSSH SSH daemon
+-.Sh SYNOPSIS
+-.Nm sshd
+-.Bk -words
+-.Op Fl 46DdeiqTt
+-.Op Fl b Ar bits
+-.Op Fl C Ar connection_spec
+-.Op Fl c Ar host_certificate_file
+-.Op Fl E Ar log_file
+-.Op Fl f Ar config_file
+-.Op Fl g Ar login_grace_time
+-.Op Fl h Ar host_key_file
+-.Op Fl k Ar key_gen_time
+-.Op Fl o Ar option
+-.Op Fl p Ar port
+-.Op Fl u Ar len
+-.Ek
+-.Sh DESCRIPTION
+-.Nm
+-(OpenSSH Daemon) is the daemon program for
+-.Xr ssh 1 .
+-Together these programs replace rlogin and rsh,
+-and provide secure encrypted communications between two untrusted hosts
+-over an insecure network.
+-.Pp
+-.Nm
+-listens for connections from clients.
+-It is normally started at boot from
+-.Pa /etc/rc .
+-It forks a new
+-daemon for each incoming connection.
+-The forked daemons handle
+-key exchange, encryption, authentication, command execution,
+-and data exchange.
+-.Pp
+-.Nm
+-can be configured using command-line options or a configuration file
+-(by default
+-.Xr sshd_config 5 ) ;
+-command-line options override values specified in the
+-configuration file.
+-.Nm
+-rereads its configuration file when it receives a hangup signal,
+-.Dv SIGHUP ,
+-by executing itself with the name and options it was started with, e.g.\&
+-.Pa /usr/sbin/sshd .
+-.Pp
+-The options are as follows:
+-.Bl -tag -width Ds
+-.It Fl 4
+-Forces
+-.Nm
+-to use IPv4 addresses only.
+-.It Fl 6
+-Forces
+-.Nm
+-to use IPv6 addresses only.
+-.It Fl b Ar bits
+-Specifies the number of bits in the ephemeral protocol version 1
+-server key (default 1024).
+-.It Fl C Ar connection_spec
+-Specify the connection parameters to use for the
+-.Fl T
+-extended test mode.
+-If provided, any
+-.Cm Match
+-directives in the configuration file
+-that would apply to the specified user, host, and address will be set before
+-the configuration is written to standard output.
+-The connection parameters are supplied as keyword=value pairs.
+-The keywords are
+-.Dq user ,
+-.Dq host ,
+-.Dq laddr ,
+-.Dq lport ,
+-and
+-.Dq addr .
+-All are required and may be supplied in any order, either with multiple
+-.Fl C
+-options or as a comma-separated list.
+-.It Fl c Ar host_certificate_file
+-Specifies a path to a certificate file to identify
+-.Nm
+-during key exchange.
+-The certificate file must match a host key file specified using the
+-.Fl h
+-option or the
+-.Cm HostKey
+-configuration directive.
+-.It Fl D
+-When this option is specified,
+-.Nm
+-will not detach and does not become a daemon.
+-This allows easy monitoring of
+-.Nm sshd .
+-.It Fl d
+-Debug mode.
+-The server sends verbose debug output to standard error,
+-and does not put itself in the background.
+-The server also will not fork and will only process one connection.
+-This option is only intended for debugging for the server.
+-Multiple
+-.Fl d
+-options increase the debugging level.
+-Maximum is 3.
+-.It Fl E Ar log_file
+-Append debug logs to
+-.Ar log_file
+-instead of the system log.
+-.It Fl e
+-Write debug logs to standard error instead of the system log.
+-.It Fl f Ar config_file
+-Specifies the name of the configuration file.
+-The default is
+-.Pa /etc/ssh/sshd_config .
+-.Nm
+-refuses to start if there is no configuration file.
+-.It Fl g Ar login_grace_time
+-Gives the grace time for clients to authenticate themselves (default
+-120 seconds).
+-If the client fails to authenticate the user within
+-this many seconds, the server disconnects and exits.
+-A value of zero indicates no limit.
+-.It Fl h Ar host_key_file
+-Specifies a file from which a host key is read.
+-This option must be given if
+-.Nm
+-is not run as root (as the normal
+-host key files are normally not readable by anyone but root).
+-The default is
+-.Pa /etc/ssh/ssh_host_key
+-for protocol version 1, and
+-.Pa /etc/ssh/ssh_host_dsa_key ,
+-.Pa /etc/ssh/ssh_host_ecdsa_key .
+-.Pa /etc/ssh/ssh_host_ed25519_key
+-and
+-.Pa /etc/ssh/ssh_host_rsa_key
+-for protocol version 2.
+-It is possible to have multiple host key files for
+-the different protocol versions and host key algorithms.
+-.It Fl i
+-Specifies that
+-.Nm
+-is being run from
+-.Xr inetd 8 .
+-If SSH protocol 1 is enabled,
+-.Nm
+-should not  normally be run
+-from inetd because it needs to generate the server key before it can
+-respond to the client, and this may take some time.
+-Clients may have to wait too long if the key was regenerated every time.
+-.It Fl k Ar key_gen_time
+-Specifies how often the ephemeral protocol version 1 server key is
+-regenerated (default 3600 seconds, or one hour).
+-The motivation for regenerating the key fairly
+-often is that the key is not stored anywhere, and after about an hour
+-it becomes impossible to recover the key for decrypting intercepted
+-communications even if the machine is cracked into or physically
+-seized.
+-A value of zero indicates that the key will never be regenerated.
+-.It Fl o Ar option
+-Can be used to give options in the format used in the configuration file.
+-This is useful for specifying options for which there is no separate
+-command-line flag.
+-For full details of the options, and their values, see
+-.Xr sshd_config 5 .
+-.It Fl p Ar port
+-Specifies the port on which the server listens for connections
+-(default 22).
+-Multiple port options are permitted.
+-Ports specified in the configuration file with the
+-.Cm Port
+-option are ignored when a command-line port is specified.
+-Ports specified using the
+-.Cm ListenAddress
+-option override command-line ports.
+-.It Fl q
+-Quiet mode.
+-Nothing is sent to the system log.
+-Normally the beginning,
+-authentication, and termination of each connection is logged.
+-.It Fl T
+-Extended test mode.
+-Check the validity of the configuration file, output the effective configuration
+-to stdout and then exit.
+-Optionally,
+-.Cm Match
+-rules may be applied by specifying the connection parameters using one or more
+-.Fl C
+-options.
+-.It Fl t
+-Test mode.
+-Only check the validity of the configuration file and sanity of the keys.
+-This is useful for updating
+-.Nm
+-reliably as configuration options may change.
+-.It Fl u Ar len
+-This option is used to specify the size of the field
+-in the
+-.Li utmp
+-structure that holds the remote host name.
+-If the resolved host name is longer than
+-.Ar len ,
+-the dotted decimal value will be used instead.
+-This allows hosts with very long host names that
+-overflow this field to still be uniquely identified.
+-Specifying
+-.Fl u0
+-indicates that only dotted decimal addresses
+-should be put into the
+-.Pa utmp
+-file.
+-.Fl u0
+-may also be used to prevent
+-.Nm
+-from making DNS requests unless the authentication
+-mechanism or configuration requires it.
+-Authentication mechanisms that may require DNS include
+-.Cm RhostsRSAAuthentication ,
+-.Cm HostbasedAuthentication ,
+-and using a
+-.Cm from="pattern-list"
+-option in a key file.
+-Configuration options that require DNS include using a
+-USER@HOST pattern in
+-.Cm AllowUsers
+-or
+-.Cm DenyUsers .
+-.El
+-.Sh AUTHENTICATION
+-The OpenSSH SSH daemon supports SSH protocols 1 and 2.
+-The default is to use protocol 2 only,
+-though this can be changed via the
+-.Cm Protocol
+-option in
+-.Xr sshd_config 5 .
+-Protocol 2 supports DSA, ECDSA, Ed25519 and RSA keys;
+-protocol 1 only supports RSA keys.
+-For both protocols,
+-each host has a host-specific key,
+-normally 2048 bits,
+-used to identify the host.
+-.Pp
+-Forward security for protocol 1 is provided through
+-an additional server key,
+-normally 1024 bits,
+-generated when the server starts.
+-This key is normally regenerated every hour if it has been used, and
+-is never stored on disk.
+-Whenever a client connects, the daemon responds with its public
+-host and server keys.
+-The client compares the
+-RSA host key against its own database to verify that it has not changed.
+-The client then generates a 256-bit random number.
+-It encrypts this
+-random number using both the host key and the server key, and sends
+-the encrypted number to the server.
+-Both sides then use this
+-random number as a session key which is used to encrypt all further
+-communications in the session.
+-The rest of the session is encrypted
+-using a conventional cipher, currently Blowfish or 3DES, with 3DES
+-being used by default.
+-The client selects the encryption algorithm
+-to use from those offered by the server.
+-.Pp
+-For protocol 2,
+-forward security is provided through a Diffie-Hellman key agreement.
+-This key agreement results in a shared session key.
+-The rest of the session is encrypted using a symmetric cipher, currently
+-128-bit AES, Blowfish, 3DES, CAST128, Arcfour, 192-bit AES, or 256-bit AES.
+-The client selects the encryption algorithm
+-to use from those offered by the server.
+-Additionally, session integrity is provided
+-through a cryptographic message authentication code
+-(hmac-md5, hmac-sha1, umac-64, umac-128, hmac-ripemd160,
+-hmac-sha2-256 or hmac-sha2-512).
+-.Pp
+-Finally, the server and the client enter an authentication dialog.
+-The client tries to authenticate itself using
+-host-based authentication,
+-public key authentication,
+-challenge-response authentication,
+-or password authentication.
+-.Pp
+-Regardless of the authentication type, the account is checked to
+-ensure that it is accessible.  An account is not accessible if it is
+-locked, listed in
+-.Cm DenyUsers
+-or its group is listed in
+-.Cm DenyGroups
+-\&.  The definition of a locked account is system dependant. Some platforms
+-have their own account database (eg AIX) and some modify the passwd field (
+-.Ql \&*LK\&*
+-on Solaris and UnixWare,
+-.Ql \&*
+-on HP-UX, containing
+-.Ql Nologin
+-on Tru64,
+-a leading
+-.Ql \&*LOCKED\&*
+-on FreeBSD and a leading
+-.Ql \&!
+-on most Linuxes).
+-If there is a requirement to disable password authentication
+-for the account while allowing still public-key, then the passwd field
+-should be set to something other than these values (eg
+-.Ql NP
+-or
+-.Ql \&*NP\&*
+-).
+-.Pp
+-If the client successfully authenticates itself, a dialog for
+-preparing the session is entered.
+-At this time the client may request
+-things like allocating a pseudo-tty, forwarding X11 connections,
+-forwarding TCP connections, or forwarding the authentication agent
+-connection over the secure channel.
+-.Pp
+-After this, the client either requests a shell or execution of a command.
+-The sides then enter session mode.
+-In this mode, either side may send
+-data at any time, and such data is forwarded to/from the shell or
+-command on the server side, and the user terminal in the client side.
+-.Pp
+-When the user program terminates and all forwarded X11 and other
+-connections have been closed, the server sends command exit status to
+-the client, and both sides exit.
+-.Sh LOGIN PROCESS
+-When a user successfully logs in,
+-.Nm
+-does the following:
+-.Bl -enum -offset indent
+-.It
+-If the login is on a tty, and no command has been specified,
+-prints last login time and
+-.Pa /etc/motd
+-(unless prevented in the configuration file or by
+-.Pa ~/.hushlogin ;
+-see the
+-.Sx FILES
+-section).
+-.It
+-If the login is on a tty, records login time.
+-.It
+-Checks
+-.Pa /etc/nologin ;
+-if it exists, prints contents and quits
+-(unless root).
+-.It
+-Changes to run with normal user privileges.
+-.It
+-Sets up basic environment.
+-.It
+-Reads the file
+-.Pa ~/.ssh/environment ,
+-if it exists, and users are allowed to change their environment.
+-See the
+-.Cm PermitUserEnvironment
+-option in
+-.Xr sshd_config 5 .
+-.It
+-Changes to user's home directory.
+-.It
+-If
+-.Pa ~/.ssh/rc
+-exists and the
+-.Xr sshd_config 5
+-.Cm PermitUserRC
+-option is set, runs it; else if
+-.Pa /etc/ssh/sshrc
+-exists, runs
+-it; otherwise runs xauth.
+-The
+-.Dq rc
+-files are given the X11
+-authentication protocol and cookie in standard input.
+-See
+-.Sx SSHRC ,
+-below.
+-.It
+-Runs user's shell or command.
+-All commands are run under the user's login shell as specified in the
+-system password database.
+-.El
+-.Sh SSHRC
+-If the file
+-.Pa ~/.ssh/rc
+-exists,
+-.Xr sh 1
+-runs it after reading the
+-environment files but before starting the user's shell or command.
+-It must not produce any output on stdout; stderr must be used
+-instead.
+-If X11 forwarding is in use, it will receive the "proto cookie" pair in
+-its standard input (and
+-.Ev DISPLAY
+-in its environment).
+-The script must call
+-.Xr xauth 1
+-because
+-.Nm
+-will not run xauth automatically to add X11 cookies.
+-.Pp
+-The primary purpose of this file is to run any initialization routines
+-which may be needed before the user's home directory becomes
+-accessible; AFS is a particular example of such an environment.
+-.Pp
+-This file will probably contain some initialization code followed by
+-something similar to:
+-.Bd -literal -offset 3n
+-if read proto cookie && [ -n "$DISPLAY" ]; then
+-	if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
+-		# X11UseLocalhost=yes
+-		echo add unix:`echo $DISPLAY |
+-		    cut -c11-` $proto $cookie
+-	else
+-		# X11UseLocalhost=no
+-		echo add $DISPLAY $proto $cookie
+-	fi | xauth -q -
+-fi
+-.Ed
+-.Pp
+-If this file does not exist,
+-.Pa /etc/ssh/sshrc
+-is run, and if that
+-does not exist either, xauth is used to add the cookie.
+-.Sh AUTHORIZED_KEYS FILE FORMAT
+-.Cm AuthorizedKeysFile
+-specifies the files containing public keys for
+-public key authentication;
+-if none is specified, the default is
+-.Pa ~/.ssh/authorized_keys
+-and
+-.Pa ~/.ssh/authorized_keys2 .
+-Each line of the file contains one
+-key (empty lines and lines starting with a
+-.Ql #
+-are ignored as
+-comments).
+-Protocol 1 public keys consist of the following space-separated fields:
+-options, bits, exponent, modulus, comment.
+-Protocol 2 public key consist of:
+-options, keytype, base64-encoded key, comment.
+-The options field is optional;
+-its presence is determined by whether the line starts
+-with a number or not (the options field never starts with a number).
+-The bits, exponent, modulus, and comment fields give the RSA key for
+-protocol version 1; the
+-comment field is not used for anything (but may be convenient for the
+-user to identify the key).
+-For protocol version 2 the keytype is
+-.Dq ecdsa-sha2-nistp256 ,
+-.Dq ecdsa-sha2-nistp384 ,
+-.Dq ecdsa-sha2-nistp521 ,
+-.Dq ssh-ed25519 ,
+-.Dq ssh-dss
+-or
+-.Dq ssh-rsa .
+-.Pp
+-Note that lines in this file are usually several hundred bytes long
+-(because of the size of the public key encoding) up to a limit of
+-8 kilobytes, which permits DSA keys up to 8 kilobits and RSA
+-keys up to 16 kilobits.
+-You don't want to type them in; instead, copy the
+-.Pa identity.pub ,
+-.Pa id_dsa.pub ,
+-.Pa id_ecdsa.pub ,
+-.Pa id_ed25519.pub ,
+-or the
+-.Pa id_rsa.pub
+-file and edit it.
+-.Pp
+-.Nm
+-enforces a minimum RSA key modulus size for protocol 1
+-and protocol 2 keys of 768 bits.
+-.Pp
+-The options (if present) consist of comma-separated option
+-specifications.
+-No spaces are permitted, except within double quotes.
+-The following option specifications are supported (note
+-that option keywords are case-insensitive):
+-.Bl -tag -width Ds
+-.It Cm cert-authority
+-Specifies that the listed key is a certification authority (CA) that is
+-trusted to validate signed certificates for user authentication.
+-.Pp
+-Certificates may encode access restrictions similar to these key options.
+-If both certificate restrictions and key options are present, the most
+-restrictive union of the two is applied.
+-.It Cm command="command"
+-Specifies that the command is executed whenever this key is used for
+-authentication.
+-The command supplied by the user (if any) is ignored.
+-The command is run on a pty if the client requests a pty;
+-otherwise it is run without a tty.
+-If an 8-bit clean channel is required,
+-one must not request a pty or should specify
+-.Cm no-pty .
+-A quote may be included in the command by quoting it with a backslash.
+-This option might be useful
+-to restrict certain public keys to perform just a specific operation.
+-An example might be a key that permits remote backups but nothing else.
+-Note that the client may specify TCP and/or X11
+-forwarding unless they are explicitly prohibited.
+-The command originally supplied by the client is available in the
+-.Ev SSH_ORIGINAL_COMMAND
+-environment variable.
+-Note that this option applies to shell, command or subsystem execution.
+-Also note that this command may be superseded by either a
+-.Xr sshd_config 5
+-.Cm ForceCommand
+-directive or a command embedded in a certificate.
+-.It Cm environment="NAME=value"
+-Specifies that the string is to be added to the environment when
+-logging in using this key.
+-Environment variables set this way
+-override other default environment values.
+-Multiple options of this type are permitted.
+-Environment processing is disabled by default and is
+-controlled via the
+-.Cm PermitUserEnvironment
+-option.
+-This option is automatically disabled if
+-.Cm UseLogin
+-is enabled.
+-.It Cm from="pattern-list"
+-Specifies that in addition to public key authentication, either the canonical
+-name of the remote host or its IP address must be present in the
+-comma-separated list of patterns.
+-See PATTERNS in
+-.Xr ssh_config 5
+-for more information on patterns.
+-.Pp
+-In addition to the wildcard matching that may be applied to hostnames or
+-addresses, a
+-.Cm from
+-stanza may match IP addresses using CIDR address/masklen notation.
+-.Pp
+-The purpose of this option is to optionally increase security: public key
+-authentication by itself does not trust the network or name servers or
+-anything (but the key); however, if somebody somehow steals the key, the key
+-permits an intruder to log in from anywhere in the world.
+-This additional option makes using a stolen key more difficult (name
+-servers and/or routers would have to be compromised in addition to
+-just the key).
+-.It Cm no-agent-forwarding
+-Forbids authentication agent forwarding when this key is used for
+-authentication.
+-.It Cm no-port-forwarding
+-Forbids TCP forwarding when this key is used for authentication.
+-Any port forward requests by the client will return an error.
+-This might be used, e.g. in connection with the
+-.Cm command
+-option.
+-.It Cm no-pty
+-Prevents tty allocation (a request to allocate a pty will fail).
+-.It Cm no-user-rc
+-Disables execution of
+-.Pa ~/.ssh/rc .
+-.It Cm no-X11-forwarding
+-Forbids X11 forwarding when this key is used for authentication.
+-Any X11 forward requests by the client will return an error.
+-.It Cm permitopen="host:port"
+-Limit local port forwarding with
+-.Xr ssh 1
+-.Fl L
+-such that it may only connect to the specified host and port.
+-IPv6 addresses can be specified by enclosing the address in square brackets.
+-Multiple
+-.Cm permitopen
+-options may be applied separated by commas.
+-No pattern matching is performed on the specified hostnames,
+-they must be literal domains or addresses.
+-A port specification of
+-.Cm *
+-matches any port.
+-.It Cm principals="principals"
+-On a
+-.Cm cert-authority
+-line, specifies allowed principals for certificate authentication as a
+-comma-separated list.
+-At least one name from the list must appear in the certificate's
+-list of principals for the certificate to be accepted.
+-This option is ignored for keys that are not marked as trusted certificate
+-signers using the
+-.Cm cert-authority
+-option.
+-.It Cm tunnel="n"
+-Force a
+-.Xr tun 4
+-device on the server.
+-Without this option, the next available device will be used if
+-the client requests a tunnel.
+-.El
+-.Pp
+-An example authorized_keys file:
+-.Bd -literal -offset 3n
+-# Comments allowed at start of line
+-ssh-rsa AAAAB3Nza...LiPk== user@example.net
+-from="*.sales.example.net,!pc.sales.example.net" ssh-rsa
+-AAAAB2...19Q== john@example.net
+-command="dump /home",no-pty,no-port-forwarding ssh-dss
+-AAAAC3...51R== example.net
+-permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-dss
+-AAAAB5...21S==
+-tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...==
+-jane@example.net
+-.Ed
+-.Sh SSH_KNOWN_HOSTS FILE FORMAT
+-The
+-.Pa /etc/ssh/ssh_known_hosts
+-and
+-.Pa ~/.ssh/known_hosts
+-files contain host public keys for all known hosts.
+-The global file should
+-be prepared by the administrator (optional), and the per-user file is
+-maintained automatically: whenever the user connects from an unknown host,
+-its key is added to the per-user file.
+-.Pp
+-Each line in these files contains the following fields: markers (optional),
+-hostnames, bits, exponent, modulus, comment.
+-The fields are separated by spaces.
+-.Pp
+-The marker is optional, but if it is present then it must be one of
+-.Dq @cert-authority ,
+-to indicate that the line contains a certification authority (CA) key,
+-or
+-.Dq @revoked ,
+-to indicate that the key contained on the line is revoked and must not ever
+-be accepted.
+-Only one marker should be used on a key line.
+-.Pp
+-Hostnames is a comma-separated list of patterns
+-.Pf ( Ql *
+-and
+-.Ql \&?
+-act as
+-wildcards); each pattern in turn is matched against the canonical host
+-name (when authenticating a client) or against the user-supplied
+-name (when authenticating a server).
+-A pattern may also be preceded by
+-.Ql \&!
+-to indicate negation: if the host name matches a negated
+-pattern, it is not accepted (by that line) even if it matched another
+-pattern on the line.
+-A hostname or address may optionally be enclosed within
+-.Ql \&[
+-and
+-.Ql \&]
+-brackets then followed by
+-.Ql \&:
+-and a non-standard port number.
+-.Pp
+-Alternately, hostnames may be stored in a hashed form which hides host names
+-and addresses should the file's contents be disclosed.
+-Hashed hostnames start with a
+-.Ql |
+-character.
+-Only one hashed hostname may appear on a single line and none of the above
+-negation or wildcard operators may be applied.
+-.Pp
+-Bits, exponent, and modulus are taken directly from the RSA host key; they
+-can be obtained, for example, from
+-.Pa /etc/ssh/ssh_host_key.pub .
+-The optional comment field continues to the end of the line, and is not used.
+-.Pp
+-Lines starting with
+-.Ql #
+-and empty lines are ignored as comments.
+-.Pp
+-When performing host authentication, authentication is accepted if any
+-matching line has the proper key; either one that matches exactly or,
+-if the server has presented a certificate for authentication, the key
+-of the certification authority that signed the certificate.
+-For a key to be trusted as a certification authority, it must use the
+-.Dq @cert-authority
+-marker described above.
+-.Pp
+-The known hosts file also provides a facility to mark keys as revoked,
+-for example when it is known that the associated private key has been
+-stolen.
+-Revoked keys are specified by including the
+-.Dq @revoked
+-marker at the beginning of the key line, and are never accepted for
+-authentication or as certification authorities, but instead will
+-produce a warning from
+-.Xr ssh 1
+-when they are encountered.
+-.Pp
+-It is permissible (but not
+-recommended) to have several lines or different host keys for the same
+-names.
+-This will inevitably happen when short forms of host names
+-from different domains are put in the file.
+-It is possible
+-that the files contain conflicting information; authentication is
+-accepted if valid information can be found from either file.
+-.Pp
+-Note that the lines in these files are typically hundreds of characters
+-long, and you definitely don't want to type in the host keys by hand.
+-Rather, generate them by a script,
+-.Xr ssh-keyscan 1
+-or by taking
+-.Pa /etc/ssh/ssh_host_key.pub
+-and adding the host names at the front.
+-.Xr ssh-keygen 1
+-also offers some basic automated editing for
+-.Pa ~/.ssh/known_hosts
+-including removing hosts matching a host name and converting all host
+-names to their hashed representations.
+-.Pp
+-An example ssh_known_hosts file:
+-.Bd -literal -offset 3n
+-# Comments allowed at start of line
+-closenet,...,192.0.2.53 1024 37 159...93 closenet.example.net
+-cvs.example.net,192.0.2.10 ssh-rsa AAAA1234.....=
+-# A hashed hostname
+-|1|JfKTdBh7rNbXkVAQCRp4OQoPfmI=|USECr3SWf1JUPsms5AqfD5QfxkM= ssh-rsa
+-AAAA1234.....=
+-# A revoked key
+-@revoked * ssh-rsa AAAAB5W...
+-# A CA key, accepted for any host in *.mydomain.com or *.mydomain.org
+-@cert-authority *.mydomain.org,*.mydomain.com ssh-rsa AAAAB5W...
+-.Ed
+-.Sh FILES
+-.Bl -tag -width Ds -compact
+-.It Pa ~/.hushlogin
+-This file is used to suppress printing the last login time and
+-.Pa /etc/motd ,
+-if
+-.Cm PrintLastLog
+-and
+-.Cm PrintMotd ,
+-respectively,
+-are enabled.
+-It does not suppress printing of the banner specified by
+-.Cm Banner .
+-.Pp
+-.It Pa ~/.rhosts
+-This file is used for host-based authentication (see
+-.Xr ssh 1
+-for more information).
+-On some machines this file may need to be
+-world-readable if the user's home directory is on an NFS partition,
+-because
+-.Nm
+-reads it as root.
+-Additionally, this file must be owned by the user,
+-and must not have write permissions for anyone else.
+-The recommended
+-permission for most machines is read/write for the user, and not
+-accessible by others.
+-.Pp
+-.It Pa ~/.shosts
+-This file is used in exactly the same way as
+-.Pa .rhosts ,
+-but allows host-based authentication without permitting login with
+-rlogin/rsh.
+-.Pp
+-.It Pa ~/.ssh/
+-This directory is the default location for all user-specific configuration
+-and authentication information.
+-There is no general requirement to keep the entire contents of this directory
+-secret, but the recommended permissions are read/write/execute for the user,
+-and not accessible by others.
+-.Pp
+-.It Pa ~/.ssh/authorized_keys
+-Lists the public keys (DSA, ECDSA, Ed25519, RSA)
+-that can be used for logging in as this user.
+-The format of this file is described above.
+-The content of the file is not highly sensitive, but the recommended
+-permissions are read/write for the user, and not accessible by others.
+-.Pp
+-If this file, the
+-.Pa ~/.ssh
+-directory, or the user's home directory are writable
+-by other users, then the file could be modified or replaced by unauthorized
+-users.
+-In this case,
+-.Nm
+-will not allow it to be used unless the
+-.Cm StrictModes
+-option has been set to
+-.Dq no .
+-.Pp
+-.It Pa ~/.ssh/environment
+-This file is read into the environment at login (if it exists).
+-It can only contain empty lines, comment lines (that start with
+-.Ql # ) ,
+-and assignment lines of the form name=value.
+-The file should be writable
+-only by the user; it need not be readable by anyone else.
+-Environment processing is disabled by default and is
+-controlled via the
+-.Cm PermitUserEnvironment
+-option.
+-.Pp
+-.It Pa ~/.ssh/known_hosts
+-Contains a list of host keys for all hosts the user has logged into
+-that are not already in the systemwide list of known host keys.
+-The format of this file is described above.
+-This file should be writable only by root/the owner and
+-can, but need not be, world-readable.
+-.Pp
+-.It Pa ~/.ssh/rc
+-Contains initialization routines to be run before
+-the user's home directory becomes accessible.
+-This file should be writable only by the user, and need not be
+-readable by anyone else.
+-.Pp
+-.It Pa /etc/hosts.equiv
+-This file is for host-based authentication (see
+-.Xr ssh 1 ) .
+-It should only be writable by root.
+-.Pp
+-.It Pa /etc/moduli
+-Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange".
+-The file format is described in
+-.Xr moduli 5 .
+-.Pp
+-.It Pa /etc/motd
+-See
+-.Xr motd 5 .
+-.Pp
+-.It Pa /etc/nologin
+-If this file exists,
+-.Nm
+-refuses to let anyone except root log in.
+-The contents of the file
+-are displayed to anyone trying to log in, and non-root connections are
+-refused.
+-The file should be world-readable.
+-.Pp
+-.It Pa /etc/shosts.equiv
+-This file is used in exactly the same way as
+-.Pa hosts.equiv ,
+-but allows host-based authentication without permitting login with
+-rlogin/rsh.
+-.Pp
+-.It Pa /etc/ssh/ssh_host_key
+-.It Pa /etc/ssh/ssh_host_dsa_key
+-.It Pa /etc/ssh/ssh_host_ecdsa_key
+-.It Pa /etc/ssh/ssh_host_ed25519_key
+-.It Pa /etc/ssh/ssh_host_rsa_key
+-These files contain the private parts of the host keys.
+-These files should only be owned by root, readable only by root, and not
+-accessible to others.
+-Note that
+-.Nm
+-does not start if these files are group/world-accessible.
+-.Pp
+-.It Pa /etc/ssh/ssh_host_key.pub
+-.It Pa /etc/ssh/ssh_host_dsa_key.pub
+-.It Pa /etc/ssh/ssh_host_ecdsa_key.pub
+-.It Pa /etc/ssh/ssh_host_ed25519_key.pub
+-.It Pa /etc/ssh/ssh_host_rsa_key.pub
+-These files contain the public parts of the host keys.
+-These files should be world-readable but writable only by
+-root.
+-Their contents should match the respective private parts.
+-These files are not
+-really used for anything; they are provided for the convenience of
+-the user so their contents can be copied to known hosts files.
+-These files are created using
+-.Xr ssh-keygen 1 .
+-.Pp
+-.It Pa /etc/ssh/ssh_known_hosts
+-Systemwide list of known host keys.
+-This file should be prepared by the
+-system administrator to contain the public host keys of all machines in the
+-organization.
+-The format of this file is described above.
+-This file should be writable only by root/the owner and
+-should be world-readable.
+-.Pp
+-.It Pa /etc/ssh/sshd_config
+-Contains configuration data for
+-.Nm sshd .
+-The file format and configuration options are described in
+-.Xr sshd_config 5 .
+-.Pp
+-.It Pa /etc/ssh/sshrc
+-Similar to
+-.Pa ~/.ssh/rc ,
+-it can be used to specify
+-machine-specific login-time initializations globally.
+-This file should be writable only by root, and should be world-readable.
+-.Pp
+-.It Pa /var/empty
+-.Xr chroot 2
+-directory used by
+-.Nm
+-during privilege separation in the pre-authentication phase.
+-The directory should not contain any files and must be owned by root
+-and not group or world-writable.
+-.Pp
+-.It Pa /var/run/sshd.pid
+-Contains the process ID of the
+-.Nm
+-listening for connections (if there are several daemons running
+-concurrently for different ports, this contains the process ID of the one
+-started last).
+-The content of this file is not sensitive; it can be world-readable.
+-.El
+-.Sh SEE ALSO
+-.Xr scp 1 ,
+-.Xr sftp 1 ,
+-.Xr ssh 1 ,
+-.Xr ssh-add 1 ,
+-.Xr ssh-agent 1 ,
+-.Xr ssh-keygen 1 ,
+-.Xr ssh-keyscan 1 ,
+-.Xr chroot 2 ,
+-.Xr login.conf 5 ,
+-.Xr moduli 5 ,
+-.Xr sshd_config 5 ,
+-.Xr inetd 8 ,
+-.Xr sftp-server 8
+-.Sh AUTHORS
+-OpenSSH is a derivative of the original and free
+-ssh 1.2.12 release by Tatu Ylonen.
+-Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
+-Theo de Raadt and Dug Song
+-removed many bugs, re-added newer features and
+-created OpenSSH.
+-Markus Friedl contributed the support for SSH
+-protocol versions 1.5 and 2.0.
+-Niels Provos and Markus Friedl contributed support
+-for privilege separation.
+diff --git a/sshd_config.4 b/sshd_config.4
+new file mode 100644
+index 0000000..ba4d79a
+--- /dev/null
++++ b/sshd_config.4
+@@ -0,0 +1,1736 @@
++.\"
++.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
++.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
++.\"                    All rights reserved
++.\"
++.\" As far as I am concerned, the code I have written for this software
++.\" can be used freely for any purpose.  Any derived versions of this
++.\" software must be clearly marked as such, and if the derived work is
++.\" incompatible with the protocol description in the RFC file, it must be
++.\" called by a name other than "ssh" or "Secure Shell".
++.\"
++.\" Copyright (c) 1999,2000 Markus Friedl.  All rights reserved.
++.\" Copyright (c) 1999 Aaron Campbell.  All rights reserved.
++.\" Copyright (c) 1999 Theo de Raadt.  All rights reserved.
++.\"
++.\" Redistribution and use in source and binary forms, with or without
++.\" modification, are permitted provided that the following conditions
++.\" are met:
++.\" 1. Redistributions of source code must retain the above copyright
++.\"    notice, this list of conditions and the following disclaimer.
++.\" 2. Redistributions in binary form must reproduce the above copyright
++.\"    notice, this list of conditions and the following disclaimer in the
++.\"    documentation and/or other materials provided with the distribution.
++.\"
++.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
++.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
++.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
++.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
++.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
++.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
++.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++.\"
++.\" $OpenBSD: sshd_config.5,v 1.211 2015/08/14 15:32:41 jmc Exp $
++.Dd $Mdocdate: August 14 2015 $
++.Dt SSHD_CONFIG 4
++.Os
++.Sh NAME
++.Nm sshd_config
++.Nd OpenSSH SSH daemon configuration file
++.Sh SYNOPSIS
++.Nm /etc/ssh/sshd_config
++.Sh DESCRIPTION
++.Xr sshd 1M
++reads configuration data from
++.Pa /etc/ssh/sshd_config
++(or the file specified with
++.Fl f
++on the command line).
++The file contains keyword-argument pairs, one per line.
++Lines starting with
++.Ql #
++and empty lines are interpreted as comments.
++Arguments may optionally be enclosed in double quotes
++.Pq \&"
++in order to represent arguments containing spaces.
++.Pp
++The possible
++keywords and their meanings are as follows (note that
++keywords are case-insensitive and arguments are case-sensitive):
++.Bl -tag -width Ds
++.It Cm AcceptEnv
++Specifies what environment variables sent by the client will be copied into
++the session's
++.Xr environ 7 .
++See
++.Cm SendEnv
++in
++.Xr ssh_config 4
++for how to configure the client.
++Note that environment passing is only supported for protocol 2, and
++that the
++.Ev TERM
++environment variable is always sent whenever the client
++requests a pseudo-terminal as it is required by the protocol.
++Variables are specified by name, which may contain the wildcard characters
++.Ql *
++and
++.Ql \&? .
++Multiple environment variables may be separated by whitespace or spread
++across multiple
++.Cm AcceptEnv
++directives.
++Be warned that some environment variables could be used to bypass restricted
++user environments.
++For this reason, care should be taken in the use of this directive.
++The default is not to accept any environment variables.
++.It Cm AddressFamily
++Specifies which address family should be used by
++.Xr sshd 1M .
++Valid arguments are
++.Dq any ,
++.Dq inet
++(use IPv4 only), or
++.Dq inet6
++(use IPv6 only).
++The default is
++.Dq any .
++.It Cm AllowAgentForwarding
++Specifies whether
++.Xr ssh-agent 1
++forwarding is permitted.
++The default is
++.Dq yes .
++Note that disabling agent forwarding does not improve security
++unless users are also denied shell access, as they can always install
++their own forwarders.
++.It Cm AllowGroups
++This keyword can be followed by a list of group name patterns, separated
++by spaces.
++If specified, login is allowed only for users whose primary
++group or supplementary group list matches one of the patterns.
++Only group names are valid; a numerical group ID is not recognized.
++By default, login is allowed for all groups.
++The allow/deny directives are processed in the following order:
++.Cm DenyUsers ,
++.Cm AllowUsers ,
++.Cm DenyGroups ,
++and finally
++.Cm AllowGroups .
++.Pp
++See PATTERNS in
++.Xr ssh_config 4
++for more information on patterns.
++.It Cm AllowTcpForwarding
++Specifies whether TCP forwarding is permitted.
++The available options are
++.Dq yes
++or
++.Dq all
++to allow TCP forwarding,
++.Dq no
++to prevent all TCP forwarding,
++.Dq local
++to allow local (from the perspective of
++.Xr ssh 1 )
++forwarding only or
++.Dq remote
++to allow remote forwarding only.
++The default is
++.Dq yes .
++Note that disabling TCP forwarding does not improve security unless
++users are also denied shell access, as they can always install their
++own forwarders.
++.It Cm AllowStreamLocalForwarding
++Specifies whether StreamLocal (Unix-domain socket) forwarding is permitted.
++The available options are
++.Dq yes
++or
++.Dq all
++to allow StreamLocal forwarding,
++.Dq no
++to prevent all StreamLocal forwarding,
++.Dq local
++to allow local (from the perspective of
++.Xr ssh 1 )
++forwarding only or
++.Dq remote
++to allow remote forwarding only.
++The default is
++.Dq yes .
++Note that disabling StreamLocal forwarding does not improve security unless
++users are also denied shell access, as they can always install their
++own forwarders.
++.It Cm AllowUsers
++This keyword can be followed by a list of user name patterns, separated
++by spaces.
++If specified, login is allowed only for user names that
++match one of the patterns.
++Only user names are valid; a numerical user ID is not recognized.
++By default, login is allowed for all users.
++If the pattern takes the form USER@HOST then USER and HOST
++are separately checked, restricting logins to particular
++users from particular hosts.
++The allow/deny directives are processed in the following order:
++.Cm DenyUsers ,
++.Cm AllowUsers ,
++.Cm DenyGroups ,
++and finally
++.Cm AllowGroups .
++.Pp
++See PATTERNS in
++.Xr ssh_config 4
++for more information on patterns.
++.It Cm AuthenticationMethods
++Specifies the authentication methods that must be successfully completed
++for a user to be granted access.
++This option must be followed by one or more comma-separated lists of
++authentication method names.
++Successful authentication requires completion of every method in at least
++one of these lists.
++.Pp
++For example, an argument of
++.Dq publickey,password publickey,keyboard-interactive
++would require the user to complete public key authentication, followed by
++either password or keyboard interactive authentication.
++Only methods that are next in one or more lists are offered at each stage,
++so for this example, it would not be possible to attempt password or
++keyboard-interactive authentication before public key.
++.Pp
++For keyboard interactive authentication it is also possible to
++restrict authentication to a specific device by appending a
++colon followed by the device identifier
++.Dq bsdauth ,
++.Dq pam ,
++or
++.Dq skey ,
++depending on the server configuration.
++For example,
++.Dq keyboard-interactive:bsdauth
++would restrict keyboard interactive authentication to the
++.Dq bsdauth
++device.
++.Pp
++If the
++.Dq publickey
++method is listed more than once,
++.Xr sshd 8
++verifies that keys that have been used successfully are not reused for
++subsequent authentications.
++For example, an
++.Cm AuthenticationMethods
++of
++.Dq publickey,publickey
++will require successful authentication using two different public keys.
++.Pp
++This option is only available for SSH protocol 2 and will yield a fatal
++error if enabled if protocol 1 is also enabled.
++Note that each authentication method listed should also be explicitly enabled
++in the configuration.
++The default is not to require multiple authentication; successful completion
++of a single authentication method is sufficient.
++.It Cm AuthorizedKeysCommand
++Specifies a program to be used to look up the user's public keys.
++The program must be owned by root, not writable by group or others and
++specified by an absolute path.
++.Pp
++Arguments to
++.Cm AuthorizedKeysCommand
++may be provided using the following tokens, which will be expanded
++at runtime: %% is replaced by a literal '%', %u is replaced by the
++username being authenticated, %h is replaced by the home directory
++of the user being authenticated, %t is replaced with the key type
++offered for authentication, %f is replaced with the fingerprint of
++the key, and %k is replaced with the key being offered for authentication.
++If no arguments are specified then the username of the target user
++will be supplied.
++.Pp
++The program should produce on standard output zero or
++more lines of authorized_keys output (see AUTHORIZED_KEYS in
++.Xr sshd 1M ) .
++If a key supplied by AuthorizedKeysCommand does not successfully authenticate
++and authorize the user then public key authentication continues using the usual
++.Cm AuthorizedKeysFile
++files.
++By default, no AuthorizedKeysCommand is run.
++.It Cm AuthorizedKeysCommandUser
++Specifies the user under whose account the AuthorizedKeysCommand is run.
++It is recommended to use a dedicated user that has no other role on the host
++than running authorized keys commands.
++If
++.Cm AuthorizedKeysCommand
++is specified but
++.Cm AuthorizedKeysCommandUser
++is not, then
++.Xr sshd 8
++will refuse to start.
++.It Cm AuthorizedKeysFile
++Specifies the file that contains the public keys that can be used
++for user authentication.
++The format is described in the
++AUTHORIZED_KEYS FILE FORMAT
++section of
++.Xr sshd 1M .
++.Cm AuthorizedKeysFile
++may contain tokens of the form %T which are substituted during connection
++setup.
++The following tokens are defined: %% is replaced by a literal '%',
++%h is replaced by the home directory of the user being authenticated, and
++%u is replaced by the username of that user.
++After expansion,
++.Cm AuthorizedKeysFile
++is taken to be an absolute path or one relative to the user's home
++directory.
++Multiple files may be listed, separated by whitespace.
++The default is
++.Dq .ssh/authorized_keys .ssh/authorized_keys2 .
++.It Cm AuthorizedPrincipalsCommand
++Specifies a program to be used to generate the list of allowed
++certificate principals as per
++.Cm AuthorizedPrincipalsFile .
++The program must be owned by root, not writable by group or others and
++specified by an absolute path.
++.Pp
++Arguments to
++.Cm AuthorizedPrincipalsCommand
++may be provided using the following tokens, which will be expanded
++at runtime: %% is replaced by a literal '%', %u is replaced by the
++username being authenticated and %h is replaced by the home directory
++of the user being authenticated.
++.Pp
++The program should produce on standard output zero or
++more lines of
++.Cm AuthorizedPrincipalsFile
++output.
++If either
++.Cm AuthorizedPrincipalsCommand
++or
++.Cm AuthorizedPrincipalsFile
++is specified, then certificates offered by the client for authentication
++must contain a principal that is listed.
++By default, no AuthorizedPrincipalsCommand is run.
++.It Cm AuthorizedPrincipalsCommandUser
++Specifies the user under whose account the AuthorizedPrincipalsCommand is run.
++It is recommended to use a dedicated user that has no other role on the host
++than running authorized principals commands.
++If
++.Cm AuthorizedPrincipalsCommand
++is specified but
++.Cm AuthorizedPrincipalsCommandUser
++is not, then
++.Xr sshd 8
++will refuse to start.
++.It Cm AuthorizedPrincipalsFile
++Specifies a file that lists principal names that are accepted for
++certificate authentication.
++When using certificates signed by a key listed in
++.Cm TrustedUserCAKeys ,
++this file lists names, one of which must appear in the certificate for it
++to be accepted for authentication.
++Names are listed one per line preceded by key options (as described
++in AUTHORIZED_KEYS FILE FORMAT in
++.Xr sshd 1M ) .
++Empty lines and comments starting with
++.Ql #
++are ignored.
++.Pp
++.Cm AuthorizedPrincipalsFile
++may contain tokens of the form %T which are substituted during connection
++setup.
++The following tokens are defined: %% is replaced by a literal '%',
++%h is replaced by the home directory of the user being authenticated, and
++%u is replaced by the username of that user.
++After expansion,
++.Cm AuthorizedPrincipalsFile
++is taken to be an absolute path or one relative to the user's home
++directory.
++.Pp
++The default is
++.Dq none ,
++i.e. not to use a principals file \(en in this case, the username
++of the user must appear in a certificate's principals list for it to be
++accepted.
++Note that
++.Cm AuthorizedPrincipalsFile
++is only used when authentication proceeds using a CA listed in
++.Cm TrustedUserCAKeys
++and is not consulted for certification authorities trusted via
++.Pa ~/.ssh/authorized_keys ,
++though the
++.Cm principals=
++key option offers a similar facility (see
++.Xr sshd 1M
++for details).
++.It Cm Banner
++The contents of the specified file are sent to the remote user before
++authentication is allowed.
++If the argument is
++.Dq none
++then no banner is displayed.
++This option is only available for protocol version 2.
++By default, no banner is displayed.
++.It Cm ChallengeResponseAuthentication
++Specifies whether challenge-response authentication is allowed (e.g. via
++PAM or through authentication styles supported in
++.Xr login.conf 5 )
++The default is
++.Dq yes .
++.It Cm ChrootDirectory
++Specifies the pathname of a directory to
++.Xr chroot 2
++to after authentication.
++At session startup
++.Xr sshd 8
++checks that all components of the pathname are root-owned directories
++which are not writable by any other user or group.
++After the chroot,
++.Xr sshd 1M
++changes the working directory to the user's home directory.
++.Pp
++The pathname may contain the following tokens that are expanded at runtime once
++the connecting user has been authenticated: %% is replaced by a literal '%',
++%h is replaced by the home directory of the user being authenticated, and
++%u is replaced by the username of that user.
++.Pp
++The
++.Cm ChrootDirectory
++must contain the necessary files and directories to support the
++user's session.
++For an interactive session this requires at least a shell, typically
++.Xr sh 1 ,
++and basic
++.Pa /dev
++nodes such as
++.Xr null 4 ,
++.Xr zero 4 ,
++.Xr stdin 4 ,
++.Xr stdout 4 ,
++.Xr stderr 4 ,
++and
++.Xr tty 4
++devices.
++For file transfer sessions using
++.Dq sftp ,
++no additional configuration of the environment is necessary if the
++in-process sftp server is used,
++though sessions which use logging may require
++.Pa /dev/log
++inside the chroot directory on some operating systems (see
++.Xr sftp-server 8
++for details).
++.Pp
++For safety, it is very important that the directory hierarchy be
++prevented from modification by other processes on the system (especially
++those outside the jail).
++Misconfiguration can lead to unsafe environments which
++.Xr sshd 8
++cannot detect.
++.Pp
++The default is not to
++.Xr chroot 2 .
++.It Cm Ciphers
++Specifies the ciphers allowed for protocol version 2.
++Multiple ciphers must be comma-separated.
++If the specified value begins with a
++.Sq +
++character, then the specified ciphers will be appended to the default set
++instead of replacing them.
++.Pp
++The supported ciphers are:
++.Pp
++.Bl -item -compact -offset indent
++.It
++3des-cbc
++.It
++aes128-cbc
++.It
++aes192-cbc
++.It
++aes256-cbc
++.It
++aes128-ctr
++.It
++aes192-ctr
++.It
++aes256-ctr
++.It
++aes128-gcm@openssh.com
++.It
++aes256-gcm@openssh.com
++.It
++arcfour
++.It
++arcfour128
++.It
++arcfour256
++.It
++blowfish-cbc
++.It
++cast128-cbc
++.It
++chacha20-poly1305@openssh.com
++.El
++.Pp
++The default is:
++.Bd -literal -offset indent
++chacha20-poly1305@openssh.com,
++aes128-ctr,aes192-ctr,aes256-ctr,
++aes128-gcm@openssh.com,aes256-gcm@openssh.com
++.Ed
++.Pp
++The list of available ciphers may also be obtained using the
++.Fl Q
++option of
++.Xr ssh 1
++with an argument of
++.Dq cipher .
++.It Cm ClientAliveCountMax
++Sets the number of client alive messages (see below) which may be
++sent without
++.Xr sshd 1M
++receiving any messages back from the client.
++If this threshold is reached while client alive messages are being sent,
++sshd will disconnect the client, terminating the session.
++It is important to note that the use of client alive messages is very
++different from
++.Cm TCPKeepAlive
++(below).
++The client alive messages are sent through the encrypted channel
++and therefore will not be spoofable.
++The TCP keepalive option enabled by
++.Cm TCPKeepAlive
++is spoofable.
++The client alive mechanism is valuable when the client or
++server depend on knowing when a connection has become inactive.
++.Pp
++The default value is 3.
++If
++.Cm ClientAliveInterval
++(see below) is set to 15, and
++.Cm ClientAliveCountMax
++is left at the default, unresponsive SSH clients
++will be disconnected after approximately 45 seconds.
++This option applies to protocol version 2 only.
++.It Cm ClientAliveInterval
++Sets a timeout interval in seconds after which if no data has been received
++from the client,
++.Xr sshd 1M
++will send a message through the encrypted
++channel to request a response from the client.
++The default
++is 0, indicating that these messages will not be sent to the client.
++This option applies to protocol version 2 only.
++.It Cm Compression
++Specifies whether compression is allowed, or delayed until
++the user has authenticated successfully.
++The argument must be
++.Dq yes ,
++.Dq delayed ,
++or
++.Dq no .
++The default is
++.Dq delayed .
++.It Cm DenyGroups
++This keyword can be followed by a list of group name patterns, separated
++by spaces.
++Login is disallowed for users whose primary group or supplementary
++group list matches one of the patterns.
++Only group names are valid; a numerical group ID is not recognized.
++By default, login is allowed for all groups.
++The allow/deny directives are processed in the following order:
++.Cm DenyUsers ,
++.Cm AllowUsers ,
++.Cm DenyGroups ,
++and finally
++.Cm AllowGroups .
++.Pp
++See PATTERNS in
++.Xr ssh_config 4
++for more information on patterns.
++.It Cm DenyUsers
++This keyword can be followed by a list of user name patterns, separated
++by spaces.
++Login is disallowed for user names that match one of the patterns.
++Only user names are valid; a numerical user ID is not recognized.
++By default, login is allowed for all users.
++If the pattern takes the form USER@HOST then USER and HOST
++are separately checked, restricting logins to particular
++users from particular hosts.
++The allow/deny directives are processed in the following order:
++.Cm DenyUsers ,
++.Cm AllowUsers ,
++.Cm DenyGroups ,
++and finally
++.Cm AllowGroups .
++.Pp
++See PATTERNS in
++.Xr ssh_config 4
++for more information on patterns.
++.It Cm FingerprintHash
++Specifies the hash algorithm used when logging key fingerprints.
++Valid options are:
++.Dq md5
++and
++.Dq sha256 .
++The default is
++.Dq sha256 .
++.It Cm ForceCommand
++Forces the execution of the command specified by
++.Cm ForceCommand ,
++ignoring any command supplied by the client and
++.Pa ~/.ssh/rc
++if present.
++The command is invoked by using the user's login shell with the -c option.
++This applies to shell, command, or subsystem execution.
++It is most useful inside a
++.Cm Match
++block.
++The command originally supplied by the client is available in the
++.Ev SSH_ORIGINAL_COMMAND
++environment variable.
++Specifying a command of
++.Dq internal-sftp
++will force the use of an in-process sftp server that requires no support
++files when used with
++.Cm ChrootDirectory .
++.It Cm GatewayPorts
++Specifies whether remote hosts are allowed to connect to ports
++forwarded for the client.
++By default,
++.Xr sshd 1M
++binds remote port forwardings to the loopback address.
++This prevents other remote hosts from connecting to forwarded ports.
++.Cm GatewayPorts
++can be used to specify that sshd
++should allow remote port forwardings to bind to non-loopback addresses, thus
++allowing other hosts to connect.
++The argument may be
++.Dq no
++to force remote port forwardings to be available to the local host only,
++.Dq yes
++to force remote port forwardings to bind to the wildcard address, or
++.Dq clientspecified
++to allow the client to select the address to which the forwarding is bound.
++The default is
++.Dq no .
++.It Cm GSSAPIAuthentication
++Specifies whether user authentication based on GSSAPI is allowed.
++The default is
++.Dq no .
++Note that this option applies to protocol version 2 only.
++.It Cm GSSAPICleanupCredentials
++Specifies whether to automatically destroy the user's credentials cache
++on logout.
++The default is
++.Dq yes .
++Note that this option applies to protocol version 2 only.
++.It Cm GSSAPIStrictAcceptorCheck
++Determines whether to be strict about the identity of the GSSAPI acceptor
++a client authenticates against.
++If set to
++.Dq yes
++then the client must authenticate against the
++.Pa host
++service on the current hostname.
++If set to
++.Dq no
++then the client may authenticate against any service key stored in the
++machine's default store.
++This facility is provided to assist with operation on multi homed machines.
++The default is
++.Dq yes .
++.It Cm HostbasedAcceptedKeyTypes
++Specifies the key types that will be accepted for hostbased authentication
++as a comma-separated pattern list.
++Alternately if the specified value begins with a
++.Sq +
++character, then the specified key types will be appended to the default set
++instead of replacing them.
++The default for this option is:
++.Bd -literal -offset 3n
++ecdsa-sha2-nistp256-cert-v01@openssh.com,
++ecdsa-sha2-nistp384-cert-v01@openssh.com,
++ecdsa-sha2-nistp521-cert-v01@openssh.com,
++ssh-ed25519-cert-v01@openssh.com,
++ssh-rsa-cert-v01@openssh.com,
++ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
++ssh-ed25519,ssh-rsa
++.Ed
++.Pp
++The
++.Fl Q
++option of
++.Xr ssh 1
++may be used to list supported key types.
++.It Cm HostbasedAuthentication
++Specifies whether rhosts or /etc/hosts.equiv authentication together
++with successful public key client host authentication is allowed
++(host-based authentication).
++This option is similar to
++.Cm RhostsRSAAuthentication
++and applies to protocol version 2 only.
++The default is
++.Dq no .
++.It Cm HostbasedUsesNameFromPacketOnly
++Specifies whether or not the server will attempt to perform a reverse
++name lookup when matching the name in the
++.Pa ~/.shosts ,
++.Pa ~/.rhosts ,
++and
++.Pa /etc/hosts.equiv
++files during
++.Cm HostbasedAuthentication .
++A setting of
++.Dq yes
++means that
++.Xr sshd 1M
++uses the name supplied by the client rather than
++attempting to resolve the name from the TCP connection itself.
++The default is
++.Dq no .
++.It Cm HostCertificate
++Specifies a file containing a public host certificate.
++The certificate's public key must match a private host key already specified
++by
++.Cm HostKey .
++The default behaviour of
++.Xr sshd 1M
++is not to load any certificates.
++.It Cm HostKey
++Specifies a file containing a private host key
++used by SSH.
++The default is
++.Pa /etc/ssh/ssh_host_key
++for protocol version 1, and
++.Pa /etc/ssh/ssh_host_dsa_key ,
++.Pa /etc/ssh/ssh_host_ecdsa_key ,
++.Pa /etc/ssh/ssh_host_ed25519_key
++and
++.Pa /etc/ssh/ssh_host_rsa_key
++for protocol version 2.
++.Pp
++Note that
++.Xr sshd 1M
++will refuse to use a file if it is group/world-accessible
++and that the
++.Cm HostKeyAlgorithms
++option restricts which of the keys are actually used by
++.Xr sshd 1M .
++.Pp
++It is possible to have multiple host key files.
++.Dq rsa1
++keys are used for version 1 and
++.Dq dsa ,
++.Dq ecdsa ,
++.Dq ed25519
++or
++.Dq rsa
++are used for version 2 of the SSH protocol.
++It is also possible to specify public host key files instead.
++In this case operations on the private key will be delegated
++to an
++.Xr ssh-agent 1 .
++.It Cm HostKeyAgent
++Identifies the UNIX-domain socket used to communicate
++with an agent that has access to the private host keys.
++If
++.Dq SSH_AUTH_SOCK
++is specified, the location of the socket will be read from the
++.Ev SSH_AUTH_SOCK
++environment variable.
++.It Cm HostKeyAlgorithms
++Specifies the protocol version 2 host key algorithms
++that the server offers.
++The default for this option is:
++.Bd -literal -offset 3n
++ecdsa-sha2-nistp256-cert-v01@openssh.com,
++ecdsa-sha2-nistp384-cert-v01@openssh.com,
++ecdsa-sha2-nistp521-cert-v01@openssh.com,
++ssh-ed25519-cert-v01@openssh.com,
++ssh-rsa-cert-v01@openssh.com,
++ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
++ssh-ed25519,ssh-rsa
++.Ed
++.Pp
++The list of available key types may also be obtained using the
++.Fl Q
++option of
++.Xr ssh 1
++with an argument of
++.Dq key .
++.It Cm IgnoreRhosts
++Specifies that
++.Pa .rhosts
++and
++.Pa .shosts
++files will not be used in
++.Cm RhostsRSAAuthentication
++or
++.Cm HostbasedAuthentication .
++.Pp
++.Pa /etc/hosts.equiv
++and
++.Pa /etc/shosts.equiv
++are still used.
++The default is
++.Dq yes .
++.It Cm IgnoreUserKnownHosts
++Specifies whether
++.Xr sshd 1M
++should ignore the user's
++.Pa ~/.ssh/known_hosts
++during
++.Cm RhostsRSAAuthentication
++or
++.Cm HostbasedAuthentication .
++The default is
++.Dq no .
++.It Cm IPQoS
++Specifies the IPv4 type-of-service or DSCP class for the connection.
++Accepted values are
++.Dq af11 ,
++.Dq af12 ,
++.Dq af13 ,
++.Dq af21 ,
++.Dq af22 ,
++.Dq af23 ,
++.Dq af31 ,
++.Dq af32 ,
++.Dq af33 ,
++.Dq af41 ,
++.Dq af42 ,
++.Dq af43 ,
++.Dq cs0 ,
++.Dq cs1 ,
++.Dq cs2 ,
++.Dq cs3 ,
++.Dq cs4 ,
++.Dq cs5 ,
++.Dq cs6 ,
++.Dq cs7 ,
++.Dq ef ,
++.Dq lowdelay ,
++.Dq throughput ,
++.Dq reliability ,
++or a numeric value.
++This option may take one or two arguments, separated by whitespace.
++If one argument is specified, it is used as the packet class unconditionally.
++If two values are specified, the first is automatically selected for
++interactive sessions and the second for non-interactive sessions.
++The default is
++.Dq lowdelay
++for interactive sessions and
++.Dq throughput
++for non-interactive sessions.
++.It Cm KbdInteractiveAuthentication
++Specifies whether to allow keyboard-interactive authentication.
++The argument to this keyword must be
++.Dq yes
++or
++.Dq no .
++The default is to use whatever value
++.Cm ChallengeResponseAuthentication
++is set to
++(by default
++.Dq yes ) .
++.It Cm KerberosAuthentication
++Specifies whether the password provided by the user for
++.Cm PasswordAuthentication
++will be validated through the Kerberos KDC.
++To use this option, the server needs a
++Kerberos servtab which allows the verification of the KDC's identity.
++The default is
++.Dq no .
++.It Cm KerberosGetAFSToken
++If AFS is active and the user has a Kerberos 5 TGT, attempt to acquire
++an AFS token before accessing the user's home directory.
++The default is
++.Dq no .
++.It Cm KerberosOrLocalPasswd
++If password authentication through Kerberos fails then
++the password will be validated via any additional local mechanism
++such as
++.Pa /etc/passwd .
++The default is
++.Dq yes .
++.It Cm KerberosTicketCleanup
++Specifies whether to automatically destroy the user's ticket cache
++file on logout.
++The default is
++.Dq yes .
++.It Cm KexAlgorithms
++Specifies the available KEX (Key Exchange) algorithms.
++Multiple algorithms must be comma-separated.
++Alternately if the specified value begins with a
++.Sq +
++character, then the specified methods will be appended to the default set
++instead of replacing them.
++The supported algorithms are:
++.Pp
++.Bl -item -compact -offset indent
++.It
++curve25519-sha256@libssh.org
++.It
++diffie-hellman-group1-sha1
++.It
++diffie-hellman-group14-sha1
++.It
++diffie-hellman-group-exchange-sha1
++.It
++diffie-hellman-group-exchange-sha256
++.It
++ecdh-sha2-nistp256
++.It
++ecdh-sha2-nistp384
++.It
++ecdh-sha2-nistp521
++.El
++.Pp
++The default is:
++.Bd -literal -offset indent
++curve25519-sha256@libssh.org,
++ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
++diffie-hellman-group-exchange-sha256,
++diffie-hellman-group14-sha1
++.Ed
++.Pp
++The list of available key exchange algorithms may also be obtained using the
++.Fl Q
++option of
++.Xr ssh 1
++with an argument of
++.Dq kex .
++.It Cm KeyRegenerationInterval
++In protocol version 1, the ephemeral server key is automatically regenerated
++after this many seconds (if it has been used).
++The purpose of regeneration is to prevent
++decrypting captured sessions by later breaking into the machine and
++stealing the keys.
++The key is never stored anywhere.
++If the value is 0, the key is never regenerated.
++The default is 3600 (seconds).
++.It Cm ListenAddress
++Specifies the local addresses
++.Xr sshd 1M
++should listen on.
++The following forms may be used:
++.Pp
++.Bl -item -offset indent -compact
++.It
++.Cm ListenAddress
++.Sm off
++.Ar host | Ar IPv4_addr | Ar IPv6_addr
++.Sm on
++.It
++.Cm ListenAddress
++.Sm off
++.Ar host | Ar IPv4_addr : Ar port
++.Sm on
++.It
++.Cm ListenAddress
++.Sm off
++.Oo
++.Ar host | Ar IPv6_addr Oc : Ar port
++.Sm on
++.El
++.Pp
++If
++.Ar port
++is not specified,
++sshd will listen on the address and all
++.Cm Port
++options specified.
++The default is to listen on all local addresses.
++Multiple
++.Cm ListenAddress
++options are permitted.
++.It Cm LoginGraceTime
++The server disconnects after this time if the user has not
++successfully logged in.
++If the value is 0, there is no time limit.
++The default is 120 seconds.
++.It Cm LogLevel
++Gives the verbosity level that is used when logging messages from
++.Xr sshd 1M .
++The possible values are:
++QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3.
++The default is INFO.
++DEBUG and DEBUG1 are equivalent.
++DEBUG2 and DEBUG3 each specify higher levels of debugging output.
++Logging with a DEBUG level violates the privacy of users and is not recommended.
++.It Cm MACs
++Specifies the available MAC (message authentication code) algorithms.
++The MAC algorithm is used in protocol version 2
++for data integrity protection.
++Multiple algorithms must be comma-separated.
++If the specified value begins with a
++.Sq +
++character, then the specified algorithms will be appended to the default set
++instead of replacing them.
++.Pp
++The algorithms that contain
++.Dq -etm
++calculate the MAC after encryption (encrypt-then-mac).
++These are considered safer and their use recommended.
++The supported MACs are:
++.Pp
++.Bl -item -compact -offset indent
++.It
++hmac-md5
++.It
++hmac-md5-96
++.It
++hmac-ripemd160
++.It
++hmac-sha1
++.It
++hmac-sha1-96
++.It
++hmac-sha2-256
++.It
++hmac-sha2-512
++.It
++umac-64@openssh.com
++.It
++umac-128@openssh.com
++.It
++hmac-md5-etm@openssh.com
++.It
++hmac-md5-96-etm@openssh.com
++.It
++hmac-ripemd160-etm@openssh.com
++.It
++hmac-sha1-etm@openssh.com
++.It
++hmac-sha1-96-etm@openssh.com
++.It
++hmac-sha2-256-etm@openssh.com
++.It
++hmac-sha2-512-etm@openssh.com
++.It
++umac-64-etm@openssh.com
++.It
++umac-128-etm@openssh.com
++.El
++.Pp
++The default is:
++.Bd -literal -offset indent
++umac-64-etm@openssh.com,umac-128-etm@openssh.com,
++hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,
++umac-64@openssh.com,umac-128@openssh.com,
++hmac-sha2-256,hmac-sha2-512
++.Ed
++.Pp
++The list of available MAC algorithms may also be obtained using the
++.Fl Q
++option of
++.Xr ssh 1
++with an argument of
++.Dq mac .
++.It Cm Match
++Introduces a conditional block.
++If all of the criteria on the
++.Cm Match
++line are satisfied, the keywords on the following lines override those
++set in the global section of the config file, until either another
++.Cm Match
++line or the end of the file.
++If a keyword appears in multiple
++.Cm Match
++blocks that are satisfied, only the first instance of the keyword is
++applied.
++.Pp
++The arguments to
++.Cm Match
++are one or more criteria-pattern pairs or the single token
++.Cm All
++which matches all criteria.
++The available criteria are
++.Cm User ,
++.Cm Group ,
++.Cm Host ,
++.Cm LocalAddress ,
++.Cm LocalPort ,
++and
++.Cm Address .
++The match patterns may consist of single entries or comma-separated
++lists and may use the wildcard and negation operators described in the
++PATTERNS section of
++.Xr ssh_config 4 .
++.Pp
++The patterns in an
++.Cm Address
++criteria may additionally contain addresses to match in CIDR
++address/masklen format, e.g.\&
++.Dq 192.0.2.0/24
++or
++.Dq 3ffe:ffff::/32 .
++Note that the mask length provided must be consistent with the address -
++it is an error to specify a mask length that is too long for the address
++or one with bits set in this host portion of the address.
++For example,
++.Dq 192.0.2.0/33
++and
++.Dq 192.0.2.0/8
++respectively.
++.Pp
++Only a subset of keywords may be used on the lines following a
++.Cm Match
++keyword.
++Available keywords are
++.Cm AcceptEnv ,
++.Cm AllowAgentForwarding ,
++.Cm AllowGroups ,
++.Cm AllowStreamLocalForwarding ,
++.Cm AllowTcpForwarding ,
++.Cm AllowUsers ,
++.Cm AuthenticationMethods ,
++.Cm AuthorizedKeysCommand ,
++.Cm AuthorizedKeysCommandUser ,
++.Cm AuthorizedKeysFile ,
++.Cm AuthorizedPrincipalsFile ,
++.Cm Banner ,
++.Cm ChrootDirectory ,
++.Cm DenyGroups ,
++.Cm DenyUsers ,
++.Cm ForceCommand ,
++.Cm GatewayPorts ,
++.Cm GSSAPIAuthentication ,
++.Cm HostbasedAcceptedKeyTypes ,
++.Cm HostbasedAuthentication ,
++.Cm HostbasedUsesNameFromPacketOnly ,
++.Cm IPQoS ,
++.Cm KbdInteractiveAuthentication ,
++.Cm KerberosAuthentication ,
++.Cm MaxAuthTries ,
++.Cm MaxSessions ,
++.Cm PasswordAuthentication ,
++.Cm PermitEmptyPasswords ,
++.Cm PermitOpen ,
++.Cm PermitRootLogin ,
++.Cm PermitTTY ,
++.Cm PermitTunnel ,
++.Cm PermitUserRC ,
++.Cm PubkeyAcceptedKeyTypes ,
++.Cm PubkeyAuthentication ,
++.Cm RekeyLimit ,
++.Cm RevokedKeys ,
++.Cm RhostsRSAAuthentication ,
++.Cm RSAAuthentication ,
++.Cm StreamLocalBindMask ,
++.Cm StreamLocalBindUnlink ,
++.Cm TrustedUserCAKeys ,
++.Cm X11DisplayOffset ,
++.Cm X11Forwarding
++and
++.Cm X11UseLocalHost .
++.It Cm MaxAuthTries
++Specifies the maximum number of authentication attempts permitted per
++connection.
++Once the number of failures reaches half this value,
++additional failures are logged.
++The default is 6.
++.It Cm MaxSessions
++Specifies the maximum number of open sessions permitted per network connection.
++The default is 10.
++.It Cm MaxStartups
++Specifies the maximum number of concurrent unauthenticated connections to the
++SSH daemon.
++Additional connections will be dropped until authentication succeeds or the
++.Cm LoginGraceTime
++expires for a connection.
++The default is 10:30:100.
++.Pp
++Alternatively, random early drop can be enabled by specifying
++the three colon separated values
++.Dq start:rate:full
++(e.g. "10:30:60").
++.Xr sshd 1M
++will refuse connection attempts with a probability of
++.Dq rate/100
++(30%)
++if there are currently
++.Dq start
++(10)
++unauthenticated connections.
++The probability increases linearly and all connection attempts
++are refused if the number of unauthenticated connections reaches
++.Dq full
++(60).
++.It Cm PasswordAuthentication
++Specifies whether password authentication is allowed.
++The default is
++.Dq yes .
++.It Cm PermitEmptyPasswords
++When password authentication is allowed, it specifies whether the
++server allows login to accounts with empty password strings.
++The default is
++.Dq no .
++.It Cm PermitOpen
++Specifies the destinations to which TCP port forwarding is permitted.
++The forwarding specification must be one of the following forms:
++.Pp
++.Bl -item -offset indent -compact
++.It
++.Cm PermitOpen
++.Sm off
++.Ar host : port
++.Sm on
++.It
++.Cm PermitOpen
++.Sm off
++.Ar IPv4_addr : port
++.Sm on
++.It
++.Cm PermitOpen
++.Sm off
++.Ar \&[ IPv6_addr \&] : port
++.Sm on
++.El
++.Pp
++Multiple forwards may be specified by separating them with whitespace.
++An argument of
++.Dq any
++can be used to remove all restrictions and permit any forwarding requests.
++An argument of
++.Dq none
++can be used to prohibit all forwarding requests.
++By default all port forwarding requests are permitted.
++.It Cm PermitRootLogin
++Specifies whether root can log in using
++.Xr ssh 1 .
++The argument must be
++.Dq yes ,
++.Dq prohibit-password ,
++.Dq without-password ,
++.Dq forced-commands-only ,
++or
++.Dq no .
++The default is
++.Dq prohibit-password .
++.Pp
++If this option is set to
++.Dq prohibit-password
++or
++.Dq without-password ,
++password and keyboard-interactive authentication are disabled for root.
++.Pp
++If this option is set to
++.Dq forced-commands-only ,
++root login with public key authentication will be allowed,
++but only if the
++.Ar command
++option has been specified
++(which may be useful for taking remote backups even if root login is
++normally not allowed).
++All other authentication methods are disabled for root.
++.Pp
++If this option is set to
++.Dq no ,
++root is not allowed to log in.
++.It Cm PermitTunnel
++Specifies whether
++.Xr tun 4
++device forwarding is allowed.
++The argument must be
++.Dq yes ,
++.Dq point-to-point
++(layer 3),
++.Dq ethernet
++(layer 2), or
++.Dq no .
++Specifying
++.Dq yes
++permits both
++.Dq point-to-point
++and
++.Dq ethernet .
++The default is
++.Dq no .
++.Pp
++Independent of this setting, the permissions of the selected
++.Xr tun 4
++device must allow access to the user.
++.It Cm PermitTTY
++Specifies whether
++.Xr pty 4
++allocation is permitted.
++The default is
++.Dq yes .
++.It Cm PermitUserEnvironment
++Specifies whether
++.Pa ~/.ssh/environment
++and
++.Cm environment=
++options in
++.Pa ~/.ssh/authorized_keys
++are processed by
++.Xr sshd 1M .
++The default is
++.Dq no .
++Enabling environment processing may enable users to bypass access
++restrictions in some configurations using mechanisms such as
++.Ev LD_PRELOAD .
++.It Cm PermitUserRC
++Specifies whether any
++.Pa ~/.ssh/rc
++file is executed.
++The default is
++.Dq yes .
++.It Cm PidFile
++Specifies the file that contains the process ID of the
++SSH daemon, or
++.Dq none
++to not write one.
++The default is
++.Pa /var/run/sshd.pid .
++.It Cm Port
++Specifies the port number that
++.Xr sshd 1M
++listens on.
++The default is 22.
++Multiple options of this type are permitted.
++See also
++.Cm ListenAddress .
++.It Cm PrintLastLog
++Specifies whether
++.Xr sshd 1M
++should print the date and time of the last user login when a user logs
++in interactively.
++On Solaris this option is always ignored since pam_unix_session(5)
++reports the last login time.
++.It Cm PrintMotd
++Specifies whether
++.Xr sshd 1M
++should print
++.Pa /etc/motd
++when a user logs in interactively.
++(On some systems it is also printed by the shell,
++.Pa /etc/profile ,
++or equivalent.)
++The default is
++.Dq yes .
++.It Cm Protocol
++Specifies the protocol versions
++.Xr sshd 1M
++supports.
++The possible values are
++.Sq 1
++and
++.Sq 2 .
++Multiple versions must be comma-separated.
++The default is
++.Sq 2 .
++Note that the order of the protocol list does not indicate preference,
++because the client selects among multiple protocol versions offered
++by the server.
++Specifying
++.Dq 2,1
++is identical to
++.Dq 1,2 .
++.It Cm PubkeyAcceptedKeyTypes
++Specifies the key types that will be accepted for public key authentication
++as a comma-separated pattern list.
++Alternately if the specified value begins with a
++.Sq +
++character, then the specified key types will be appended to the default set
++instead of replacing them.
++The default for this option is:
++.Bd -literal -offset 3n
++ecdsa-sha2-nistp256-cert-v01@openssh.com,
++ecdsa-sha2-nistp384-cert-v01@openssh.com,
++ecdsa-sha2-nistp521-cert-v01@openssh.com,
++ssh-ed25519-cert-v01@openssh.com,
++ssh-rsa-cert-v01@openssh.com,
++ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
++ssh-ed25519,ssh-rsa
++.Ed
++.Pp
++The
++.Fl Q
++option of
++.Xr ssh 1
++may be used to list supported key types.
++.It Cm PubkeyAuthentication
++Specifies whether public key authentication is allowed.
++The default is
++.Dq yes .
++Note that this option applies to protocol version 2 only.
++.It Cm RekeyLimit
++Specifies the maximum amount of data that may be transmitted before the
++session key is renegotiated, optionally followed a maximum amount of
++time that may pass before the session key is renegotiated.
++The first argument is specified in bytes and may have a suffix of
++.Sq K ,
++.Sq M ,
++or
++.Sq G
++to indicate Kilobytes, Megabytes, or Gigabytes, respectively.
++The default is between
++.Sq 1G
++and
++.Sq 4G ,
++depending on the cipher.
++The optional second value is specified in seconds and may use any of the
++units documented in the
++.Sx TIME FORMATS
++section.
++The default value for
++.Cm RekeyLimit
++is
++.Dq default none ,
++which means that rekeying is performed after the cipher's default amount
++of data has been sent or received and no time based rekeying is done.
++This option applies to protocol version 2 only.
++.It Cm RevokedKeys
++Specifies revoked public keys file, or
++.Dq none
++to not use one.
++Keys listed in this file will be refused for public key authentication.
++Note that if this file is not readable, then public key authentication will
++be refused for all users.
++Keys may be specified as a text file, listing one public key per line, or as
++an OpenSSH Key Revocation List (KRL) as generated by
++.Xr ssh-keygen 1 .
++For more information on KRLs, see the KEY REVOCATION LISTS section in
++.Xr ssh-keygen 1 .
++.It Cm RhostsRSAAuthentication
++Specifies whether rhosts or /etc/hosts.equiv authentication together
++with successful RSA host authentication is allowed.
++The default is
++.Dq no .
++This option applies to protocol version 1 only.
++.It Cm RSAAuthentication
++Specifies whether pure RSA authentication is allowed.
++The default is
++.Dq yes .
++This option applies to protocol version 1 only.
++.It Cm ServerKeyBits
++Defines the number of bits in the ephemeral protocol version 1 server key.
++The default and minimum value is 1024.
++.It Cm StreamLocalBindMask
++Sets the octal file creation mode mask
++.Pq umask
++used when creating a Unix-domain socket file for local or remote
++port forwarding.
++This option is only used for port forwarding to a Unix-domain socket file.
++.Pp
++The default value is 0177, which creates a Unix-domain socket file that is
++readable and writable only by the owner.
++Note that not all operating systems honor the file mode on Unix-domain
++socket files.
++.It Cm StreamLocalBindUnlink
++Specifies whether to remove an existing Unix-domain socket file for local
++or remote port forwarding before creating a new one.
++If the socket file already exists and
++.Cm StreamLocalBindUnlink
++is not enabled,
++.Nm sshd
++will be unable to forward the port to the Unix-domain socket file.
++This option is only used for port forwarding to a Unix-domain socket file.
++.Pp
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++.It Cm StrictModes
++Specifies whether
++.Xr sshd 1M
++should check file modes and ownership of the
++user's files and home directory before accepting login.
++This is normally desirable because novices sometimes accidentally leave their
++directory or files world-writable.
++The default is
++.Dq yes .
++Note that this does not apply to
++.Cm ChrootDirectory ,
++whose permissions and ownership are checked unconditionally.
++.It Cm Subsystem
++Configures an external subsystem (e.g. file transfer daemon).
++Arguments should be a subsystem name and a command (with optional arguments)
++to execute upon subsystem request.
++.Pp
++The command
++.Xr sftp-server 8
++implements the
++.Dq sftp
++file transfer subsystem.
++.Pp
++Alternately the name
++.Dq internal-sftp
++implements an in-process
++.Dq sftp
++server.
++This may simplify configurations using
++.Cm ChrootDirectory
++to force a different filesystem root on clients.
++.Pp
++By default no subsystems are defined.
++Note that this option applies to protocol version 2 only.
++.It Cm SyslogFacility
++Gives the facility code that is used when logging messages from
++.Xr sshd 1M .
++The possible values are: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2,
++LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7.
++The default is AUTH.
++.It Cm TCPKeepAlive
++Specifies whether the system should send TCP keepalive messages to the
++other side.
++If they are sent, death of the connection or crash of one
++of the machines will be properly noticed.
++However, this means that
++connections will die if the route is down temporarily, and some people
++find it annoying.
++On the other hand, if TCP keepalives are not sent,
++sessions may hang indefinitely on the server, leaving
++.Dq ghost
++users and consuming server resources.
++.Pp
++The default is
++.Dq yes
++(to send TCP keepalive messages), and the server will notice
++if the network goes down or the client host crashes.
++This avoids infinitely hanging sessions.
++.Pp
++To disable TCP keepalive messages, the value should be set to
++.Dq no .
++.It Cm TrustedUserCAKeys
++Specifies a file containing public keys of certificate authorities that are
++trusted to sign user certificates for authentication, or
++.Dq none
++to not use one.
++Keys are listed one per line; empty lines and comments starting with
++.Ql #
++are allowed.
++If a certificate is presented for authentication and has its signing CA key
++listed in this file, then it may be used for authentication for any user
++listed in the certificate's principals list.
++Note that certificates that lack a list of principals will not be permitted
++for authentication using
++.Cm TrustedUserCAKeys .
++For more details on certificates, see the CERTIFICATES section in
++.Xr ssh-keygen 1 .
++.It Cm UseDNS
++Specifies whether
++.Xr sshd 1M
++should look up the remote host name, and to check that
++the resolved host name for the remote IP address maps back to the
++very same IP address.
++.Pp
++If this option is set to
++.Dq no
++(the default) then only addresses and not host names may be used in
++.Pa ~/.ssh/known_hosts
++.Cm from
++and
++.Nm
++.Cm Match
++.Cm Host
++directives.
++.It Cm UseLogin
++Specifies whether
++.Xr login 1
++is used for interactive login sessions.
++The default is
++.Dq no .
++Note that
++.Xr login 1
++is never used for remote command execution.
++Note also, that if this is enabled,
++.Cm X11Forwarding
++will be disabled because
++.Xr login 1
++does not know how to handle
++.Xr xauth 1
++cookies.
++If
++.Cm UsePrivilegeSeparation
++is specified, it will be disabled after authentication.
++.It Cm UsePAM
++Enables the Pluggable Authentication Module interface.
++If set to
++.Dq yes
++this will enable PAM authentication using
++.Cm ChallengeResponseAuthentication
++and
++.Cm PasswordAuthentication
++in addition to PAM account and session module processing for all
++authentication types.
++.Pp
++Because PAM challenge-response authentication usually serves an equivalent
++role to password authentication, you should disable either
++.Cm PasswordAuthentication
++or
++.Cm ChallengeResponseAuthentication.
++.Pp
++If
++.Cm UsePAM
++is enabled, you will not be able to run
++.Xr sshd 1M
++as a non-root user.
++The default is
++.Dq no .
++.It Cm UsePrivilegeSeparation
++Specifies whether
++.Xr sshd 1M
++separates privileges by creating an unprivileged child process
++to deal with incoming network traffic.
++After successful authentication, another process will be created that has
++the privilege of the authenticated user.
++The goal of privilege separation is to prevent privilege
++escalation by containing any corruption within the unprivileged processes.
++The default is
++.Dq yes .
++If
++.Cm UsePrivilegeSeparation
++is set to
++.Dq sandbox
++then the pre-authentication unprivileged process is subject to additional
++restrictions.
++.It Cm VersionAddendum
++Optionally specifies additional text to append to the SSH protocol banner
++sent by the server upon connection.
++The default is
++.Dq none .
++.It Cm X11DisplayOffset
++Specifies the first display number available for
++.Xr sshd 1M Ns 's
++X11 forwarding.
++This prevents sshd from interfering with real X11 servers.
++The default is 10.
++.It Cm X11Forwarding
++Specifies whether X11 forwarding is permitted.
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq no .
++.Pp
++When X11 forwarding is enabled, there may be additional exposure to
++the server and to client displays if the
++.Xr sshd 1M
++proxy display is configured to listen on the wildcard address (see
++.Cm X11UseLocalhost
++below), though this is not the default.
++Additionally, the authentication spoofing and authentication data
++verification and substitution occur on the client side.
++The security risk of using X11 forwarding is that the client's X11
++display server may be exposed to attack when the SSH client requests
++forwarding (see the warnings for
++.Cm ForwardX11
++in
++.Xr ssh_config 4 ) .
++A system administrator may have a stance in which they want to
++protect clients that may expose themselves to attack by unwittingly
++requesting X11 forwarding, which can warrant a
++.Dq no
++setting.
++.Pp
++Note that disabling X11 forwarding does not prevent users from
++forwarding X11 traffic, as users can always install their own forwarders.
++X11 forwarding is automatically disabled if
++.Cm UseLogin
++is enabled.
++.It Cm X11UseLocalhost
++Specifies whether
++.Xr sshd 1M
++should bind the X11 forwarding server to the loopback address or to
++the wildcard address.
++By default,
++sshd binds the forwarding server to the loopback address and sets the
++hostname part of the
++.Ev DISPLAY
++environment variable to
++.Dq localhost .
++This prevents remote hosts from connecting to the proxy display.
++However, some older X11 clients may not function with this
++configuration.
++.Cm X11UseLocalhost
++may be set to
++.Dq no
++to specify that the forwarding server should be bound to the wildcard
++address.
++The argument must be
++.Dq yes
++or
++.Dq no .
++The default is
++.Dq yes .
++.It Cm XAuthLocation
++Specifies the full pathname of the
++.Xr xauth 1
++program, or
++.Dq none
++to not use one.
++The default is
++.Pa /usr/X11R6/bin/xauth .
++.El
++.Sh TIME FORMATS
++.Xr sshd 1M
++command-line arguments and configuration file options that specify time
++may be expressed using a sequence of the form:
++.Sm off
++.Ar time Op Ar qualifier ,
++.Sm on
++where
++.Ar time
++is a positive integer value and
++.Ar qualifier
++is one of the following:
++.Pp
++.Bl -tag -width Ds -compact -offset indent
++.It Aq Cm none
++seconds
++.It Cm s | Cm S
++seconds
++.It Cm m | Cm M
++minutes
++.It Cm h | Cm H
++hours
++.It Cm d | Cm D
++days
++.It Cm w | Cm W
++weeks
++.El
++.Pp
++Each member of the sequence is added together to calculate
++the total time value.
++.Pp
++Time format examples:
++.Pp
++.Bl -tag -width Ds -compact -offset indent
++.It 600
++600 seconds (10 minutes)
++.It 10m
++10 minutes
++.It 1h30m
++1 hour 30 minutes (90 minutes)
++.El
++.Sh FILES
++.Bl -tag -width Ds
++.It Pa /etc/ssh/sshd_config
++Contains configuration data for
++.Xr sshd 1M .
++This file should be writable by root only, but it is recommended
++(though not necessary) that it be world-readable.
++.El
++.Sh SEE ALSO
++.Xr sshd 1M ,
++.Xr pam_unix_session 5
++.Sh AUTHORS
++OpenSSH is a derivative of the original and free
++ssh 1.2.12 release by Tatu Ylonen.
++Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
++Theo de Raadt and Dug Song
++removed many bugs, re-added newer features and
++created OpenSSH.
++Markus Friedl contributed the support for SSH
++protocol versions 1.5 and 2.0.
++Niels Provos and Markus Friedl contributed support
++for privilege separation.
+diff --git a/sshd_config.5 b/sshd_config.5
+deleted file mode 100644
+index 476f71c..0000000
+--- a/sshd_config.5
++++ /dev/null
+@@ -1,1736 +0,0 @@
+-.\"
+-.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
+-.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
+-.\"                    All rights reserved
+-.\"
+-.\" As far as I am concerned, the code I have written for this software
+-.\" can be used freely for any purpose.  Any derived versions of this
+-.\" software must be clearly marked as such, and if the derived work is
+-.\" incompatible with the protocol description in the RFC file, it must be
+-.\" called by a name other than "ssh" or "Secure Shell".
+-.\"
+-.\" Copyright (c) 1999,2000 Markus Friedl.  All rights reserved.
+-.\" Copyright (c) 1999 Aaron Campbell.  All rights reserved.
+-.\" Copyright (c) 1999 Theo de Raadt.  All rights reserved.
+-.\"
+-.\" Redistribution and use in source and binary forms, with or without
+-.\" modification, are permitted provided that the following conditions
+-.\" are met:
+-.\" 1. Redistributions of source code must retain the above copyright
+-.\"    notice, this list of conditions and the following disclaimer.
+-.\" 2. Redistributions in binary form must reproduce the above copyright
+-.\"    notice, this list of conditions and the following disclaimer in the
+-.\"    documentation and/or other materials provided with the distribution.
+-.\"
+-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+-.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+-.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+-.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+-.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+-.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+-.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+-.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+-.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-.\"
+-.\" $OpenBSD: sshd_config.5,v 1.211 2015/08/14 15:32:41 jmc Exp $
+-.Dd $Mdocdate: August 14 2015 $
+-.Dt SSHD_CONFIG 5
+-.Os
+-.Sh NAME
+-.Nm sshd_config
+-.Nd OpenSSH SSH daemon configuration file
+-.Sh SYNOPSIS
+-.Nm /etc/ssh/sshd_config
+-.Sh DESCRIPTION
+-.Xr sshd 8
+-reads configuration data from
+-.Pa /etc/ssh/sshd_config
+-(or the file specified with
+-.Fl f
+-on the command line).
+-The file contains keyword-argument pairs, one per line.
+-Lines starting with
+-.Ql #
+-and empty lines are interpreted as comments.
+-Arguments may optionally be enclosed in double quotes
+-.Pq \&"
+-in order to represent arguments containing spaces.
+-.Pp
+-The possible
+-keywords and their meanings are as follows (note that
+-keywords are case-insensitive and arguments are case-sensitive):
+-.Bl -tag -width Ds
+-.It Cm AcceptEnv
+-Specifies what environment variables sent by the client will be copied into
+-the session's
+-.Xr environ 7 .
+-See
+-.Cm SendEnv
+-in
+-.Xr ssh_config 5
+-for how to configure the client.
+-Note that environment passing is only supported for protocol 2, and
+-that the
+-.Ev TERM
+-environment variable is always sent whenever the client
+-requests a pseudo-terminal as it is required by the protocol.
+-Variables are specified by name, which may contain the wildcard characters
+-.Ql *
+-and
+-.Ql \&? .
+-Multiple environment variables may be separated by whitespace or spread
+-across multiple
+-.Cm AcceptEnv
+-directives.
+-Be warned that some environment variables could be used to bypass restricted
+-user environments.
+-For this reason, care should be taken in the use of this directive.
+-The default is not to accept any environment variables.
+-.It Cm AddressFamily
+-Specifies which address family should be used by
+-.Xr sshd 8 .
+-Valid arguments are
+-.Dq any ,
+-.Dq inet
+-(use IPv4 only), or
+-.Dq inet6
+-(use IPv6 only).
+-The default is
+-.Dq any .
+-.It Cm AllowAgentForwarding
+-Specifies whether
+-.Xr ssh-agent 1
+-forwarding is permitted.
+-The default is
+-.Dq yes .
+-Note that disabling agent forwarding does not improve security
+-unless users are also denied shell access, as they can always install
+-their own forwarders.
+-.It Cm AllowGroups
+-This keyword can be followed by a list of group name patterns, separated
+-by spaces.
+-If specified, login is allowed only for users whose primary
+-group or supplementary group list matches one of the patterns.
+-Only group names are valid; a numerical group ID is not recognized.
+-By default, login is allowed for all groups.
+-The allow/deny directives are processed in the following order:
+-.Cm DenyUsers ,
+-.Cm AllowUsers ,
+-.Cm DenyGroups ,
+-and finally
+-.Cm AllowGroups .
+-.Pp
+-See PATTERNS in
+-.Xr ssh_config 5
+-for more information on patterns.
+-.It Cm AllowTcpForwarding
+-Specifies whether TCP forwarding is permitted.
+-The available options are
+-.Dq yes
+-or
+-.Dq all
+-to allow TCP forwarding,
+-.Dq no
+-to prevent all TCP forwarding,
+-.Dq local
+-to allow local (from the perspective of
+-.Xr ssh 1 )
+-forwarding only or
+-.Dq remote
+-to allow remote forwarding only.
+-The default is
+-.Dq yes .
+-Note that disabling TCP forwarding does not improve security unless
+-users are also denied shell access, as they can always install their
+-own forwarders.
+-.It Cm AllowStreamLocalForwarding
+-Specifies whether StreamLocal (Unix-domain socket) forwarding is permitted.
+-The available options are
+-.Dq yes
+-or
+-.Dq all
+-to allow StreamLocal forwarding,
+-.Dq no
+-to prevent all StreamLocal forwarding,
+-.Dq local
+-to allow local (from the perspective of
+-.Xr ssh 1 )
+-forwarding only or
+-.Dq remote
+-to allow remote forwarding only.
+-The default is
+-.Dq yes .
+-Note that disabling StreamLocal forwarding does not improve security unless
+-users are also denied shell access, as they can always install their
+-own forwarders.
+-.It Cm AllowUsers
+-This keyword can be followed by a list of user name patterns, separated
+-by spaces.
+-If specified, login is allowed only for user names that
+-match one of the patterns.
+-Only user names are valid; a numerical user ID is not recognized.
+-By default, login is allowed for all users.
+-If the pattern takes the form USER@HOST then USER and HOST
+-are separately checked, restricting logins to particular
+-users from particular hosts.
+-The allow/deny directives are processed in the following order:
+-.Cm DenyUsers ,
+-.Cm AllowUsers ,
+-.Cm DenyGroups ,
+-and finally
+-.Cm AllowGroups .
+-.Pp
+-See PATTERNS in
+-.Xr ssh_config 5
+-for more information on patterns.
+-.It Cm AuthenticationMethods
+-Specifies the authentication methods that must be successfully completed
+-for a user to be granted access.
+-This option must be followed by one or more comma-separated lists of
+-authentication method names.
+-Successful authentication requires completion of every method in at least
+-one of these lists.
+-.Pp
+-For example, an argument of
+-.Dq publickey,password publickey,keyboard-interactive
+-would require the user to complete public key authentication, followed by
+-either password or keyboard interactive authentication.
+-Only methods that are next in one or more lists are offered at each stage,
+-so for this example, it would not be possible to attempt password or
+-keyboard-interactive authentication before public key.
+-.Pp
+-For keyboard interactive authentication it is also possible to
+-restrict authentication to a specific device by appending a
+-colon followed by the device identifier
+-.Dq bsdauth ,
+-.Dq pam ,
+-or
+-.Dq skey ,
+-depending on the server configuration.
+-For example,
+-.Dq keyboard-interactive:bsdauth
+-would restrict keyboard interactive authentication to the
+-.Dq bsdauth
+-device.
+-.Pp
+-If the
+-.Dq publickey
+-method is listed more than once,
+-.Xr sshd 8
+-verifies that keys that have been used successfully are not reused for
+-subsequent authentications.
+-For example, an
+-.Cm AuthenticationMethods
+-of
+-.Dq publickey,publickey
+-will require successful authentication using two different public keys.
+-.Pp
+-This option is only available for SSH protocol 2 and will yield a fatal
+-error if enabled if protocol 1 is also enabled.
+-Note that each authentication method listed should also be explicitly enabled
+-in the configuration.
+-The default is not to require multiple authentication; successful completion
+-of a single authentication method is sufficient.
+-.It Cm AuthorizedKeysCommand
+-Specifies a program to be used to look up the user's public keys.
+-The program must be owned by root, not writable by group or others and
+-specified by an absolute path.
+-.Pp
+-Arguments to
+-.Cm AuthorizedKeysCommand
+-may be provided using the following tokens, which will be expanded
+-at runtime: %% is replaced by a literal '%', %u is replaced by the
+-username being authenticated, %h is replaced by the home directory
+-of the user being authenticated, %t is replaced with the key type
+-offered for authentication, %f is replaced with the fingerprint of
+-the key, and %k is replaced with the key being offered for authentication.
+-If no arguments are specified then the username of the target user
+-will be supplied.
+-.Pp
+-The program should produce on standard output zero or
+-more lines of authorized_keys output (see AUTHORIZED_KEYS in
+-.Xr sshd 8 ) .
+-If a key supplied by AuthorizedKeysCommand does not successfully authenticate
+-and authorize the user then public key authentication continues using the usual
+-.Cm AuthorizedKeysFile
+-files.
+-By default, no AuthorizedKeysCommand is run.
+-.It Cm AuthorizedKeysCommandUser
+-Specifies the user under whose account the AuthorizedKeysCommand is run.
+-It is recommended to use a dedicated user that has no other role on the host
+-than running authorized keys commands.
+-If
+-.Cm AuthorizedKeysCommand
+-is specified but
+-.Cm AuthorizedKeysCommandUser
+-is not, then
+-.Xr sshd 8
+-will refuse to start.
+-.It Cm AuthorizedKeysFile
+-Specifies the file that contains the public keys that can be used
+-for user authentication.
+-The format is described in the
+-AUTHORIZED_KEYS FILE FORMAT
+-section of
+-.Xr sshd 8 .
+-.Cm AuthorizedKeysFile
+-may contain tokens of the form %T which are substituted during connection
+-setup.
+-The following tokens are defined: %% is replaced by a literal '%',
+-%h is replaced by the home directory of the user being authenticated, and
+-%u is replaced by the username of that user.
+-After expansion,
+-.Cm AuthorizedKeysFile
+-is taken to be an absolute path or one relative to the user's home
+-directory.
+-Multiple files may be listed, separated by whitespace.
+-The default is
+-.Dq .ssh/authorized_keys .ssh/authorized_keys2 .
+-.It Cm AuthorizedPrincipalsCommand
+-Specifies a program to be used to generate the list of allowed
+-certificate principals as per
+-.Cm AuthorizedPrincipalsFile .
+-The program must be owned by root, not writable by group or others and
+-specified by an absolute path.
+-.Pp
+-Arguments to
+-.Cm AuthorizedPrincipalsCommand
+-may be provided using the following tokens, which will be expanded
+-at runtime: %% is replaced by a literal '%', %u is replaced by the
+-username being authenticated and %h is replaced by the home directory
+-of the user being authenticated.
+-.Pp
+-The program should produce on standard output zero or
+-more lines of
+-.Cm AuthorizedPrincipalsFile
+-output.
+-If either
+-.Cm AuthorizedPrincipalsCommand
+-or
+-.Cm AuthorizedPrincipalsFile
+-is specified, then certificates offered by the client for authentication
+-must contain a principal that is listed.
+-By default, no AuthorizedPrincipalsCommand is run.
+-.It Cm AuthorizedPrincipalsCommandUser
+-Specifies the user under whose account the AuthorizedPrincipalsCommand is run.
+-It is recommended to use a dedicated user that has no other role on the host
+-than running authorized principals commands.
+-If
+-.Cm AuthorizedPrincipalsCommand
+-is specified but
+-.Cm AuthorizedPrincipalsCommandUser
+-is not, then
+-.Xr sshd 8
+-will refuse to start.
+-.It Cm AuthorizedPrincipalsFile
+-Specifies a file that lists principal names that are accepted for
+-certificate authentication.
+-When using certificates signed by a key listed in
+-.Cm TrustedUserCAKeys ,
+-this file lists names, one of which must appear in the certificate for it
+-to be accepted for authentication.
+-Names are listed one per line preceded by key options (as described
+-in AUTHORIZED_KEYS FILE FORMAT in
+-.Xr sshd 8 ) .
+-Empty lines and comments starting with
+-.Ql #
+-are ignored.
+-.Pp
+-.Cm AuthorizedPrincipalsFile
+-may contain tokens of the form %T which are substituted during connection
+-setup.
+-The following tokens are defined: %% is replaced by a literal '%',
+-%h is replaced by the home directory of the user being authenticated, and
+-%u is replaced by the username of that user.
+-After expansion,
+-.Cm AuthorizedPrincipalsFile
+-is taken to be an absolute path or one relative to the user's home
+-directory.
+-.Pp
+-The default is
+-.Dq none ,
+-i.e. not to use a principals file \(en in this case, the username
+-of the user must appear in a certificate's principals list for it to be
+-accepted.
+-Note that
+-.Cm AuthorizedPrincipalsFile
+-is only used when authentication proceeds using a CA listed in
+-.Cm TrustedUserCAKeys
+-and is not consulted for certification authorities trusted via
+-.Pa ~/.ssh/authorized_keys ,
+-though the
+-.Cm principals=
+-key option offers a similar facility (see
+-.Xr sshd 8
+-for details).
+-.It Cm Banner
+-The contents of the specified file are sent to the remote user before
+-authentication is allowed.
+-If the argument is
+-.Dq none
+-then no banner is displayed.
+-This option is only available for protocol version 2.
+-By default, no banner is displayed.
+-.It Cm ChallengeResponseAuthentication
+-Specifies whether challenge-response authentication is allowed (e.g. via
+-PAM or through authentication styles supported in
+-.Xr login.conf 5 )
+-The default is
+-.Dq yes .
+-.It Cm ChrootDirectory
+-Specifies the pathname of a directory to
+-.Xr chroot 2
+-to after authentication.
+-At session startup
+-.Xr sshd 8
+-checks that all components of the pathname are root-owned directories
+-which are not writable by any other user or group.
+-After the chroot,
+-.Xr sshd 8
+-changes the working directory to the user's home directory.
+-.Pp
+-The pathname may contain the following tokens that are expanded at runtime once
+-the connecting user has been authenticated: %% is replaced by a literal '%',
+-%h is replaced by the home directory of the user being authenticated, and
+-%u is replaced by the username of that user.
+-.Pp
+-The
+-.Cm ChrootDirectory
+-must contain the necessary files and directories to support the
+-user's session.
+-For an interactive session this requires at least a shell, typically
+-.Xr sh 1 ,
+-and basic
+-.Pa /dev
+-nodes such as
+-.Xr null 4 ,
+-.Xr zero 4 ,
+-.Xr stdin 4 ,
+-.Xr stdout 4 ,
+-.Xr stderr 4 ,
+-and
+-.Xr tty 4
+-devices.
+-For file transfer sessions using
+-.Dq sftp ,
+-no additional configuration of the environment is necessary if the
+-in-process sftp server is used,
+-though sessions which use logging may require
+-.Pa /dev/log
+-inside the chroot directory on some operating systems (see
+-.Xr sftp-server 8
+-for details).
+-.Pp
+-For safety, it is very important that the directory hierarchy be
+-prevented from modification by other processes on the system (especially
+-those outside the jail).
+-Misconfiguration can lead to unsafe environments which
+-.Xr sshd 8
+-cannot detect.
+-.Pp
+-The default is not to
+-.Xr chroot 2 .
+-.It Cm Ciphers
+-Specifies the ciphers allowed for protocol version 2.
+-Multiple ciphers must be comma-separated.
+-If the specified value begins with a
+-.Sq +
+-character, then the specified ciphers will be appended to the default set
+-instead of replacing them.
+-.Pp
+-The supported ciphers are:
+-.Pp
+-.Bl -item -compact -offset indent
+-.It
+-3des-cbc
+-.It
+-aes128-cbc
+-.It
+-aes192-cbc
+-.It
+-aes256-cbc
+-.It
+-aes128-ctr
+-.It
+-aes192-ctr
+-.It
+-aes256-ctr
+-.It
+-aes128-gcm@openssh.com
+-.It
+-aes256-gcm@openssh.com
+-.It
+-arcfour
+-.It
+-arcfour128
+-.It
+-arcfour256
+-.It
+-blowfish-cbc
+-.It
+-cast128-cbc
+-.It
+-chacha20-poly1305@openssh.com
+-.El
+-.Pp
+-The default is:
+-.Bd -literal -offset indent
+-chacha20-poly1305@openssh.com,
+-aes128-ctr,aes192-ctr,aes256-ctr,
+-aes128-gcm@openssh.com,aes256-gcm@openssh.com
+-.Ed
+-.Pp
+-The list of available ciphers may also be obtained using the
+-.Fl Q
+-option of
+-.Xr ssh 1
+-with an argument of
+-.Dq cipher .
+-.It Cm ClientAliveCountMax
+-Sets the number of client alive messages (see below) which may be
+-sent without
+-.Xr sshd 8
+-receiving any messages back from the client.
+-If this threshold is reached while client alive messages are being sent,
+-sshd will disconnect the client, terminating the session.
+-It is important to note that the use of client alive messages is very
+-different from
+-.Cm TCPKeepAlive
+-(below).
+-The client alive messages are sent through the encrypted channel
+-and therefore will not be spoofable.
+-The TCP keepalive option enabled by
+-.Cm TCPKeepAlive
+-is spoofable.
+-The client alive mechanism is valuable when the client or
+-server depend on knowing when a connection has become inactive.
+-.Pp
+-The default value is 3.
+-If
+-.Cm ClientAliveInterval
+-(see below) is set to 15, and
+-.Cm ClientAliveCountMax
+-is left at the default, unresponsive SSH clients
+-will be disconnected after approximately 45 seconds.
+-This option applies to protocol version 2 only.
+-.It Cm ClientAliveInterval
+-Sets a timeout interval in seconds after which if no data has been received
+-from the client,
+-.Xr sshd 8
+-will send a message through the encrypted
+-channel to request a response from the client.
+-The default
+-is 0, indicating that these messages will not be sent to the client.
+-This option applies to protocol version 2 only.
+-.It Cm Compression
+-Specifies whether compression is allowed, or delayed until
+-the user has authenticated successfully.
+-The argument must be
+-.Dq yes ,
+-.Dq delayed ,
+-or
+-.Dq no .
+-The default is
+-.Dq delayed .
+-.It Cm DenyGroups
+-This keyword can be followed by a list of group name patterns, separated
+-by spaces.
+-Login is disallowed for users whose primary group or supplementary
+-group list matches one of the patterns.
+-Only group names are valid; a numerical group ID is not recognized.
+-By default, login is allowed for all groups.
+-The allow/deny directives are processed in the following order:
+-.Cm DenyUsers ,
+-.Cm AllowUsers ,
+-.Cm DenyGroups ,
+-and finally
+-.Cm AllowGroups .
+-.Pp
+-See PATTERNS in
+-.Xr ssh_config 5
+-for more information on patterns.
+-.It Cm DenyUsers
+-This keyword can be followed by a list of user name patterns, separated
+-by spaces.
+-Login is disallowed for user names that match one of the patterns.
+-Only user names are valid; a numerical user ID is not recognized.
+-By default, login is allowed for all users.
+-If the pattern takes the form USER@HOST then USER and HOST
+-are separately checked, restricting logins to particular
+-users from particular hosts.
+-The allow/deny directives are processed in the following order:
+-.Cm DenyUsers ,
+-.Cm AllowUsers ,
+-.Cm DenyGroups ,
+-and finally
+-.Cm AllowGroups .
+-.Pp
+-See PATTERNS in
+-.Xr ssh_config 5
+-for more information on patterns.
+-.It Cm FingerprintHash
+-Specifies the hash algorithm used when logging key fingerprints.
+-Valid options are:
+-.Dq md5
+-and
+-.Dq sha256 .
+-The default is
+-.Dq sha256 .
+-.It Cm ForceCommand
+-Forces the execution of the command specified by
+-.Cm ForceCommand ,
+-ignoring any command supplied by the client and
+-.Pa ~/.ssh/rc
+-if present.
+-The command is invoked by using the user's login shell with the -c option.
+-This applies to shell, command, or subsystem execution.
+-It is most useful inside a
+-.Cm Match
+-block.
+-The command originally supplied by the client is available in the
+-.Ev SSH_ORIGINAL_COMMAND
+-environment variable.
+-Specifying a command of
+-.Dq internal-sftp
+-will force the use of an in-process sftp server that requires no support
+-files when used with
+-.Cm ChrootDirectory .
+-.It Cm GatewayPorts
+-Specifies whether remote hosts are allowed to connect to ports
+-forwarded for the client.
+-By default,
+-.Xr sshd 8
+-binds remote port forwardings to the loopback address.
+-This prevents other remote hosts from connecting to forwarded ports.
+-.Cm GatewayPorts
+-can be used to specify that sshd
+-should allow remote port forwardings to bind to non-loopback addresses, thus
+-allowing other hosts to connect.
+-The argument may be
+-.Dq no
+-to force remote port forwardings to be available to the local host only,
+-.Dq yes
+-to force remote port forwardings to bind to the wildcard address, or
+-.Dq clientspecified
+-to allow the client to select the address to which the forwarding is bound.
+-The default is
+-.Dq no .
+-.It Cm GSSAPIAuthentication
+-Specifies whether user authentication based on GSSAPI is allowed.
+-The default is
+-.Dq no .
+-Note that this option applies to protocol version 2 only.
+-.It Cm GSSAPICleanupCredentials
+-Specifies whether to automatically destroy the user's credentials cache
+-on logout.
+-The default is
+-.Dq yes .
+-Note that this option applies to protocol version 2 only.
+-.It Cm GSSAPIStrictAcceptorCheck
+-Determines whether to be strict about the identity of the GSSAPI acceptor
+-a client authenticates against.
+-If set to
+-.Dq yes
+-then the client must authenticate against the
+-.Pa host
+-service on the current hostname.
+-If set to
+-.Dq no
+-then the client may authenticate against any service key stored in the
+-machine's default store.
+-This facility is provided to assist with operation on multi homed machines.
+-The default is
+-.Dq yes .
+-.It Cm HostbasedAcceptedKeyTypes
+-Specifies the key types that will be accepted for hostbased authentication
+-as a comma-separated pattern list.
+-Alternately if the specified value begins with a
+-.Sq +
+-character, then the specified key types will be appended to the default set
+-instead of replacing them.
+-The default for this option is:
+-.Bd -literal -offset 3n
+-ecdsa-sha2-nistp256-cert-v01@openssh.com,
+-ecdsa-sha2-nistp384-cert-v01@openssh.com,
+-ecdsa-sha2-nistp521-cert-v01@openssh.com,
+-ssh-ed25519-cert-v01@openssh.com,
+-ssh-rsa-cert-v01@openssh.com,
+-ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
+-ssh-ed25519,ssh-rsa
+-.Ed
+-.Pp
+-The
+-.Fl Q
+-option of
+-.Xr ssh 1
+-may be used to list supported key types.
+-.It Cm HostbasedAuthentication
+-Specifies whether rhosts or /etc/hosts.equiv authentication together
+-with successful public key client host authentication is allowed
+-(host-based authentication).
+-This option is similar to
+-.Cm RhostsRSAAuthentication
+-and applies to protocol version 2 only.
+-The default is
+-.Dq no .
+-.It Cm HostbasedUsesNameFromPacketOnly
+-Specifies whether or not the server will attempt to perform a reverse
+-name lookup when matching the name in the
+-.Pa ~/.shosts ,
+-.Pa ~/.rhosts ,
+-and
+-.Pa /etc/hosts.equiv
+-files during
+-.Cm HostbasedAuthentication .
+-A setting of
+-.Dq yes
+-means that
+-.Xr sshd 8
+-uses the name supplied by the client rather than
+-attempting to resolve the name from the TCP connection itself.
+-The default is
+-.Dq no .
+-.It Cm HostCertificate
+-Specifies a file containing a public host certificate.
+-The certificate's public key must match a private host key already specified
+-by
+-.Cm HostKey .
+-The default behaviour of
+-.Xr sshd 8
+-is not to load any certificates.
+-.It Cm HostKey
+-Specifies a file containing a private host key
+-used by SSH.
+-The default is
+-.Pa /etc/ssh/ssh_host_key
+-for protocol version 1, and
+-.Pa /etc/ssh/ssh_host_dsa_key ,
+-.Pa /etc/ssh/ssh_host_ecdsa_key ,
+-.Pa /etc/ssh/ssh_host_ed25519_key
+-and
+-.Pa /etc/ssh/ssh_host_rsa_key
+-for protocol version 2.
+-.Pp
+-Note that
+-.Xr sshd 8
+-will refuse to use a file if it is group/world-accessible
+-and that the
+-.Cm HostKeyAlgorithms
+-option restricts which of the keys are actually used by
+-.Xr sshd 8 .
+-.Pp
+-It is possible to have multiple host key files.
+-.Dq rsa1
+-keys are used for version 1 and
+-.Dq dsa ,
+-.Dq ecdsa ,
+-.Dq ed25519
+-or
+-.Dq rsa
+-are used for version 2 of the SSH protocol.
+-It is also possible to specify public host key files instead.
+-In this case operations on the private key will be delegated
+-to an
+-.Xr ssh-agent 1 .
+-.It Cm HostKeyAgent
+-Identifies the UNIX-domain socket used to communicate
+-with an agent that has access to the private host keys.
+-If
+-.Dq SSH_AUTH_SOCK
+-is specified, the location of the socket will be read from the
+-.Ev SSH_AUTH_SOCK
+-environment variable.
+-.It Cm HostKeyAlgorithms
+-Specifies the protocol version 2 host key algorithms
+-that the server offers.
+-The default for this option is:
+-.Bd -literal -offset 3n
+-ecdsa-sha2-nistp256-cert-v01@openssh.com,
+-ecdsa-sha2-nistp384-cert-v01@openssh.com,
+-ecdsa-sha2-nistp521-cert-v01@openssh.com,
+-ssh-ed25519-cert-v01@openssh.com,
+-ssh-rsa-cert-v01@openssh.com,
+-ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
+-ssh-ed25519,ssh-rsa
+-.Ed
+-.Pp
+-The list of available key types may also be obtained using the
+-.Fl Q
+-option of
+-.Xr ssh 1
+-with an argument of
+-.Dq key .
+-.It Cm IgnoreRhosts
+-Specifies that
+-.Pa .rhosts
+-and
+-.Pa .shosts
+-files will not be used in
+-.Cm RhostsRSAAuthentication
+-or
+-.Cm HostbasedAuthentication .
+-.Pp
+-.Pa /etc/hosts.equiv
+-and
+-.Pa /etc/shosts.equiv
+-are still used.
+-The default is
+-.Dq yes .
+-.It Cm IgnoreUserKnownHosts
+-Specifies whether
+-.Xr sshd 8
+-should ignore the user's
+-.Pa ~/.ssh/known_hosts
+-during
+-.Cm RhostsRSAAuthentication
+-or
+-.Cm HostbasedAuthentication .
+-The default is
+-.Dq no .
+-.It Cm IPQoS
+-Specifies the IPv4 type-of-service or DSCP class for the connection.
+-Accepted values are
+-.Dq af11 ,
+-.Dq af12 ,
+-.Dq af13 ,
+-.Dq af21 ,
+-.Dq af22 ,
+-.Dq af23 ,
+-.Dq af31 ,
+-.Dq af32 ,
+-.Dq af33 ,
+-.Dq af41 ,
+-.Dq af42 ,
+-.Dq af43 ,
+-.Dq cs0 ,
+-.Dq cs1 ,
+-.Dq cs2 ,
+-.Dq cs3 ,
+-.Dq cs4 ,
+-.Dq cs5 ,
+-.Dq cs6 ,
+-.Dq cs7 ,
+-.Dq ef ,
+-.Dq lowdelay ,
+-.Dq throughput ,
+-.Dq reliability ,
+-or a numeric value.
+-This option may take one or two arguments, separated by whitespace.
+-If one argument is specified, it is used as the packet class unconditionally.
+-If two values are specified, the first is automatically selected for
+-interactive sessions and the second for non-interactive sessions.
+-The default is
+-.Dq lowdelay
+-for interactive sessions and
+-.Dq throughput
+-for non-interactive sessions.
+-.It Cm KbdInteractiveAuthentication
+-Specifies whether to allow keyboard-interactive authentication.
+-The argument to this keyword must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is to use whatever value
+-.Cm ChallengeResponseAuthentication
+-is set to
+-(by default
+-.Dq yes ) .
+-.It Cm KerberosAuthentication
+-Specifies whether the password provided by the user for
+-.Cm PasswordAuthentication
+-will be validated through the Kerberos KDC.
+-To use this option, the server needs a
+-Kerberos servtab which allows the verification of the KDC's identity.
+-The default is
+-.Dq no .
+-.It Cm KerberosGetAFSToken
+-If AFS is active and the user has a Kerberos 5 TGT, attempt to acquire
+-an AFS token before accessing the user's home directory.
+-The default is
+-.Dq no .
+-.It Cm KerberosOrLocalPasswd
+-If password authentication through Kerberos fails then
+-the password will be validated via any additional local mechanism
+-such as
+-.Pa /etc/passwd .
+-The default is
+-.Dq yes .
+-.It Cm KerberosTicketCleanup
+-Specifies whether to automatically destroy the user's ticket cache
+-file on logout.
+-The default is
+-.Dq yes .
+-.It Cm KexAlgorithms
+-Specifies the available KEX (Key Exchange) algorithms.
+-Multiple algorithms must be comma-separated.
+-Alternately if the specified value begins with a
+-.Sq +
+-character, then the specified methods will be appended to the default set
+-instead of replacing them.
+-The supported algorithms are:
+-.Pp
+-.Bl -item -compact -offset indent
+-.It
+-curve25519-sha256@libssh.org
+-.It
+-diffie-hellman-group1-sha1
+-.It
+-diffie-hellman-group14-sha1
+-.It
+-diffie-hellman-group-exchange-sha1
+-.It
+-diffie-hellman-group-exchange-sha256
+-.It
+-ecdh-sha2-nistp256
+-.It
+-ecdh-sha2-nistp384
+-.It
+-ecdh-sha2-nistp521
+-.El
+-.Pp
+-The default is:
+-.Bd -literal -offset indent
+-curve25519-sha256@libssh.org,
+-ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
+-diffie-hellman-group-exchange-sha256,
+-diffie-hellman-group14-sha1
+-.Ed
+-.Pp
+-The list of available key exchange algorithms may also be obtained using the
+-.Fl Q
+-option of
+-.Xr ssh 1
+-with an argument of
+-.Dq kex .
+-.It Cm KeyRegenerationInterval
+-In protocol version 1, the ephemeral server key is automatically regenerated
+-after this many seconds (if it has been used).
+-The purpose of regeneration is to prevent
+-decrypting captured sessions by later breaking into the machine and
+-stealing the keys.
+-The key is never stored anywhere.
+-If the value is 0, the key is never regenerated.
+-The default is 3600 (seconds).
+-.It Cm ListenAddress
+-Specifies the local addresses
+-.Xr sshd 8
+-should listen on.
+-The following forms may be used:
+-.Pp
+-.Bl -item -offset indent -compact
+-.It
+-.Cm ListenAddress
+-.Sm off
+-.Ar host | Ar IPv4_addr | Ar IPv6_addr
+-.Sm on
+-.It
+-.Cm ListenAddress
+-.Sm off
+-.Ar host | Ar IPv4_addr : Ar port
+-.Sm on
+-.It
+-.Cm ListenAddress
+-.Sm off
+-.Oo
+-.Ar host | Ar IPv6_addr Oc : Ar port
+-.Sm on
+-.El
+-.Pp
+-If
+-.Ar port
+-is not specified,
+-sshd will listen on the address and all
+-.Cm Port
+-options specified.
+-The default is to listen on all local addresses.
+-Multiple
+-.Cm ListenAddress
+-options are permitted.
+-.It Cm LoginGraceTime
+-The server disconnects after this time if the user has not
+-successfully logged in.
+-If the value is 0, there is no time limit.
+-The default is 120 seconds.
+-.It Cm LogLevel
+-Gives the verbosity level that is used when logging messages from
+-.Xr sshd 8 .
+-The possible values are:
+-QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3.
+-The default is INFO.
+-DEBUG and DEBUG1 are equivalent.
+-DEBUG2 and DEBUG3 each specify higher levels of debugging output.
+-Logging with a DEBUG level violates the privacy of users and is not recommended.
+-.It Cm MACs
+-Specifies the available MAC (message authentication code) algorithms.
+-The MAC algorithm is used in protocol version 2
+-for data integrity protection.
+-Multiple algorithms must be comma-separated.
+-If the specified value begins with a
+-.Sq +
+-character, then the specified algorithms will be appended to the default set
+-instead of replacing them.
+-.Pp
+-The algorithms that contain
+-.Dq -etm
+-calculate the MAC after encryption (encrypt-then-mac).
+-These are considered safer and their use recommended.
+-The supported MACs are:
+-.Pp
+-.Bl -item -compact -offset indent
+-.It
+-hmac-md5
+-.It
+-hmac-md5-96
+-.It
+-hmac-ripemd160
+-.It
+-hmac-sha1
+-.It
+-hmac-sha1-96
+-.It
+-hmac-sha2-256
+-.It
+-hmac-sha2-512
+-.It
+-umac-64@openssh.com
+-.It
+-umac-128@openssh.com
+-.It
+-hmac-md5-etm@openssh.com
+-.It
+-hmac-md5-96-etm@openssh.com
+-.It
+-hmac-ripemd160-etm@openssh.com
+-.It
+-hmac-sha1-etm@openssh.com
+-.It
+-hmac-sha1-96-etm@openssh.com
+-.It
+-hmac-sha2-256-etm@openssh.com
+-.It
+-hmac-sha2-512-etm@openssh.com
+-.It
+-umac-64-etm@openssh.com
+-.It
+-umac-128-etm@openssh.com
+-.El
+-.Pp
+-The default is:
+-.Bd -literal -offset indent
+-umac-64-etm@openssh.com,umac-128-etm@openssh.com,
+-hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,
+-umac-64@openssh.com,umac-128@openssh.com,
+-hmac-sha2-256,hmac-sha2-512
+-.Ed
+-.Pp
+-The list of available MAC algorithms may also be obtained using the
+-.Fl Q
+-option of
+-.Xr ssh 1
+-with an argument of
+-.Dq mac .
+-.It Cm Match
+-Introduces a conditional block.
+-If all of the criteria on the
+-.Cm Match
+-line are satisfied, the keywords on the following lines override those
+-set in the global section of the config file, until either another
+-.Cm Match
+-line or the end of the file.
+-If a keyword appears in multiple
+-.Cm Match
+-blocks that are satisfied, only the first instance of the keyword is
+-applied.
+-.Pp
+-The arguments to
+-.Cm Match
+-are one or more criteria-pattern pairs or the single token
+-.Cm All
+-which matches all criteria.
+-The available criteria are
+-.Cm User ,
+-.Cm Group ,
+-.Cm Host ,
+-.Cm LocalAddress ,
+-.Cm LocalPort ,
+-and
+-.Cm Address .
+-The match patterns may consist of single entries or comma-separated
+-lists and may use the wildcard and negation operators described in the
+-PATTERNS section of
+-.Xr ssh_config 5 .
+-.Pp
+-The patterns in an
+-.Cm Address
+-criteria may additionally contain addresses to match in CIDR
+-address/masklen format, e.g.\&
+-.Dq 192.0.2.0/24
+-or
+-.Dq 3ffe:ffff::/32 .
+-Note that the mask length provided must be consistent with the address -
+-it is an error to specify a mask length that is too long for the address
+-or one with bits set in this host portion of the address.
+-For example,
+-.Dq 192.0.2.0/33
+-and
+-.Dq 192.0.2.0/8
+-respectively.
+-.Pp
+-Only a subset of keywords may be used on the lines following a
+-.Cm Match
+-keyword.
+-Available keywords are
+-.Cm AcceptEnv ,
+-.Cm AllowAgentForwarding ,
+-.Cm AllowGroups ,
+-.Cm AllowStreamLocalForwarding ,
+-.Cm AllowTcpForwarding ,
+-.Cm AllowUsers ,
+-.Cm AuthenticationMethods ,
+-.Cm AuthorizedKeysCommand ,
+-.Cm AuthorizedKeysCommandUser ,
+-.Cm AuthorizedKeysFile ,
+-.Cm AuthorizedPrincipalsFile ,
+-.Cm Banner ,
+-.Cm ChrootDirectory ,
+-.Cm DenyGroups ,
+-.Cm DenyUsers ,
+-.Cm ForceCommand ,
+-.Cm GatewayPorts ,
+-.Cm GSSAPIAuthentication ,
+-.Cm HostbasedAcceptedKeyTypes ,
+-.Cm HostbasedAuthentication ,
+-.Cm HostbasedUsesNameFromPacketOnly ,
+-.Cm IPQoS ,
+-.Cm KbdInteractiveAuthentication ,
+-.Cm KerberosAuthentication ,
+-.Cm MaxAuthTries ,
+-.Cm MaxSessions ,
+-.Cm PasswordAuthentication ,
+-.Cm PermitEmptyPasswords ,
+-.Cm PermitOpen ,
+-.Cm PermitRootLogin ,
+-.Cm PermitTTY ,
+-.Cm PermitTunnel ,
+-.Cm PermitUserRC ,
+-.Cm PubkeyAcceptedKeyTypes ,
+-.Cm PubkeyAuthentication ,
+-.Cm RekeyLimit ,
+-.Cm RevokedKeys ,
+-.Cm RhostsRSAAuthentication ,
+-.Cm RSAAuthentication ,
+-.Cm StreamLocalBindMask ,
+-.Cm StreamLocalBindUnlink ,
+-.Cm TrustedUserCAKeys ,
+-.Cm X11DisplayOffset ,
+-.Cm X11Forwarding
+-and
+-.Cm X11UseLocalHost .
+-.It Cm MaxAuthTries
+-Specifies the maximum number of authentication attempts permitted per
+-connection.
+-Once the number of failures reaches half this value,
+-additional failures are logged.
+-The default is 6.
+-.It Cm MaxSessions
+-Specifies the maximum number of open sessions permitted per network connection.
+-The default is 10.
+-.It Cm MaxStartups
+-Specifies the maximum number of concurrent unauthenticated connections to the
+-SSH daemon.
+-Additional connections will be dropped until authentication succeeds or the
+-.Cm LoginGraceTime
+-expires for a connection.
+-The default is 10:30:100.
+-.Pp
+-Alternatively, random early drop can be enabled by specifying
+-the three colon separated values
+-.Dq start:rate:full
+-(e.g. "10:30:60").
+-.Xr sshd 8
+-will refuse connection attempts with a probability of
+-.Dq rate/100
+-(30%)
+-if there are currently
+-.Dq start
+-(10)
+-unauthenticated connections.
+-The probability increases linearly and all connection attempts
+-are refused if the number of unauthenticated connections reaches
+-.Dq full
+-(60).
+-.It Cm PasswordAuthentication
+-Specifies whether password authentication is allowed.
+-The default is
+-.Dq yes .
+-.It Cm PermitEmptyPasswords
+-When password authentication is allowed, it specifies whether the
+-server allows login to accounts with empty password strings.
+-The default is
+-.Dq no .
+-.It Cm PermitOpen
+-Specifies the destinations to which TCP port forwarding is permitted.
+-The forwarding specification must be one of the following forms:
+-.Pp
+-.Bl -item -offset indent -compact
+-.It
+-.Cm PermitOpen
+-.Sm off
+-.Ar host : port
+-.Sm on
+-.It
+-.Cm PermitOpen
+-.Sm off
+-.Ar IPv4_addr : port
+-.Sm on
+-.It
+-.Cm PermitOpen
+-.Sm off
+-.Ar \&[ IPv6_addr \&] : port
+-.Sm on
+-.El
+-.Pp
+-Multiple forwards may be specified by separating them with whitespace.
+-An argument of
+-.Dq any
+-can be used to remove all restrictions and permit any forwarding requests.
+-An argument of
+-.Dq none
+-can be used to prohibit all forwarding requests.
+-By default all port forwarding requests are permitted.
+-.It Cm PermitRootLogin
+-Specifies whether root can log in using
+-.Xr ssh 1 .
+-The argument must be
+-.Dq yes ,
+-.Dq prohibit-password ,
+-.Dq without-password ,
+-.Dq forced-commands-only ,
+-or
+-.Dq no .
+-The default is
+-.Dq prohibit-password .
+-.Pp
+-If this option is set to
+-.Dq prohibit-password
+-or
+-.Dq without-password ,
+-password and keyboard-interactive authentication are disabled for root.
+-.Pp
+-If this option is set to
+-.Dq forced-commands-only ,
+-root login with public key authentication will be allowed,
+-but only if the
+-.Ar command
+-option has been specified
+-(which may be useful for taking remote backups even if root login is
+-normally not allowed).
+-All other authentication methods are disabled for root.
+-.Pp
+-If this option is set to
+-.Dq no ,
+-root is not allowed to log in.
+-.It Cm PermitTunnel
+-Specifies whether
+-.Xr tun 4
+-device forwarding is allowed.
+-The argument must be
+-.Dq yes ,
+-.Dq point-to-point
+-(layer 3),
+-.Dq ethernet
+-(layer 2), or
+-.Dq no .
+-Specifying
+-.Dq yes
+-permits both
+-.Dq point-to-point
+-and
+-.Dq ethernet .
+-The default is
+-.Dq no .
+-.Pp
+-Independent of this setting, the permissions of the selected
+-.Xr tun 4
+-device must allow access to the user.
+-.It Cm PermitTTY
+-Specifies whether
+-.Xr pty 4
+-allocation is permitted.
+-The default is
+-.Dq yes .
+-.It Cm PermitUserEnvironment
+-Specifies whether
+-.Pa ~/.ssh/environment
+-and
+-.Cm environment=
+-options in
+-.Pa ~/.ssh/authorized_keys
+-are processed by
+-.Xr sshd 8 .
+-The default is
+-.Dq no .
+-Enabling environment processing may enable users to bypass access
+-restrictions in some configurations using mechanisms such as
+-.Ev LD_PRELOAD .
+-.It Cm PermitUserRC
+-Specifies whether any
+-.Pa ~/.ssh/rc
+-file is executed.
+-The default is
+-.Dq yes .
+-.It Cm PidFile
+-Specifies the file that contains the process ID of the
+-SSH daemon, or
+-.Dq none
+-to not write one.
+-The default is
+-.Pa /var/run/sshd.pid .
+-.It Cm Port
+-Specifies the port number that
+-.Xr sshd 8
+-listens on.
+-The default is 22.
+-Multiple options of this type are permitted.
+-See also
+-.Cm ListenAddress .
+-.It Cm PrintLastLog
+-Specifies whether
+-.Xr sshd 8
+-should print the date and time of the last user login when a user logs
+-in interactively.
+-On Solaris this option is always ignored since pam_unix_session(5)
+-reports the last login time.
+-.It Cm PrintMotd
+-Specifies whether
+-.Xr sshd 8
+-should print
+-.Pa /etc/motd
+-when a user logs in interactively.
+-(On some systems it is also printed by the shell,
+-.Pa /etc/profile ,
+-or equivalent.)
+-The default is
+-.Dq yes .
+-.It Cm Protocol
+-Specifies the protocol versions
+-.Xr sshd 8
+-supports.
+-The possible values are
+-.Sq 1
+-and
+-.Sq 2 .
+-Multiple versions must be comma-separated.
+-The default is
+-.Sq 2 .
+-Note that the order of the protocol list does not indicate preference,
+-because the client selects among multiple protocol versions offered
+-by the server.
+-Specifying
+-.Dq 2,1
+-is identical to
+-.Dq 1,2 .
+-.It Cm PubkeyAcceptedKeyTypes
+-Specifies the key types that will be accepted for public key authentication
+-as a comma-separated pattern list.
+-Alternately if the specified value begins with a
+-.Sq +
+-character, then the specified key types will be appended to the default set
+-instead of replacing them.
+-The default for this option is:
+-.Bd -literal -offset 3n
+-ecdsa-sha2-nistp256-cert-v01@openssh.com,
+-ecdsa-sha2-nistp384-cert-v01@openssh.com,
+-ecdsa-sha2-nistp521-cert-v01@openssh.com,
+-ssh-ed25519-cert-v01@openssh.com,
+-ssh-rsa-cert-v01@openssh.com,
+-ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
+-ssh-ed25519,ssh-rsa
+-.Ed
+-.Pp
+-The
+-.Fl Q
+-option of
+-.Xr ssh 1
+-may be used to list supported key types.
+-.It Cm PubkeyAuthentication
+-Specifies whether public key authentication is allowed.
+-The default is
+-.Dq yes .
+-Note that this option applies to protocol version 2 only.
+-.It Cm RekeyLimit
+-Specifies the maximum amount of data that may be transmitted before the
+-session key is renegotiated, optionally followed a maximum amount of
+-time that may pass before the session key is renegotiated.
+-The first argument is specified in bytes and may have a suffix of
+-.Sq K ,
+-.Sq M ,
+-or
+-.Sq G
+-to indicate Kilobytes, Megabytes, or Gigabytes, respectively.
+-The default is between
+-.Sq 1G
+-and
+-.Sq 4G ,
+-depending on the cipher.
+-The optional second value is specified in seconds and may use any of the
+-units documented in the
+-.Sx TIME FORMATS
+-section.
+-The default value for
+-.Cm RekeyLimit
+-is
+-.Dq default none ,
+-which means that rekeying is performed after the cipher's default amount
+-of data has been sent or received and no time based rekeying is done.
+-This option applies to protocol version 2 only.
+-.It Cm RevokedKeys
+-Specifies revoked public keys file, or
+-.Dq none
+-to not use one.
+-Keys listed in this file will be refused for public key authentication.
+-Note that if this file is not readable, then public key authentication will
+-be refused for all users.
+-Keys may be specified as a text file, listing one public key per line, or as
+-an OpenSSH Key Revocation List (KRL) as generated by
+-.Xr ssh-keygen 1 .
+-For more information on KRLs, see the KEY REVOCATION LISTS section in
+-.Xr ssh-keygen 1 .
+-.It Cm RhostsRSAAuthentication
+-Specifies whether rhosts or /etc/hosts.equiv authentication together
+-with successful RSA host authentication is allowed.
+-The default is
+-.Dq no .
+-This option applies to protocol version 1 only.
+-.It Cm RSAAuthentication
+-Specifies whether pure RSA authentication is allowed.
+-The default is
+-.Dq yes .
+-This option applies to protocol version 1 only.
+-.It Cm ServerKeyBits
+-Defines the number of bits in the ephemeral protocol version 1 server key.
+-The default and minimum value is 1024.
+-.It Cm StreamLocalBindMask
+-Sets the octal file creation mode mask
+-.Pq umask
+-used when creating a Unix-domain socket file for local or remote
+-port forwarding.
+-This option is only used for port forwarding to a Unix-domain socket file.
+-.Pp
+-The default value is 0177, which creates a Unix-domain socket file that is
+-readable and writable only by the owner.
+-Note that not all operating systems honor the file mode on Unix-domain
+-socket files.
+-.It Cm StreamLocalBindUnlink
+-Specifies whether to remove an existing Unix-domain socket file for local
+-or remote port forwarding before creating a new one.
+-If the socket file already exists and
+-.Cm StreamLocalBindUnlink
+-is not enabled,
+-.Nm sshd
+-will be unable to forward the port to the Unix-domain socket file.
+-This option is only used for port forwarding to a Unix-domain socket file.
+-.Pp
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-.It Cm StrictModes
+-Specifies whether
+-.Xr sshd 8
+-should check file modes and ownership of the
+-user's files and home directory before accepting login.
+-This is normally desirable because novices sometimes accidentally leave their
+-directory or files world-writable.
+-The default is
+-.Dq yes .
+-Note that this does not apply to
+-.Cm ChrootDirectory ,
+-whose permissions and ownership are checked unconditionally.
+-.It Cm Subsystem
+-Configures an external subsystem (e.g. file transfer daemon).
+-Arguments should be a subsystem name and a command (with optional arguments)
+-to execute upon subsystem request.
+-.Pp
+-The command
+-.Xr sftp-server 8
+-implements the
+-.Dq sftp
+-file transfer subsystem.
+-.Pp
+-Alternately the name
+-.Dq internal-sftp
+-implements an in-process
+-.Dq sftp
+-server.
+-This may simplify configurations using
+-.Cm ChrootDirectory
+-to force a different filesystem root on clients.
+-.Pp
+-By default no subsystems are defined.
+-Note that this option applies to protocol version 2 only.
+-.It Cm SyslogFacility
+-Gives the facility code that is used when logging messages from
+-.Xr sshd 8 .
+-The possible values are: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2,
+-LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7.
+-The default is AUTH.
+-.It Cm TCPKeepAlive
+-Specifies whether the system should send TCP keepalive messages to the
+-other side.
+-If they are sent, death of the connection or crash of one
+-of the machines will be properly noticed.
+-However, this means that
+-connections will die if the route is down temporarily, and some people
+-find it annoying.
+-On the other hand, if TCP keepalives are not sent,
+-sessions may hang indefinitely on the server, leaving
+-.Dq ghost
+-users and consuming server resources.
+-.Pp
+-The default is
+-.Dq yes
+-(to send TCP keepalive messages), and the server will notice
+-if the network goes down or the client host crashes.
+-This avoids infinitely hanging sessions.
+-.Pp
+-To disable TCP keepalive messages, the value should be set to
+-.Dq no .
+-.It Cm TrustedUserCAKeys
+-Specifies a file containing public keys of certificate authorities that are
+-trusted to sign user certificates for authentication, or
+-.Dq none
+-to not use one.
+-Keys are listed one per line; empty lines and comments starting with
+-.Ql #
+-are allowed.
+-If a certificate is presented for authentication and has its signing CA key
+-listed in this file, then it may be used for authentication for any user
+-listed in the certificate's principals list.
+-Note that certificates that lack a list of principals will not be permitted
+-for authentication using
+-.Cm TrustedUserCAKeys .
+-For more details on certificates, see the CERTIFICATES section in
+-.Xr ssh-keygen 1 .
+-.It Cm UseDNS
+-Specifies whether
+-.Xr sshd 8
+-should look up the remote host name, and to check that
+-the resolved host name for the remote IP address maps back to the
+-very same IP address.
+-.Pp
+-If this option is set to
+-.Dq no
+-(the default) then only addresses and not host names may be used in
+-.Pa ~/.ssh/known_hosts
+-.Cm from
+-and
+-.Nm
+-.Cm Match
+-.Cm Host
+-directives.
+-.It Cm UseLogin
+-Specifies whether
+-.Xr login 1
+-is used for interactive login sessions.
+-The default is
+-.Dq no .
+-Note that
+-.Xr login 1
+-is never used for remote command execution.
+-Note also, that if this is enabled,
+-.Cm X11Forwarding
+-will be disabled because
+-.Xr login 1
+-does not know how to handle
+-.Xr xauth 1
+-cookies.
+-If
+-.Cm UsePrivilegeSeparation
+-is specified, it will be disabled after authentication.
+-.It Cm UsePAM
+-Enables the Pluggable Authentication Module interface.
+-If set to
+-.Dq yes
+-this will enable PAM authentication using
+-.Cm ChallengeResponseAuthentication
+-and
+-.Cm PasswordAuthentication
+-in addition to PAM account and session module processing for all
+-authentication types.
+-.Pp
+-Because PAM challenge-response authentication usually serves an equivalent
+-role to password authentication, you should disable either
+-.Cm PasswordAuthentication
+-or
+-.Cm ChallengeResponseAuthentication.
+-.Pp
+-If
+-.Cm UsePAM
+-is enabled, you will not be able to run
+-.Xr sshd 8
+-as a non-root user.
+-The default is
+-.Dq no .
+-.It Cm UsePrivilegeSeparation
+-Specifies whether
+-.Xr sshd 8
+-separates privileges by creating an unprivileged child process
+-to deal with incoming network traffic.
+-After successful authentication, another process will be created that has
+-the privilege of the authenticated user.
+-The goal of privilege separation is to prevent privilege
+-escalation by containing any corruption within the unprivileged processes.
+-The default is
+-.Dq yes .
+-If
+-.Cm UsePrivilegeSeparation
+-is set to
+-.Dq sandbox
+-then the pre-authentication unprivileged process is subject to additional
+-restrictions.
+-.It Cm VersionAddendum
+-Optionally specifies additional text to append to the SSH protocol banner
+-sent by the server upon connection.
+-The default is
+-.Dq none .
+-.It Cm X11DisplayOffset
+-Specifies the first display number available for
+-.Xr sshd 8 Ns 's
+-X11 forwarding.
+-This prevents sshd from interfering with real X11 servers.
+-The default is 10.
+-.It Cm X11Forwarding
+-Specifies whether X11 forwarding is permitted.
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq no .
+-.Pp
+-When X11 forwarding is enabled, there may be additional exposure to
+-the server and to client displays if the
+-.Xr sshd 8
+-proxy display is configured to listen on the wildcard address (see
+-.Cm X11UseLocalhost
+-below), though this is not the default.
+-Additionally, the authentication spoofing and authentication data
+-verification and substitution occur on the client side.
+-The security risk of using X11 forwarding is that the client's X11
+-display server may be exposed to attack when the SSH client requests
+-forwarding (see the warnings for
+-.Cm ForwardX11
+-in
+-.Xr ssh_config 5 ) .
+-A system administrator may have a stance in which they want to
+-protect clients that may expose themselves to attack by unwittingly
+-requesting X11 forwarding, which can warrant a
+-.Dq no
+-setting.
+-.Pp
+-Note that disabling X11 forwarding does not prevent users from
+-forwarding X11 traffic, as users can always install their own forwarders.
+-X11 forwarding is automatically disabled if
+-.Cm UseLogin
+-is enabled.
+-.It Cm X11UseLocalhost
+-Specifies whether
+-.Xr sshd 8
+-should bind the X11 forwarding server to the loopback address or to
+-the wildcard address.
+-By default,
+-sshd binds the forwarding server to the loopback address and sets the
+-hostname part of the
+-.Ev DISPLAY
+-environment variable to
+-.Dq localhost .
+-This prevents remote hosts from connecting to the proxy display.
+-However, some older X11 clients may not function with this
+-configuration.
+-.Cm X11UseLocalhost
+-may be set to
+-.Dq no
+-to specify that the forwarding server should be bound to the wildcard
+-address.
+-The argument must be
+-.Dq yes
+-or
+-.Dq no .
+-The default is
+-.Dq yes .
+-.It Cm XAuthLocation
+-Specifies the full pathname of the
+-.Xr xauth 1
+-program, or
+-.Dq none
+-to not use one.
+-The default is
+-.Pa /usr/X11R6/bin/xauth .
+-.El
+-.Sh TIME FORMATS
+-.Xr sshd 8
+-command-line arguments and configuration file options that specify time
+-may be expressed using a sequence of the form:
+-.Sm off
+-.Ar time Op Ar qualifier ,
+-.Sm on
+-where
+-.Ar time
+-is a positive integer value and
+-.Ar qualifier
+-is one of the following:
+-.Pp
+-.Bl -tag -width Ds -compact -offset indent
+-.It Aq Cm none
+-seconds
+-.It Cm s | Cm S
+-seconds
+-.It Cm m | Cm M
+-minutes
+-.It Cm h | Cm H
+-hours
+-.It Cm d | Cm D
+-days
+-.It Cm w | Cm W
+-weeks
+-.El
+-.Pp
+-Each member of the sequence is added together to calculate
+-the total time value.
+-.Pp
+-Time format examples:
+-.Pp
+-.Bl -tag -width Ds -compact -offset indent
+-.It 600
+-600 seconds (10 minutes)
+-.It 10m
+-10 minutes
+-.It 1h30m
+-1 hour 30 minutes (90 minutes)
+-.El
+-.Sh FILES
+-.Bl -tag -width Ds
+-.It Pa /etc/ssh/sshd_config
+-Contains configuration data for
+-.Xr sshd 8 .
+-This file should be writable by root only, but it is recommended
+-(though not necessary) that it be world-readable.
+-.El
+-.Sh SEE ALSO
+-.Xr sshd 8 ,
+-.Xr pam_unix_session 5
+-.Sh AUTHORS
+-OpenSSH is a derivative of the original and free
+-ssh 1.2.12 release by Tatu Ylonen.
+-Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
+-Theo de Raadt and Dug Song
+-removed many bugs, re-added newer features and
+-created OpenSSH.
+-Markus Friedl contributed the support for SSH
+-protocol versions 1.5 and 2.0.
+-Niels Provos and Markus Friedl contributed support
+-for privilege separation.
+-- 
+2.3.2 (Apple Git-55)
+
