xref: /freebsd/crypto/openssh/sshd_config.5 (revision 45dd2eaac379e5576f745380260470204c49beac)
1.\"
2.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
3.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
4.\"                    All rights reserved
5.\"
6.\" As far as I am concerned, the code I have written for this software
7.\" can be used freely for any purpose.  Any derived versions of this
8.\" software must be clearly marked as such, and if the derived work is
9.\" incompatible with the protocol description in the RFC file, it must be
10.\" called by a name other than "ssh" or "Secure Shell".
11.\"
12.\" Copyright (c) 1999,2000 Markus Friedl.  All rights reserved.
13.\" Copyright (c) 1999 Aaron Campbell.  All rights reserved.
14.\" Copyright (c) 1999 Theo de Raadt.  All rights reserved.
15.\"
16.\" Redistribution and use in source and binary forms, with or without
17.\" modification, are permitted provided that the following conditions
18.\" are met:
19.\" 1. Redistributions of source code must retain the above copyright
20.\"    notice, this list of conditions and the following disclaimer.
21.\" 2. Redistributions in binary form must reproduce the above copyright
22.\"    notice, this list of conditions and the following disclaimer in the
23.\"    documentation and/or other materials provided with the distribution.
24.\"
25.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
26.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
27.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
28.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
29.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
30.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\"
36.\" $OpenBSD: sshd_config.5,v 1.340 2022/03/31 17:58:44 naddy Exp $
37.\" $FreeBSD$
38.Dd $Mdocdate: March 31 2022 $
39.Dt SSHD_CONFIG 5
40.Os
41.Sh NAME
42.Nm sshd_config
43.Nd OpenSSH daemon configuration file
44.Sh DESCRIPTION
45.Xr sshd 8
46reads configuration data from
47.Pa /etc/ssh/sshd_config
48(or the file specified with
49.Fl f
50on the command line).
51The file contains keyword-argument pairs, one per line.
52For each keyword, the first obtained value will be used.
53Lines starting with
54.Ql #
55and empty lines are interpreted as comments.
56Arguments may optionally be enclosed in double quotes
57.Pq \&"
58in order to represent arguments containing spaces.
59.Pp
60The possible
61keywords and their meanings are as follows (note that
62keywords are case-insensitive and arguments are case-sensitive):
63.Bl -tag -width Ds
64.It Cm AcceptEnv
65Specifies what environment variables sent by the client will be copied into
66the session's
67.Xr environ 7 .
68See
69.Cm SendEnv
70and
71.Cm SetEnv
72in
73.Xr ssh_config 5
74for how to configure the client.
75The
76.Ev TERM
77environment variable is always accepted whenever the client
78requests a pseudo-terminal as it is required by the protocol.
79Variables are specified by name, which may contain the wildcard characters
80.Ql *
81and
82.Ql \&? .
83Multiple environment variables may be separated by whitespace or spread
84across multiple
85.Cm AcceptEnv
86directives.
87Be warned that some environment variables could be used to bypass restricted
88user environments.
89For this reason, care should be taken in the use of this directive.
90The default is not to accept any environment variables.
91.It Cm AddressFamily
92Specifies which address family should be used by
93.Xr sshd 8 .
94Valid arguments are
95.Cm any
96(the default),
97.Cm inet
98(use IPv4 only), or
99.Cm inet6
100(use IPv6 only).
101.It Cm AllowAgentForwarding
102Specifies whether
103.Xr ssh-agent 1
104forwarding is permitted.
105The default is
106.Cm yes .
107Note that disabling agent forwarding does not improve security
108unless users are also denied shell access, as they can always install
109their own forwarders.
110.It Cm AllowGroups
111This keyword can be followed by a list of group name patterns, separated
112by spaces.
113If specified, login is allowed only for users whose primary
114group or supplementary group list matches one of the patterns.
115Only group names are valid; a numerical group ID is not recognized.
116By default, login is allowed for all groups.
117The allow/deny groups directives are processed in the following order:
118.Cm DenyGroups ,
119.Cm AllowGroups .
120.Pp
121See PATTERNS in
122.Xr ssh_config 5
123for more information on patterns.
124.It Cm AllowStreamLocalForwarding
125Specifies whether StreamLocal (Unix-domain socket) forwarding is permitted.
126The available options are
127.Cm yes
128(the default)
129or
130.Cm all
131to allow StreamLocal forwarding,
132.Cm no
133to prevent all StreamLocal forwarding,
134.Cm local
135to allow local (from the perspective of
136.Xr ssh 1 )
137forwarding only or
138.Cm remote
139to allow remote forwarding only.
140Note that disabling StreamLocal forwarding does not improve security unless
141users are also denied shell access, as they can always install their
142own forwarders.
143.It Cm AllowTcpForwarding
144Specifies whether TCP forwarding is permitted.
145The available options are
146.Cm yes
147(the default)
148or
149.Cm all
150to allow TCP forwarding,
151.Cm no
152to prevent all TCP forwarding,
153.Cm local
154to allow local (from the perspective of
155.Xr ssh 1 )
156forwarding only or
157.Cm remote
158to allow remote forwarding only.
159Note that disabling TCP forwarding does not improve security unless
160users are also denied shell access, as they can always install their
161own forwarders.
162.It Cm AllowUsers
163This keyword can be followed by a list of user name patterns, separated
164by spaces.
165If specified, login is allowed only for user names that
166match one of the patterns.
167Only user names are valid; a numerical user ID is not recognized.
168By default, login is allowed for all users.
169If the pattern takes the form USER@HOST then USER and HOST
170are separately checked, restricting logins to particular
171users from particular hosts.
172HOST criteria may additionally contain addresses to match in CIDR
173address/masklen format.
174The allow/deny users directives are processed in the following order:
175.Cm DenyUsers ,
176.Cm AllowUsers .
177.Pp
178See PATTERNS in
179.Xr ssh_config 5
180for more information on patterns.
181.It Cm AuthenticationMethods
182Specifies the authentication methods that must be successfully completed
183for a user to be granted access.
184This option must be followed by one or more lists of comma-separated
185authentication method names, or by the single string
186.Cm any
187to indicate the default behaviour of accepting any single authentication
188method.
189If the default is overridden, then successful authentication requires
190completion of every method in at least one of these lists.
191.Pp
192For example,
193.Qq publickey,password publickey,keyboard-interactive
194would require the user to complete public key authentication, followed by
195either password or keyboard interactive authentication.
196Only methods that are next in one or more lists are offered at each stage,
197so for this example it would not be possible to attempt password or
198keyboard-interactive authentication before public key.
199.Pp
200For keyboard interactive authentication it is also possible to
201restrict authentication to a specific device by appending a
202colon followed by the device identifier
203.Cm bsdauth
204or
205.Cm pam .
206depending on the server configuration.
207For example,
208.Qq keyboard-interactive:bsdauth
209would restrict keyboard interactive authentication to the
210.Cm bsdauth
211device.
212.Pp
213If the publickey method is listed more than once,
214.Xr sshd 8
215verifies that keys that have been used successfully are not reused for
216subsequent authentications.
217For example,
218.Qq publickey,publickey
219requires successful authentication using two different public keys.
220.Pp
221Note that each authentication method listed should also be explicitly enabled
222in the configuration.
223.Pp
224The available authentication methods are:
225.Qq gssapi-with-mic ,
226.Qq hostbased ,
227.Qq keyboard-interactive ,
228.Qq none
229(used for access to password-less accounts when
230.Cm PermitEmptyPasswords
231is enabled),
232.Qq password
233and
234.Qq publickey .
235.It Cm AuthorizedKeysCommand
236Specifies a program to be used to look up the user's public keys.
237The program must be owned by root, not writable by group or others and
238specified by an absolute path.
239Arguments to
240.Cm AuthorizedKeysCommand
241accept the tokens described in the
242.Sx TOKENS
243section.
244If no arguments are specified then the username of the target user is used.
245.Pp
246The program should produce on standard output zero or
247more lines of authorized_keys output (see
248.Sx AUTHORIZED_KEYS
249in
250.Xr sshd 8 ) .
251.Cm AuthorizedKeysCommand
252is tried after the usual
253.Cm AuthorizedKeysFile
254files and will not be executed if a matching key is found there.
255By default, no
256.Cm AuthorizedKeysCommand
257is run.
258.It Cm AuthorizedKeysCommandUser
259Specifies the user under whose account the
260.Cm AuthorizedKeysCommand
261is run.
262It is recommended to use a dedicated user that has no other role on the host
263than running authorized keys commands.
264If
265.Cm AuthorizedKeysCommand
266is specified but
267.Cm AuthorizedKeysCommandUser
268is not, then
269.Xr sshd 8
270will refuse to start.
271.It Cm AuthorizedKeysFile
272Specifies the file that contains the public keys used for user authentication.
273The format is described in the AUTHORIZED_KEYS FILE FORMAT section of
274.Xr sshd 8 .
275Arguments to
276.Cm AuthorizedKeysFile
277accept the tokens described in the
278.Sx TOKENS
279section.
280After expansion,
281.Cm AuthorizedKeysFile
282is taken to be an absolute path or one relative to the user's home
283directory.
284Multiple files may be listed, separated by whitespace.
285Alternately this option may be set to
286.Cm none
287to skip checking for user keys in files.
288The default is
289.Qq .ssh/authorized_keys .ssh/authorized_keys2 .
290.It Cm AuthorizedPrincipalsCommand
291Specifies a program to be used to generate the list of allowed
292certificate principals as per
293.Cm AuthorizedPrincipalsFile .
294The program must be owned by root, not writable by group or others and
295specified by an absolute path.
296Arguments to
297.Cm AuthorizedPrincipalsCommand
298accept the tokens described in the
299.Sx TOKENS
300section.
301If no arguments are specified then the username of the target user is used.
302.Pp
303The program should produce on standard output zero or
304more lines of
305.Cm AuthorizedPrincipalsFile
306output.
307If either
308.Cm AuthorizedPrincipalsCommand
309or
310.Cm AuthorizedPrincipalsFile
311is specified, then certificates offered by the client for authentication
312must contain a principal that is listed.
313By default, no
314.Cm AuthorizedPrincipalsCommand
315is run.
316.It Cm AuthorizedPrincipalsCommandUser
317Specifies the user under whose account the
318.Cm AuthorizedPrincipalsCommand
319is run.
320It is recommended to use a dedicated user that has no other role on the host
321than running authorized principals commands.
322If
323.Cm AuthorizedPrincipalsCommand
324is specified but
325.Cm AuthorizedPrincipalsCommandUser
326is not, then
327.Xr sshd 8
328will refuse to start.
329.It Cm AuthorizedPrincipalsFile
330Specifies a file that lists principal names that are accepted for
331certificate authentication.
332When using certificates signed by a key listed in
333.Cm TrustedUserCAKeys ,
334this file lists names, one of which must appear in the certificate for it
335to be accepted for authentication.
336Names are listed one per line preceded by key options (as described in
337.Sx AUTHORIZED_KEYS FILE FORMAT
338in
339.Xr sshd 8 ) .
340Empty lines and comments starting with
341.Ql #
342are ignored.
343.Pp
344Arguments to
345.Cm AuthorizedPrincipalsFile
346accept the tokens described in the
347.Sx TOKENS
348section.
349After expansion,
350.Cm AuthorizedPrincipalsFile
351is taken to be an absolute path or one relative to the user's home directory.
352The default is
353.Cm none ,
354i.e. not to use a principals file \(en in this case, the username
355of the user must appear in a certificate's principals list for it to be
356accepted.
357.Pp
358Note that
359.Cm AuthorizedPrincipalsFile
360is only used when authentication proceeds using a CA listed in
361.Cm TrustedUserCAKeys
362and is not consulted for certification authorities trusted via
363.Pa ~/.ssh/authorized_keys ,
364though the
365.Cm principals=
366key option offers a similar facility (see
367.Xr sshd 8
368for details).
369.It Cm Banner
370The contents of the specified file are sent to the remote user before
371authentication is allowed.
372If the argument is
373.Cm none
374then no banner is displayed.
375By default, no banner is displayed.
376.It Cm CASignatureAlgorithms
377Specifies which algorithms are allowed for signing of certificates
378by certificate authorities (CAs).
379The default is:
380.Bd -literal -offset indent
381ssh-ed25519,ecdsa-sha2-nistp256,
382ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
383sk-ssh-ed25519@openssh.com,
384sk-ecdsa-sha2-nistp256@openssh.com,
385rsa-sha2-512,rsa-sha2-256
386.Ed
387.Pp
388If the specified list begins with a
389.Sq +
390character, then the specified algorithms will be appended to the default set
391instead of replacing them.
392If the specified list begins with a
393.Sq -
394character, then the specified algorithms (including wildcards) will be removed
395from the default set instead of replacing them.
396.Pp
397Certificates signed using other algorithms will not be accepted for
398public key or host-based authentication.
399.It Cm ChrootDirectory
400Specifies the pathname of a directory to
401.Xr chroot 2
402to after authentication.
403At session startup
404.Xr sshd 8
405checks that all components of the pathname are root-owned directories
406which are not writable by any other user or group.
407After the chroot,
408.Xr sshd 8
409changes the working directory to the user's home directory.
410Arguments to
411.Cm ChrootDirectory
412accept the tokens described in the
413.Sx TOKENS
414section.
415.Pp
416The
417.Cm ChrootDirectory
418must contain the necessary files and directories to support the
419user's session.
420For an interactive session this requires at least a shell, typically
421.Xr sh 1 ,
422and basic
423.Pa /dev
424nodes such as
425.Xr null 4 ,
426.Xr zero 4 ,
427.Xr stdin 4 ,
428.Xr stdout 4 ,
429.Xr stderr 4 ,
430and
431.Xr tty 4
432devices.
433For file transfer sessions using SFTP
434no additional configuration of the environment is necessary if the in-process
435sftp-server is used,
436though sessions which use logging may require
437.Pa /dev/log
438inside the chroot directory on some operating systems (see
439.Xr sftp-server 8
440for details).
441.Pp
442For safety, it is very important that the directory hierarchy be
443prevented from modification by other processes on the system (especially
444those outside the jail).
445Misconfiguration can lead to unsafe environments which
446.Xr sshd 8
447cannot detect.
448.Pp
449The default is
450.Cm none ,
451indicating not to
452.Xr chroot 2 .
453.It Cm Ciphers
454Specifies the ciphers allowed.
455Multiple ciphers must be comma-separated.
456If the specified list begins with a
457.Sq +
458character, then the specified ciphers will be appended to the default set
459instead of replacing them.
460If the specified list begins with a
461.Sq -
462character, then the specified ciphers (including wildcards) will be removed
463from the default set instead of replacing them.
464If the specified list begins with a
465.Sq ^
466character, then the specified ciphers will be placed at the head of the
467default set.
468.Pp
469The supported ciphers are:
470.Pp
471.Bl -item -compact -offset indent
472.It
4733des-cbc
474.It
475aes128-cbc
476.It
477aes192-cbc
478.It
479aes256-cbc
480.It
481aes128-ctr
482.It
483aes192-ctr
484.It
485aes256-ctr
486.It
487aes128-gcm@openssh.com
488.It
489aes256-gcm@openssh.com
490.It
491chacha20-poly1305@openssh.com
492.El
493.Pp
494The default is:
495.Bd -literal -offset indent
496chacha20-poly1305@openssh.com,
497aes128-ctr,aes192-ctr,aes256-ctr,
498aes128-gcm@openssh.com,aes256-gcm@openssh.com
499.Ed
500.Pp
501The list of available ciphers may also be obtained using
502.Qq ssh -Q cipher .
503.It Cm ClientAliveCountMax
504Sets the number of client alive messages which may be sent without
505.Xr sshd 8
506receiving any messages back from the client.
507If this threshold is reached while client alive messages are being sent,
508sshd will disconnect the client, terminating the session.
509It is important to note that the use of client alive messages is very
510different from
511.Cm TCPKeepAlive .
512The client alive messages are sent through the encrypted channel
513and therefore will not be spoofable.
514The TCP keepalive option enabled by
515.Cm TCPKeepAlive
516is spoofable.
517The client alive mechanism is valuable when the client or
518server depend on knowing when a connection has become unresponsive.
519.Pp
520The default value is 3.
521If
522.Cm ClientAliveInterval
523is set to 15, and
524.Cm ClientAliveCountMax
525is left at the default, unresponsive SSH clients
526will be disconnected after approximately 45 seconds.
527Setting a zero
528.Cm ClientAliveCountMax
529disables connection termination.
530.It Cm ClientAliveInterval
531Sets a timeout interval in seconds after which if no data has been received
532from the client,
533.Xr sshd 8
534will send a message through the encrypted
535channel to request a response from the client.
536The default
537is 0, indicating that these messages will not be sent to the client.
538.It Cm Compression
539Specifies whether compression is enabled after
540the user has authenticated successfully.
541The argument must be
542.Cm yes ,
543.Cm delayed
544(a legacy synonym for
545.Cm yes )
546or
547.Cm no .
548The default is
549.Cm yes .
550.It Cm DenyGroups
551This keyword can be followed by a list of group name patterns, separated
552by spaces.
553Login is disallowed for users whose primary group or supplementary
554group list matches one of the patterns.
555Only group names are valid; a numerical group ID is not recognized.
556By default, login is allowed for all groups.
557The allow/deny groups directives are processed in the following order:
558.Cm DenyGroups ,
559.Cm AllowGroups .
560.Pp
561See PATTERNS in
562.Xr ssh_config 5
563for more information on patterns.
564.It Cm DenyUsers
565This keyword can be followed by a list of user name patterns, separated
566by spaces.
567Login is disallowed for user names that match one of the patterns.
568Only user names are valid; a numerical user ID is not recognized.
569By default, login is allowed for all users.
570If the pattern takes the form USER@HOST then USER and HOST
571are separately checked, restricting logins to particular
572users from particular hosts.
573HOST criteria may additionally contain addresses to match in CIDR
574address/masklen format.
575The allow/deny users directives are processed in the following order:
576.Cm DenyUsers ,
577.Cm AllowUsers .
578.Pp
579See PATTERNS in
580.Xr ssh_config 5
581for more information on patterns.
582.It Cm DisableForwarding
583Disables all forwarding features, including X11,
584.Xr ssh-agent 1 ,
585TCP and StreamLocal.
586This option overrides all other forwarding-related options and may
587simplify restricted configurations.
588.It Cm ExposeAuthInfo
589Writes a temporary file containing a list of authentication methods and
590public credentials (e.g. keys) used to authenticate the user.
591The location of the file is exposed to the user session through the
592.Ev SSH_USER_AUTH
593environment variable.
594The default is
595.Cm no .
596.It Cm FingerprintHash
597Specifies the hash algorithm used when logging key fingerprints.
598Valid options are:
599.Cm md5
600and
601.Cm sha256 .
602The default is
603.Cm sha256 .
604.It Cm ForceCommand
605Forces the execution of the command specified by
606.Cm ForceCommand ,
607ignoring any command supplied by the client and
608.Pa ~/.ssh/rc
609if present.
610The command is invoked by using the user's login shell with the -c option.
611This applies to shell, command, or subsystem execution.
612It is most useful inside a
613.Cm Match
614block.
615The command originally supplied by the client is available in the
616.Ev SSH_ORIGINAL_COMMAND
617environment variable.
618Specifying a command of
619.Cm internal-sftp
620will force the use of an in-process SFTP server that requires no support
621files when used with
622.Cm ChrootDirectory .
623The default is
624.Cm none .
625.It Cm GatewayPorts
626Specifies whether remote hosts are allowed to connect to ports
627forwarded for the client.
628By default,
629.Xr sshd 8
630binds remote port forwardings to the loopback address.
631This prevents other remote hosts from connecting to forwarded ports.
632.Cm GatewayPorts
633can be used to specify that sshd
634should allow remote port forwardings to bind to non-loopback addresses, thus
635allowing other hosts to connect.
636The argument may be
637.Cm no
638to force remote port forwardings to be available to the local host only,
639.Cm yes
640to force remote port forwardings to bind to the wildcard address, or
641.Cm clientspecified
642to allow the client to select the address to which the forwarding is bound.
643The default is
644.Cm no .
645.It Cm GSSAPIAuthentication
646Specifies whether user authentication based on GSSAPI is allowed.
647The default is
648.Cm no .
649.It Cm GSSAPICleanupCredentials
650Specifies whether to automatically destroy the user's credentials cache
651on logout.
652The default is
653.Cm yes .
654.It Cm GSSAPIStrictAcceptorCheck
655Determines whether to be strict about the identity of the GSSAPI acceptor
656a client authenticates against.
657If set to
658.Cm yes
659then the client must authenticate against the host
660service on the current hostname.
661If set to
662.Cm no
663then the client may authenticate against any service key stored in the
664machine's default store.
665This facility is provided to assist with operation on multi homed machines.
666The default is
667.Cm yes .
668.It Cm HostbasedAcceptedAlgorithms
669Specifies the signature algorithms that will be accepted for hostbased
670authentication as a list of comma-separated patterns.
671Alternately if the specified list begins with a
672.Sq +
673character, then the specified signature algorithms will be appended to
674the default set instead of replacing them.
675If the specified list begins with a
676.Sq -
677character, then the specified signature algorithms (including wildcards)
678will be removed from the default set instead of replacing them.
679If the specified list begins with a
680.Sq ^
681character, then the specified signature algorithms will be placed at
682the head of the default set.
683The default for this option is:
684.Bd -literal -offset 3n
685ssh-ed25519-cert-v01@openssh.com,
686ecdsa-sha2-nistp256-cert-v01@openssh.com,
687ecdsa-sha2-nistp384-cert-v01@openssh.com,
688ecdsa-sha2-nistp521-cert-v01@openssh.com,
689sk-ssh-ed25519-cert-v01@openssh.com,
690sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,
691rsa-sha2-512-cert-v01@openssh.com,
692rsa-sha2-256-cert-v01@openssh.com,
693ssh-ed25519,
694ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
695sk-ssh-ed25519@openssh.com,
696sk-ecdsa-sha2-nistp256@openssh.com,
697rsa-sha2-512,rsa-sha2-256
698.Ed
699.Pp
700The list of available signature algorithms may also be obtained using
701.Qq ssh -Q HostbasedAcceptedAlgorithms .
702This was formerly named HostbasedAcceptedKeyTypes.
703.It Cm HostbasedAuthentication
704Specifies whether rhosts or /etc/hosts.equiv authentication together
705with successful public key client host authentication is allowed
706(host-based authentication).
707The default is
708.Cm no .
709.It Cm HostbasedUsesNameFromPacketOnly
710Specifies whether or not the server will attempt to perform a reverse
711name lookup when matching the name in the
712.Pa ~/.shosts ,
713.Pa ~/.rhosts ,
714and
715.Pa /etc/hosts.equiv
716files during
717.Cm HostbasedAuthentication .
718A setting of
719.Cm yes
720means that
721.Xr sshd 8
722uses the name supplied by the client rather than
723attempting to resolve the name from the TCP connection itself.
724The default is
725.Cm no .
726.It Cm HostCertificate
727Specifies a file containing a public host certificate.
728The certificate's public key must match a private host key already specified
729by
730.Cm HostKey .
731The default behaviour of
732.Xr sshd 8
733is not to load any certificates.
734.It Cm HostKey
735Specifies a file containing a private host key
736used by SSH.
737The defaults are
738.Pa /etc/ssh/ssh_host_ecdsa_key ,
739.Pa /etc/ssh/ssh_host_ed25519_key
740and
741.Pa /etc/ssh/ssh_host_rsa_key .
742.Pp
743Note that
744.Xr sshd 8
745will refuse to use a file if it is group/world-accessible
746and that the
747.Cm HostKeyAlgorithms
748option restricts which of the keys are actually used by
749.Xr sshd 8 .
750.Pp
751It is possible to have multiple host key files.
752It is also possible to specify public host key files instead.
753In this case operations on the private key will be delegated
754to an
755.Xr ssh-agent 1 .
756.It Cm HostKeyAgent
757Identifies the UNIX-domain socket used to communicate
758with an agent that has access to the private host keys.
759If the string
760.Qq SSH_AUTH_SOCK
761is specified, the location of the socket will be read from the
762.Ev SSH_AUTH_SOCK
763environment variable.
764.It Cm HostKeyAlgorithms
765Specifies the host key signature algorithms
766that the server offers.
767The default for this option is:
768.Bd -literal -offset 3n
769ssh-ed25519-cert-v01@openssh.com,
770ecdsa-sha2-nistp256-cert-v01@openssh.com,
771ecdsa-sha2-nistp384-cert-v01@openssh.com,
772ecdsa-sha2-nistp521-cert-v01@openssh.com,
773sk-ssh-ed25519-cert-v01@openssh.com,
774sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,
775rsa-sha2-512-cert-v01@openssh.com,
776rsa-sha2-256-cert-v01@openssh.com,
777ssh-ed25519,
778ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
779sk-ssh-ed25519@openssh.com,
780sk-ecdsa-sha2-nistp256@openssh.com,
781rsa-sha2-512,rsa-sha2-256
782.Ed
783.Pp
784The list of available signature algorithms may also be obtained using
785.Qq ssh -Q HostKeyAlgorithms .
786.It Cm IgnoreRhosts
787Specifies whether to ignore per-user
788.Pa .rhosts
789and
790.Pa .shosts
791files during
792.Cm HostbasedAuthentication .
793The system-wide
794.Pa /etc/hosts.equiv
795and
796.Pa /etc/ssh/shosts.equiv
797are still used regardless of this setting.
798.Pp
799Accepted values are
800.Cm yes
801(the default) to ignore all per-user files,
802.Cm shosts-only
803to allow the use of
804.Pa .shosts
805but to ignore
806.Pa .rhosts
807or
808.Cm no
809to allow both
810.Pa .shosts
811and
812.Pa rhosts .
813.It Cm IgnoreUserKnownHosts
814Specifies whether
815.Xr sshd 8
816should ignore the user's
817.Pa ~/.ssh/known_hosts
818during
819.Cm HostbasedAuthentication
820and use only the system-wide known hosts file
821.Pa /etc/ssh/known_hosts .
822The default is
823.Dq no .
824.It Cm Include
825Include the specified configuration file(s).
826Multiple pathnames may be specified and each pathname may contain
827.Xr glob 7
828wildcards that will be expanded and processed in lexical order.
829Files without absolute paths are assumed to be in
830.Pa /etc/ssh .
831An
832.Cm Include
833directive may appear inside a
834.Cm Match
835block
836to perform conditional inclusion.
837.It Cm IPQoS
838Specifies the IPv4 type-of-service or DSCP class for the connection.
839Accepted values are
840.Cm af11 ,
841.Cm af12 ,
842.Cm af13 ,
843.Cm af21 ,
844.Cm af22 ,
845.Cm af23 ,
846.Cm af31 ,
847.Cm af32 ,
848.Cm af33 ,
849.Cm af41 ,
850.Cm af42 ,
851.Cm af43 ,
852.Cm cs0 ,
853.Cm cs1 ,
854.Cm cs2 ,
855.Cm cs3 ,
856.Cm cs4 ,
857.Cm cs5 ,
858.Cm cs6 ,
859.Cm cs7 ,
860.Cm ef ,
861.Cm le ,
862.Cm lowdelay ,
863.Cm throughput ,
864.Cm reliability ,
865a numeric value, or
866.Cm none
867to use the operating system default.
868This option may take one or two arguments, separated by whitespace.
869If one argument is specified, it is used as the packet class unconditionally.
870If two values are specified, the first is automatically selected for
871interactive sessions and the second for non-interactive sessions.
872The default is
873.Cm af21
874(Low-Latency Data)
875for interactive sessions and
876.Cm cs1
877(Lower Effort)
878for non-interactive sessions.
879.It Cm KbdInteractiveAuthentication
880Specifies whether to allow keyboard-interactive authentication.
881All authentication styles from
882.Xr login.conf 5
883are supported.
884The default is
885.Cm yes .
886The argument to this keyword must be
887.Cm yes
888or
889.Cm no .
890.Cm ChallengeResponseAuthentication
891is a deprecated alias for this.
892.It Cm KerberosAuthentication
893Specifies whether the password provided by the user for
894.Cm PasswordAuthentication
895will be validated through the Kerberos KDC.
896To use this option, the server needs a
897Kerberos servtab which allows the verification of the KDC's identity.
898The default is
899.Cm no .
900.It Cm KerberosGetAFSToken
901If AFS is active and the user has a Kerberos 5 TGT, attempt to acquire
902an AFS token before accessing the user's home directory.
903The default is
904.Cm no .
905.It Cm KerberosOrLocalPasswd
906If password authentication through Kerberos fails then
907the password will be validated via any additional local mechanism
908such as
909.Pa /etc/passwd .
910The default is
911.Cm yes .
912.It Cm KerberosTicketCleanup
913Specifies whether to automatically destroy the user's ticket cache
914file on logout.
915The default is
916.Cm yes .
917.It Cm KexAlgorithms
918Specifies the available KEX (Key Exchange) algorithms.
919Multiple algorithms must be comma-separated.
920Alternately if the specified list begins with a
921.Sq +
922character, then the specified algorithms will be appended to the default set
923instead of replacing them.
924If the specified list begins with a
925.Sq -
926character, then the specified algorithms (including wildcards) will be removed
927from the default set instead of replacing them.
928If the specified list begins with a
929.Sq ^
930character, then the specified algorithms will be placed at the head of the
931default set.
932The supported algorithms are:
933.Pp
934.Bl -item -compact -offset indent
935.It
936curve25519-sha256
937.It
938curve25519-sha256@libssh.org
939.It
940diffie-hellman-group1-sha1
941.It
942diffie-hellman-group14-sha1
943.It
944diffie-hellman-group14-sha256
945.It
946diffie-hellman-group16-sha512
947.It
948diffie-hellman-group18-sha512
949.It
950diffie-hellman-group-exchange-sha1
951.It
952diffie-hellman-group-exchange-sha256
953.It
954ecdh-sha2-nistp256
955.It
956ecdh-sha2-nistp384
957.It
958ecdh-sha2-nistp521
959.It
960sntrup761x25519-sha512@openssh.com
961.El
962.Pp
963The default is:
964.Bd -literal -offset indent
965sntrup761x25519-sha512@openssh.com,
966curve25519-sha256,curve25519-sha256@libssh.org,
967ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
968diffie-hellman-group-exchange-sha256,
969diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,
970diffie-hellman-group14-sha256
971.Ed
972.Pp
973The list of available key exchange algorithms may also be obtained using
974.Qq ssh -Q KexAlgorithms .
975.It Cm ListenAddress
976Specifies the local addresses
977.Xr sshd 8
978should listen on.
979The following forms may be used:
980.Pp
981.Bl -item -offset indent -compact
982.It
983.Cm ListenAddress
984.Sm off
985.Ar hostname | address
986.Sm on
987.Op Cm rdomain Ar domain
988.It
989.Cm ListenAddress
990.Sm off
991.Ar hostname : port
992.Sm on
993.Op Cm rdomain Ar domain
994.It
995.Cm ListenAddress
996.Sm off
997.Ar IPv4_address : port
998.Sm on
999.Op Cm rdomain Ar domain
1000.It
1001.Cm ListenAddress
1002.Sm off
1003.Oo Ar hostname | address Oc : Ar port
1004.Sm on
1005.Op Cm rdomain Ar domain
1006.El
1007.Pp
1008The optional
1009.Cm rdomain
1010qualifier requests
1011.Xr sshd 8
1012listen in an explicit routing domain.
1013If
1014.Ar port
1015is not specified,
1016sshd will listen on the address and all
1017.Cm Port
1018options specified.
1019The default is to listen on all local addresses on the current default
1020routing domain.
1021Multiple
1022.Cm ListenAddress
1023options are permitted.
1024For more information on routing domains, see
1025.Xr rdomain 4 .
1026.It Cm LoginGraceTime
1027The server disconnects after this time if the user has not
1028successfully logged in.
1029If the value is 0, there is no time limit.
1030The default is 120 seconds.
1031.It Cm LogLevel
1032Gives the verbosity level that is used when logging messages from
1033.Xr sshd 8 .
1034The possible values are:
1035QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3.
1036The default is INFO.
1037DEBUG and DEBUG1 are equivalent.
1038DEBUG2 and DEBUG3 each specify higher levels of debugging output.
1039Logging with a DEBUG level violates the privacy of users and is not recommended.
1040.It Cm LogVerbose
1041Specify one or more overrides to LogLevel.
1042An override consists of a pattern lists that matches the source file, function
1043and line number to force detailed logging for.
1044For example, an override pattern of:
1045.Bd -literal -offset indent
1046kex.c:*:1000,*:kex_exchange_identification():*,packet.c:*
1047.Ed
1048.Pp
1049would enable detailed logging for line 1000 of
1050.Pa kex.c ,
1051everything in the
1052.Fn kex_exchange_identification
1053function, and all code in the
1054.Pa packet.c
1055file.
1056This option is intended for debugging and no overrides are enabled by default.
1057.It Cm MACs
1058Specifies the available MAC (message authentication code) algorithms.
1059The MAC algorithm is used for data integrity protection.
1060Multiple algorithms must be comma-separated.
1061If the specified list begins with a
1062.Sq +
1063character, then the specified algorithms will be appended to the default set
1064instead of replacing them.
1065If the specified list begins with a
1066.Sq -
1067character, then the specified algorithms (including wildcards) will be removed
1068from the default set instead of replacing them.
1069If the specified list begins with a
1070.Sq ^
1071character, then the specified algorithms will be placed at the head of the
1072default set.
1073.Pp
1074The algorithms that contain
1075.Qq -etm
1076calculate the MAC after encryption (encrypt-then-mac).
1077These are considered safer and their use recommended.
1078The supported MACs are:
1079.Pp
1080.Bl -item -compact -offset indent
1081.It
1082hmac-md5
1083.It
1084hmac-md5-96
1085.It
1086hmac-sha1
1087.It
1088hmac-sha1-96
1089.It
1090hmac-sha2-256
1091.It
1092hmac-sha2-512
1093.It
1094umac-64@openssh.com
1095.It
1096umac-128@openssh.com
1097.It
1098hmac-md5-etm@openssh.com
1099.It
1100hmac-md5-96-etm@openssh.com
1101.It
1102hmac-sha1-etm@openssh.com
1103.It
1104hmac-sha1-96-etm@openssh.com
1105.It
1106hmac-sha2-256-etm@openssh.com
1107.It
1108hmac-sha2-512-etm@openssh.com
1109.It
1110umac-64-etm@openssh.com
1111.It
1112umac-128-etm@openssh.com
1113.El
1114.Pp
1115The default is:
1116.Bd -literal -offset indent
1117umac-64-etm@openssh.com,umac-128-etm@openssh.com,
1118hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,
1119hmac-sha1-etm@openssh.com,
1120umac-64@openssh.com,umac-128@openssh.com,
1121hmac-sha2-256,hmac-sha2-512,hmac-sha1
1122.Ed
1123.Pp
1124The list of available MAC algorithms may also be obtained using
1125.Qq ssh -Q mac .
1126.It Cm Match
1127Introduces a conditional block.
1128If all of the criteria on the
1129.Cm Match
1130line are satisfied, the keywords on the following lines override those
1131set in the global section of the config file, until either another
1132.Cm Match
1133line or the end of the file.
1134If a keyword appears in multiple
1135.Cm Match
1136blocks that are satisfied, only the first instance of the keyword is
1137applied.
1138.Pp
1139The arguments to
1140.Cm Match
1141are one or more criteria-pattern pairs or the single token
1142.Cm All
1143which matches all criteria.
1144The available criteria are
1145.Cm User ,
1146.Cm Group ,
1147.Cm Host ,
1148.Cm LocalAddress ,
1149.Cm LocalPort ,
1150.Cm RDomain ,
1151and
1152.Cm Address
1153(with
1154.Cm RDomain
1155representing the
1156.Xr rdomain 4
1157on which the connection was received).
1158.Pp
1159The match patterns may consist of single entries or comma-separated
1160lists and may use the wildcard and negation operators described in the
1161.Sx PATTERNS
1162section of
1163.Xr ssh_config 5 .
1164.Pp
1165The patterns in an
1166.Cm Address
1167criteria may additionally contain addresses to match in CIDR
1168address/masklen format,
1169such as 192.0.2.0/24 or 2001:db8::/32.
1170Note that the mask length provided must be consistent with the address -
1171it is an error to specify a mask length that is too long for the address
1172or one with bits set in this host portion of the address.
1173For example, 192.0.2.0/33 and 192.0.2.0/8, respectively.
1174.Pp
1175Only a subset of keywords may be used on the lines following a
1176.Cm Match
1177keyword.
1178Available keywords are
1179.Cm AcceptEnv ,
1180.Cm AllowAgentForwarding ,
1181.Cm AllowGroups ,
1182.Cm AllowStreamLocalForwarding ,
1183.Cm AllowTcpForwarding ,
1184.Cm AllowUsers ,
1185.Cm AuthenticationMethods ,
1186.Cm AuthorizedKeysCommand ,
1187.Cm AuthorizedKeysCommandUser ,
1188.Cm AuthorizedKeysFile ,
1189.Cm AuthorizedPrincipalsCommand ,
1190.Cm AuthorizedPrincipalsCommandUser ,
1191.Cm AuthorizedPrincipalsFile ,
1192.Cm Banner ,
1193.Cm CASignatureAlgorithms ,
1194.Cm ChrootDirectory ,
1195.Cm ClientAliveCountMax ,
1196.Cm ClientAliveInterval ,
1197.Cm DenyGroups ,
1198.Cm DenyUsers ,
1199.Cm DisableForwarding ,
1200.Cm ExposeAuthInfo ,
1201.Cm ForceCommand ,
1202.Cm GatewayPorts ,
1203.Cm GSSAPIAuthentication ,
1204.Cm HostbasedAcceptedAlgorithms ,
1205.Cm HostbasedAuthentication ,
1206.Cm HostbasedUsesNameFromPacketOnly ,
1207.Cm IgnoreRhosts ,
1208.Cm Include ,
1209.Cm IPQoS ,
1210.Cm KbdInteractiveAuthentication ,
1211.Cm KerberosAuthentication ,
1212.Cm LogLevel ,
1213.Cm MaxAuthTries ,
1214.Cm MaxSessions ,
1215.Cm PasswordAuthentication ,
1216.Cm PermitEmptyPasswords ,
1217.Cm PermitListen ,
1218.Cm PermitOpen ,
1219.Cm PermitRootLogin ,
1220.Cm PermitTTY ,
1221.Cm PermitTunnel ,
1222.Cm PermitUserRC ,
1223.Cm PubkeyAcceptedAlgorithms ,
1224.Cm PubkeyAuthentication ,
1225.Cm PubkeyAuthOptions ,
1226.Cm RekeyLimit ,
1227.Cm RevokedKeys ,
1228.Cm RDomain ,
1229.Cm SetEnv ,
1230.Cm StreamLocalBindMask ,
1231.Cm StreamLocalBindUnlink ,
1232.Cm TrustedUserCAKeys ,
1233.Cm X11DisplayOffset ,
1234.Cm X11Forwarding
1235and
1236.Cm X11UseLocalhost .
1237.It Cm MaxAuthTries
1238Specifies the maximum number of authentication attempts permitted per
1239connection.
1240Once the number of failures reaches half this value,
1241additional failures are logged.
1242The default is 6.
1243.It Cm MaxSessions
1244Specifies the maximum number of open shell, login or subsystem (e.g. sftp)
1245sessions permitted per network connection.
1246Multiple sessions may be established by clients that support connection
1247multiplexing.
1248Setting
1249.Cm MaxSessions
1250to 1 will effectively disable session multiplexing, whereas setting it to 0
1251will prevent all shell, login and subsystem sessions while still permitting
1252forwarding.
1253The default is 10.
1254.It Cm MaxStartups
1255Specifies the maximum number of concurrent unauthenticated connections to the
1256SSH daemon.
1257Additional connections will be dropped until authentication succeeds or the
1258.Cm LoginGraceTime
1259expires for a connection.
1260The default is 10:30:100.
1261.Pp
1262Alternatively, random early drop can be enabled by specifying
1263the three colon separated values
1264start:rate:full (e.g. "10:30:60").
1265.Xr sshd 8
1266will refuse connection attempts with a probability of rate/100 (30%)
1267if there are currently start (10) unauthenticated connections.
1268The probability increases linearly and all connection attempts
1269are refused if the number of unauthenticated connections reaches full (60).
1270.It Cm ModuliFile
1271Specifies the
1272.Xr moduli 5
1273file that contains the Diffie-Hellman groups used for the
1274.Dq diffie-hellman-group-exchange-sha1
1275and
1276.Dq diffie-hellman-group-exchange-sha256
1277key exchange methods.
1278The default is
1279.Pa /etc/moduli .
1280.It Cm PasswordAuthentication
1281Specifies whether password authentication is allowed.
1282See also
1283.Cm UsePAM .
1284The default is
1285.Cm no .
1286.It Cm PermitEmptyPasswords
1287When password authentication is allowed, it specifies whether the
1288server allows login to accounts with empty password strings.
1289The default is
1290.Cm no .
1291.It Cm PermitListen
1292Specifies the addresses/ports on which a remote TCP port forwarding may listen.
1293The listen specification must be one of the following forms:
1294.Pp
1295.Bl -item -offset indent -compact
1296.It
1297.Cm PermitListen
1298.Sm off
1299.Ar port
1300.Sm on
1301.It
1302.Cm PermitListen
1303.Sm off
1304.Ar host : port
1305.Sm on
1306.El
1307.Pp
1308Multiple permissions may be specified by separating them with whitespace.
1309An argument of
1310.Cm any
1311can be used to remove all restrictions and permit any listen requests.
1312An argument of
1313.Cm none
1314can be used to prohibit all listen requests.
1315The host name may contain wildcards as described in the PATTERNS section in
1316.Xr ssh_config 5 .
1317The wildcard
1318.Sq *
1319can also be used in place of a port number to allow all ports.
1320By default all port forwarding listen requests are permitted.
1321Note that the
1322.Cm GatewayPorts
1323option may further restrict which addresses may be listened on.
1324Note also that
1325.Xr ssh 1
1326will request a listen host of
1327.Dq localhost
1328if no listen host was specifically requested, and this name is
1329treated differently to explicit localhost addresses of
1330.Dq 127.0.0.1
1331and
1332.Dq ::1 .
1333.It Cm PermitOpen
1334Specifies the destinations to which TCP port forwarding is permitted.
1335The forwarding specification must be one of the following forms:
1336.Pp
1337.Bl -item -offset indent -compact
1338.It
1339.Cm PermitOpen
1340.Sm off
1341.Ar host : port
1342.Sm on
1343.It
1344.Cm PermitOpen
1345.Sm off
1346.Ar IPv4_addr : port
1347.Sm on
1348.It
1349.Cm PermitOpen
1350.Sm off
1351.Ar \&[ IPv6_addr \&] : port
1352.Sm on
1353.El
1354.Pp
1355Multiple forwards may be specified by separating them with whitespace.
1356An argument of
1357.Cm any
1358can be used to remove all restrictions and permit any forwarding requests.
1359An argument of
1360.Cm none
1361can be used to prohibit all forwarding requests.
1362The wildcard
1363.Sq *
1364can be used for host or port to allow all hosts or ports respectively.
1365Otherwise, no pattern matching or address lookups are performed on supplied
1366names.
1367By default all port forwarding requests are permitted.
1368.It Cm PermitRootLogin
1369Specifies whether root can log in using
1370.Xr ssh 1 .
1371The argument must be
1372.Cm yes ,
1373.Cm prohibit-password ,
1374.Cm forced-commands-only ,
1375or
1376.Cm no .
1377The default is
1378.Cm no .
1379Note that if
1380.Cm ChallengeResponseAuthentication
1381and
1382.Cm UsePAM
1383are both
1384.Cm yes ,
1385this setting may be overridden by the PAM policy.
1386.Pp
1387If this option is set to
1388.Cm prohibit-password
1389(or its deprecated alias,
1390.Cm without-password ) ,
1391password and keyboard-interactive authentication are disabled for root.
1392.Pp
1393If this option is set to
1394.Cm forced-commands-only ,
1395root login with public key authentication will be allowed,
1396but only if the
1397.Ar command
1398option has been specified
1399(which may be useful for taking remote backups even if root login is
1400normally not allowed).
1401All other authentication methods are disabled for root.
1402.Pp
1403If this option is set to
1404.Cm no ,
1405root is not allowed to log in.
1406.It Cm PermitTTY
1407Specifies whether
1408.Xr pty 4
1409allocation is permitted.
1410The default is
1411.Cm yes .
1412.It Cm PermitTunnel
1413Specifies whether
1414.Xr tun 4
1415device forwarding is allowed.
1416The argument must be
1417.Cm yes ,
1418.Cm point-to-point
1419(layer 3),
1420.Cm ethernet
1421(layer 2), or
1422.Cm no .
1423Specifying
1424.Cm yes
1425permits both
1426.Cm point-to-point
1427and
1428.Cm ethernet .
1429The default is
1430.Cm no .
1431.Pp
1432Independent of this setting, the permissions of the selected
1433.Xr tun 4
1434device must allow access to the user.
1435.It Cm PermitUserEnvironment
1436Specifies whether
1437.Pa ~/.ssh/environment
1438and
1439.Cm environment=
1440options in
1441.Pa ~/.ssh/authorized_keys
1442are processed by
1443.Xr sshd 8 .
1444Valid options are
1445.Cm yes ,
1446.Cm no
1447or a pattern-list specifying which environment variable names to accept
1448(for example
1449.Qq LANG,LC_* ) .
1450The default is
1451.Cm no .
1452Enabling environment processing may enable users to bypass access
1453restrictions in some configurations using mechanisms such as
1454.Ev LD_PRELOAD .
1455.It Cm PermitUserRC
1456Specifies whether any
1457.Pa ~/.ssh/rc
1458file is executed.
1459The default is
1460.Cm yes .
1461.It Cm PerSourceMaxStartups
1462Specifies the number of unauthenticated connections allowed from a
1463given source address, or
1464.Dq none
1465if there is no limit.
1466This limit is applied in addition to
1467.Cm MaxStartups ,
1468whichever is lower.
1469The default is
1470.Cm none .
1471.It Cm PerSourceNetBlockSize
1472Specifies the number of bits of source address that are grouped together
1473for the purposes of applying PerSourceMaxStartups limits.
1474Values for IPv4 and optionally IPv6 may be specified, separated by a colon.
1475The default is
1476.Cm 32:128 ,
1477which means each address is considered individually.
1478.It Cm PidFile
1479Specifies the file that contains the process ID of the
1480SSH daemon, or
1481.Cm none
1482to not write one.
1483The default is
1484.Pa /var/run/sshd.pid .
1485.It Cm Port
1486Specifies the port number that
1487.Xr sshd 8
1488listens on.
1489The default is 22.
1490Multiple options of this type are permitted.
1491See also
1492.Cm ListenAddress .
1493.It Cm PrintLastLog
1494Specifies whether
1495.Xr sshd 8
1496should print the date and time of the last user login when a user logs
1497in interactively.
1498The default is
1499.Cm yes .
1500.It Cm PrintMotd
1501Specifies whether
1502.Xr sshd 8
1503should print
1504.Pa /etc/motd
1505when a user logs in interactively.
1506(On some systems it is also printed by the shell,
1507.Pa /etc/profile ,
1508or equivalent.)
1509The default is
1510.Cm yes .
1511.It Cm PubkeyAcceptedAlgorithms
1512Specifies the signature algorithms that will be accepted for public key
1513authentication as a list of comma-separated patterns.
1514Alternately if the specified list begins with a
1515.Sq +
1516character, then the specified algorithms will be appended to the default set
1517instead of replacing them.
1518If the specified list begins with a
1519.Sq -
1520character, then the specified algorithms (including wildcards) will be removed
1521from the default set instead of replacing them.
1522If the specified list begins with a
1523.Sq ^
1524character, then the specified algorithms will be placed at the head of the
1525default set.
1526The default for this option is:
1527.Bd -literal -offset 3n
1528ssh-ed25519-cert-v01@openssh.com,
1529ecdsa-sha2-nistp256-cert-v01@openssh.com,
1530ecdsa-sha2-nistp384-cert-v01@openssh.com,
1531ecdsa-sha2-nistp521-cert-v01@openssh.com,
1532sk-ssh-ed25519-cert-v01@openssh.com,
1533sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,
1534rsa-sha2-512-cert-v01@openssh.com,
1535rsa-sha2-256-cert-v01@openssh.com,
1536ssh-ed25519,
1537ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
1538sk-ssh-ed25519@openssh.com,
1539sk-ecdsa-sha2-nistp256@openssh.com,
1540rsa-sha2-512,rsa-sha2-256
1541.Ed
1542.Pp
1543The list of available signature algorithms may also be obtained using
1544.Qq ssh -Q PubkeyAcceptedAlgorithms .
1545.It Cm PubkeyAuthOptions
1546Sets one or more public key authentication options.
1547The supported keywords are:
1548.Cm none
1549(the default; indicating no additional options are enabled),
1550.Cm touch-required
1551and
1552.Cm verify-required .
1553.Pp
1554The
1555.Cm touch-required
1556option causes public key authentication using a FIDO authenticator algorithm
1557(i.e.\&
1558.Cm ecdsa-sk
1559or
1560.Cm ed25519-sk )
1561to always require the signature to attest that a physically present user
1562explicitly confirmed the authentication (usually by touching the authenticator).
1563By default,
1564.Xr sshd 8
1565requires user presence unless overridden with an authorized_keys option.
1566The
1567.Cm touch-required
1568flag disables this override.
1569.Pp
1570The
1571.Cm verify-required
1572option requires a FIDO key signature attest that the user was verified,
1573e.g. via a PIN.
1574.Pp
1575Neither the
1576.Cm touch-required
1577or
1578.Cm verify-required
1579options have any effect for other, non-FIDO, public key types.
1580.It Cm PubkeyAuthentication
1581Specifies whether public key authentication is allowed.
1582The default is
1583.Cm yes .
1584.It Cm RekeyLimit
1585Specifies the maximum amount of data that may be transmitted before the
1586session key is renegotiated, optionally followed by a maximum amount of
1587time that may pass before the session key is renegotiated.
1588The first argument is specified in bytes and may have a suffix of
1589.Sq K ,
1590.Sq M ,
1591or
1592.Sq G
1593to indicate Kilobytes, Megabytes, or Gigabytes, respectively.
1594The default is between
1595.Sq 1G
1596and
1597.Sq 4G ,
1598depending on the cipher.
1599The optional second value is specified in seconds and may use any of the
1600units documented in the
1601.Sx TIME FORMATS
1602section.
1603The default value for
1604.Cm RekeyLimit
1605is
1606.Cm default none ,
1607which means that rekeying is performed after the cipher's default amount
1608of data has been sent or received and no time based rekeying is done.
1609.It Cm RevokedKeys
1610Specifies revoked public keys file, or
1611.Cm none
1612to not use one.
1613Keys listed in this file will be refused for public key authentication.
1614Note that if this file is not readable, then public key authentication will
1615be refused for all users.
1616Keys may be specified as a text file, listing one public key per line, or as
1617an OpenSSH Key Revocation List (KRL) as generated by
1618.Xr ssh-keygen 1 .
1619For more information on KRLs, see the KEY REVOCATION LISTS section in
1620.Xr ssh-keygen 1 .
1621.It Cm RDomain
1622Specifies an explicit routing domain that is applied after authentication
1623has completed.
1624The user session, as well as any forwarded or listening IP sockets,
1625will be bound to this
1626.Xr rdomain 4 .
1627If the routing domain is set to
1628.Cm \&%D ,
1629then the domain in which the incoming connection was received will be applied.
1630.It Cm SecurityKeyProvider
1631Specifies a path to a library that will be used when loading
1632FIDO authenticator-hosted keys, overriding the default of using
1633the built-in USB HID support.
1634.It Cm SetEnv
1635Specifies one or more environment variables to set in child sessions started
1636by
1637.Xr sshd 8
1638as
1639.Dq NAME=VALUE .
1640The environment value may be quoted (e.g. if it contains whitespace
1641characters).
1642Environment variables set by
1643.Cm SetEnv
1644override the default environment and any variables specified by the user
1645via
1646.Cm AcceptEnv
1647or
1648.Cm PermitUserEnvironment .
1649.It Cm StreamLocalBindMask
1650Sets the octal file creation mode mask
1651.Pq umask
1652used when creating a Unix-domain socket file for local or remote
1653port forwarding.
1654This option is only used for port forwarding to a Unix-domain socket file.
1655.Pp
1656The default value is 0177, which creates a Unix-domain socket file that is
1657readable and writable only by the owner.
1658Note that not all operating systems honor the file mode on Unix-domain
1659socket files.
1660.It Cm StreamLocalBindUnlink
1661Specifies whether to remove an existing Unix-domain socket file for local
1662or remote port forwarding before creating a new one.
1663If the socket file already exists and
1664.Cm StreamLocalBindUnlink
1665is not enabled,
1666.Nm sshd
1667will be unable to forward the port to the Unix-domain socket file.
1668This option is only used for port forwarding to a Unix-domain socket file.
1669.Pp
1670The argument must be
1671.Cm yes
1672or
1673.Cm no .
1674The default is
1675.Cm no .
1676.It Cm StrictModes
1677Specifies whether
1678.Xr sshd 8
1679should check file modes and ownership of the
1680user's files and home directory before accepting login.
1681This is normally desirable because novices sometimes accidentally leave their
1682directory or files world-writable.
1683The default is
1684.Cm yes .
1685Note that this does not apply to
1686.Cm ChrootDirectory ,
1687whose permissions and ownership are checked unconditionally.
1688.It Cm Subsystem
1689Configures an external subsystem (e.g. file transfer daemon).
1690Arguments should be a subsystem name and a command (with optional arguments)
1691to execute upon subsystem request.
1692.Pp
1693The command
1694.Cm sftp-server
1695implements the SFTP file transfer subsystem.
1696.Pp
1697Alternately the name
1698.Cm internal-sftp
1699implements an in-process SFTP server.
1700This may simplify configurations using
1701.Cm ChrootDirectory
1702to force a different filesystem root on clients.
1703.Pp
1704By default no subsystems are defined.
1705.It Cm SyslogFacility
1706Gives the facility code that is used when logging messages from
1707.Xr sshd 8 .
1708The possible values are: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2,
1709LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7.
1710The default is AUTH.
1711.It Cm TCPKeepAlive
1712Specifies whether the system should send TCP keepalive messages to the
1713other side.
1714If they are sent, death of the connection or crash of one
1715of the machines will be properly noticed.
1716However, this means that
1717connections will die if the route is down temporarily, and some people
1718find it annoying.
1719On the other hand, if TCP keepalives are not sent,
1720sessions may hang indefinitely on the server, leaving
1721.Qq ghost
1722users and consuming server resources.
1723.Pp
1724The default is
1725.Cm yes
1726(to send TCP keepalive messages), and the server will notice
1727if the network goes down or the client host crashes.
1728This avoids infinitely hanging sessions.
1729.Pp
1730To disable TCP keepalive messages, the value should be set to
1731.Cm no .
1732.It Cm TrustedUserCAKeys
1733Specifies a file containing public keys of certificate authorities that are
1734trusted to sign user certificates for authentication, or
1735.Cm none
1736to not use one.
1737Keys are listed one per line; empty lines and comments starting with
1738.Ql #
1739are allowed.
1740If a certificate is presented for authentication and has its signing CA key
1741listed in this file, then it may be used for authentication for any user
1742listed in the certificate's principals list.
1743Note that certificates that lack a list of principals will not be permitted
1744for authentication using
1745.Cm TrustedUserCAKeys .
1746For more details on certificates, see the CERTIFICATES section in
1747.Xr ssh-keygen 1 .
1748.It Cm UseBlacklist
1749Specifies whether
1750.Xr sshd 8
1751attempts to send authentication success and failure messages
1752to the
1753.Xr blacklistd 8
1754daemon.
1755The default is
1756.Cm no .
1757For forward compatibility with an upcoming
1758.Xr blacklistd
1759rename, the
1760.Cm UseBlocklist
1761alias can be used instead.
1762.It Cm UseDNS
1763Specifies whether
1764.Xr sshd 8
1765should look up the remote host name, and to check that
1766the resolved host name for the remote IP address maps back to the
1767very same IP address.
1768.Pp
1769If this option is set to
1770.Cm no ,
1771then only addresses and not host names may be used in
1772.Pa ~/.ssh/authorized_keys
1773.Cm from
1774and
1775.Nm
1776.Cm Match
1777.Cm Host
1778directives.
1779The default is
1780.Dq yes .
1781.It Cm UsePAM
1782Enables the Pluggable Authentication Module interface.
1783If set to
1784.Cm yes
1785this will enable PAM authentication using
1786.Cm KbdInteractiveAuthentication
1787and
1788.Cm PasswordAuthentication
1789in addition to PAM account and session module processing for all
1790authentication types.
1791.Pp
1792Because PAM keyboard-interactive authentication usually serves an equivalent
1793role to password authentication, you should disable either
1794.Cm PasswordAuthentication
1795or
1796.Cm KbdInteractiveAuthentication .
1797.Pp
1798If
1799.Cm UsePAM
1800is enabled, you will not be able to run
1801.Xr sshd 8
1802as a non-root user.
1803The default is
1804.Cm yes .
1805.It Cm VersionAddendum
1806Optionally specifies additional text to append to the SSH protocol banner
1807sent by the server upon connection.
1808The default is
1809.Qq FreeBSD-20220415 .
1810The value
1811.Cm none
1812may be used to disable this.
1813.It Cm X11DisplayOffset
1814Specifies the first display number available for
1815.Xr sshd 8 Ns 's
1816X11 forwarding.
1817This prevents sshd from interfering with real X11 servers.
1818The default is 10.
1819.It Cm X11Forwarding
1820Specifies whether X11 forwarding is permitted.
1821The argument must be
1822.Cm yes
1823or
1824.Cm no .
1825The default is
1826.Cm yes .
1827.Pp
1828When X11 forwarding is enabled, there may be additional exposure to
1829the server and to client displays if the
1830.Xr sshd 8
1831proxy display is configured to listen on the wildcard address (see
1832.Cm X11UseLocalhost ) ,
1833though this is not the default.
1834Additionally, the authentication spoofing and authentication data
1835verification and substitution occur on the client side.
1836The security risk of using X11 forwarding is that the client's X11
1837display server may be exposed to attack when the SSH client requests
1838forwarding (see the warnings for
1839.Cm ForwardX11
1840in
1841.Xr ssh_config 5 ) .
1842A system administrator may have a stance in which they want to
1843protect clients that may expose themselves to attack by unwittingly
1844requesting X11 forwarding, which can warrant a
1845.Cm no
1846setting.
1847.Pp
1848Note that disabling X11 forwarding does not prevent users from
1849forwarding X11 traffic, as users can always install their own forwarders.
1850.It Cm X11UseLocalhost
1851Specifies whether
1852.Xr sshd 8
1853should bind the X11 forwarding server to the loopback address or to
1854the wildcard address.
1855By default,
1856sshd binds the forwarding server to the loopback address and sets the
1857hostname part of the
1858.Ev DISPLAY
1859environment variable to
1860.Cm localhost .
1861This prevents remote hosts from connecting to the proxy display.
1862However, some older X11 clients may not function with this
1863configuration.
1864.Cm X11UseLocalhost
1865may be set to
1866.Cm no
1867to specify that the forwarding server should be bound to the wildcard
1868address.
1869The argument must be
1870.Cm yes
1871or
1872.Cm no .
1873The default is
1874.Cm yes .
1875.It Cm XAuthLocation
1876Specifies the full pathname of the
1877.Xr xauth 1
1878program, or
1879.Cm none
1880to not use one.
1881The default is
1882.Pa /usr/local/bin/xauth .
1883.El
1884.Sh TIME FORMATS
1885.Xr sshd 8
1886command-line arguments and configuration file options that specify time
1887may be expressed using a sequence of the form:
1888.Sm off
1889.Ar time Op Ar qualifier ,
1890.Sm on
1891where
1892.Ar time
1893is a positive integer value and
1894.Ar qualifier
1895is one of the following:
1896.Pp
1897.Bl -tag -width Ds -compact -offset indent
1898.It Aq Cm none
1899seconds
1900.It Cm s | Cm S
1901seconds
1902.It Cm m | Cm M
1903minutes
1904.It Cm h | Cm H
1905hours
1906.It Cm d | Cm D
1907days
1908.It Cm w | Cm W
1909weeks
1910.El
1911.Pp
1912Each member of the sequence is added together to calculate
1913the total time value.
1914.Pp
1915Time format examples:
1916.Pp
1917.Bl -tag -width Ds -compact -offset indent
1918.It 600
1919600 seconds (10 minutes)
1920.It 10m
192110 minutes
1922.It 1h30m
19231 hour 30 minutes (90 minutes)
1924.El
1925.Sh TOKENS
1926Arguments to some keywords can make use of tokens,
1927which are expanded at runtime:
1928.Pp
1929.Bl -tag -width XXXX -offset indent -compact
1930.It %%
1931A literal
1932.Sq % .
1933.It \&%D
1934The routing domain in which the incoming connection was received.
1935.It %F
1936The fingerprint of the CA key.
1937.It %f
1938The fingerprint of the key or certificate.
1939.It %h
1940The home directory of the user.
1941.It %i
1942The key ID in the certificate.
1943.It %K
1944The base64-encoded CA key.
1945.It %k
1946The base64-encoded key or certificate for authentication.
1947.It %s
1948The serial number of the certificate.
1949.It \&%T
1950The type of the CA key.
1951.It %t
1952The key or certificate type.
1953.It \&%U
1954The numeric user ID of the target user.
1955.It %u
1956The username.
1957.El
1958.Pp
1959.Cm AuthorizedKeysCommand
1960accepts the tokens %%, %f, %h, %k, %t, %U, and %u.
1961.Pp
1962.Cm AuthorizedKeysFile
1963accepts the tokens %%, %h, %U, and %u.
1964.Pp
1965.Cm AuthorizedPrincipalsCommand
1966accepts the tokens %%, %F, %f, %h, %i, %K, %k, %s, %T, %t, %U, and %u.
1967.Pp
1968.Cm AuthorizedPrincipalsFile
1969accepts the tokens %%, %h, %U, and %u.
1970.Pp
1971.Cm ChrootDirectory
1972accepts the tokens %%, %h, %U, and %u.
1973.Pp
1974.Cm RoutingDomain
1975accepts the token %D.
1976.Sh FILES
1977.Bl -tag -width Ds
1978.It Pa /etc/ssh/sshd_config
1979Contains configuration data for
1980.Xr sshd 8 .
1981This file should be writable by root only, but it is recommended
1982(though not necessary) that it be world-readable.
1983.El
1984.Sh SEE ALSO
1985.Xr sftp-server 8 ,
1986.Xr sshd 8
1987.Sh AUTHORS
1988.An -nosplit
1989OpenSSH is a derivative of the original and free
1990ssh 1.2.12 release by
1991.An Tatu Ylonen .
1992.An Aaron Campbell , Bob Beck , Markus Friedl , Niels Provos ,
1993.An Theo de Raadt
1994and
1995.An Dug Song
1996removed many bugs, re-added newer features and
1997created OpenSSH.
1998.An Markus Friedl
1999contributed the support for SSH protocol versions 1.5 and 2.0.
2000.An Niels Provos
2001and
2002.An Markus Friedl
2003contributed support for privilege separation.
2004