1SSHD_CONFIG(5) BSD File Formats Manual SSHD_CONFIG(5)
2
4 sshd_config — OpenSSH SSH daemon configuration file
5
7 sshd(8) reads configuration data from /etc/ssh/sshd_config (or the file
8 specified with -f on the command line). The file contains keyword-argu‐
9 ment pairs, one per line. For each keyword, the first obtained value
10 will be used. Lines starting with ‘#’ and empty lines are interpreted as
11 comments. Arguments may optionally be enclosed in double quotes (") in
12 order to represent arguments containing spaces.
13
14 The possible keywords and their meanings are as follows (note that key‐
15 words are case-insensitive and arguments are case-sensitive):
16
17 AcceptEnv
18 Specifies what environment variables sent by the client will be
19 copied into the session's environ(7). See SendEnv and SetEnv in
20 ssh_config(5) for how to configure the client. The TERM environ‐
21 ment variable is always accepted whenever the client requests a
22 pseudo-terminal as it is required by the protocol. Variables are
23 specified by name, which may contain the wildcard characters ‘*’
24 and ‘?’. Multiple environment variables may be separated by
25 whitespace or spread across multiple AcceptEnv directives. Be
26 warned that some environment variables could be used to bypass
27 restricted user environments. For this reason, care should be
28 taken in the use of this directive. The default is not to accept
29 any environment variables.
30
31 AddressFamily
32 Specifies which address family should be used by sshd(8). Valid
33 arguments are any (the default), inet (use IPv4 only), or inet6
34 (use IPv6 only).
35
36 AllowAgentForwarding
37 Specifies whether ssh-agent(1) forwarding is permitted. The
38 default is yes. Note that disabling agent forwarding does not
39 improve security unless users are also denied shell access, as
40 they can always install their own forwarders.
41
42 AllowGroups
43 This keyword can be followed by a list of group name patterns,
44 separated by spaces. If specified, login is allowed only for
45 users whose primary group or supplementary group list matches one
46 of the patterns. Only group names are valid; a numerical group
47 ID is not recognized. By default, login is allowed for all
48 groups. The allow/deny directives are processed in the following
49 order: DenyUsers, AllowUsers, DenyGroups, and finally
50 AllowGroups.
51
52 See PATTERNS in ssh_config(5) for more information on patterns.
53
54 AllowStreamLocalForwarding
55 Specifies whether StreamLocal (Unix-domain socket) forwarding is
56 permitted. The available options are yes (the default) or all to
57 allow StreamLocal forwarding, no to prevent all StreamLocal for‐
58 warding, local to allow local (from the perspective of ssh(1))
59 forwarding only or remote to allow remote forwarding only. Note
60 that disabling StreamLocal forwarding does not improve security
61 unless users are also denied shell access, as they can always
62 install their own forwarders.
63
64 AllowTcpForwarding
65 Specifies whether TCP forwarding is permitted. The available
66 options are yes (the default) or all to allow TCP forwarding, no
67 to prevent all TCP forwarding, local to allow local (from the
68 perspective of ssh(1)) forwarding only or remote to allow remote
69 forwarding only. Note that disabling TCP forwarding does not
70 improve security unless users are also denied shell access, as
71 they can always install their own forwarders.
72
73 AllowUsers
74 This keyword can be followed by a list of user name patterns,
75 separated by spaces. If specified, login is allowed only for
76 user names that match one of the patterns. Only user names are
77 valid; a numerical user ID is not recognized. By default, login
78 is allowed for all users. If the pattern takes the form
79 USER@HOST then USER and HOST are separately checked, restricting
80 logins to particular users from particular hosts. HOST criteria
81 may additionally contain addresses to match in CIDR
82 address/masklen format. The allow/deny directives are processed
83 in the following order: DenyUsers, AllowUsers, DenyGroups, and
84 finally AllowGroups.
85
86 See PATTERNS in ssh_config(5) for more information on patterns.
87
88 AuthenticationMethods
89 Specifies the authentication methods that must be successfully
90 completed for a user to be granted access. This option must be
91 followed by one or more lists of comma-separated authentication
92 method names, or by the single string any to indicate the default
93 behaviour of accepting any single authentication method. If the
94 default is overridden, then successful authentication requires
95 completion of every method in at least one of these lists.
96
97 For example, "publickey,password publickey,keyboard-interactive"
98 would require the user to complete public key authentication,
99 followed by either password or keyboard interactive authentica‐
100 tion. Only methods that are next in one or more lists are
101 offered at each stage, so for this example it would not be possi‐
102 ble to attempt password or keyboard-interactive authentication
103 before public key.
104
105 For keyboard interactive authentication it is also possible to
106 restrict authentication to a specific device by appending a colon
107 followed by the device identifier bsdauth or pam. depending on
108 the server configuration. For example,
109 "keyboard-interactive:bsdauth" would restrict keyboard interac‐
110 tive authentication to the bsdauth device.
111
112 If the publickey method is listed more than once, sshd(8) veri‐
113 fies that keys that have been used successfully are not reused
114 for subsequent authentications. For example,
115 "publickey,publickey" requires successful authentication using
116 two different public keys.
117
118 Note that each authentication method listed should also be
119 explicitly enabled in the configuration.
120
121 The available authentication methods are: "gssapi-with-mic",
122 "hostbased", "keyboard-interactive", "none" (used for access to
123 password-less accounts when PermitEmptyPasswords is enabled),
124 "password" and "publickey".
125
126 AuthorizedKeysCommand
127 Specifies a program to be used to look up the user's public keys.
128 The program must be owned by root, not writable by group or oth‐
129 ers and specified by an absolute path. Arguments to
130 AuthorizedKeysCommand accept the tokens described in the TOKENS
131 section. If no arguments are specified then the username of the
132 target user is used.
133
134 The program should produce on standard output zero or more lines
135 of authorized_keys output (see AUTHORIZED_KEYS in sshd(8)). If a
136 key supplied by AuthorizedKeysCommand does not successfully
137 authenticate and authorize the user then public key authentica‐
138 tion continues using the usual AuthorizedKeysFile files. By
139 default, no AuthorizedKeysCommand is run.
140
141 AuthorizedKeysCommandUser
142 Specifies the user under whose account the AuthorizedKeysCommand
143 is run. It is recommended to use a dedicated user that has no
144 other role on the host than running authorized keys commands. If
145 AuthorizedKeysCommand is specified but AuthorizedKeysCommandUser
146 is not, then sshd(8) will refuse to start.
147
148 AuthorizedKeysFile
149 Specifies the file that contains the public keys used for user
150 authentication. The format is described in the AUTHORIZED_KEYS
151 FILE FORMAT section of sshd(8). Arguments to AuthorizedKeysFile
152 accept the tokens described in the TOKENS section. After expan‐
153 sion, AuthorizedKeysFile is taken to be an absolute path or one
154 relative to the user's home directory. Multiple files may be
155 listed, separated by whitespace. Alternately this option may be
156 set to none to skip checking for user keys in files. The default
157 is ".ssh/authorized_keys .ssh/authorized_keys2".
158
159 AuthorizedPrincipalsCommand
160 Specifies a program to be used to generate the list of allowed
161 certificate principals as per AuthorizedPrincipalsFile. The pro‐
162 gram must be owned by root, not writable by group or others and
163 specified by an absolute path. Arguments to
164 AuthorizedPrincipalsCommand accept the tokens described in the
165 TOKENS section. If no arguments are specified then the username
166 of the target user is used.
167
168 The program should produce on standard output zero or more lines
169 of AuthorizedPrincipalsFile output. If either
170 AuthorizedPrincipalsCommand or AuthorizedPrincipalsFile is speci‐
171 fied, then certificates offered by the client for authentication
172 must contain a principal that is listed. By default, no
173 AuthorizedPrincipalsCommand is run.
174
175 AuthorizedPrincipalsCommandUser
176 Specifies the user under whose account the
177 AuthorizedPrincipalsCommand is run. It is recommended to use a
178 dedicated user that has no other role on the host than running
179 authorized principals commands. If AuthorizedPrincipalsCommand
180 is specified but AuthorizedPrincipalsCommandUser is not, then
181 sshd(8) will refuse to start.
182
183 AuthorizedPrincipalsFile
184 Specifies a file that lists principal names that are accepted for
185 certificate authentication. When using certificates signed by a
186 key listed in TrustedUserCAKeys, this file lists names, one of
187 which must appear in the certificate for it to be accepted for
188 authentication. Names are listed one per line preceded by key
189 options (as described in AUTHORIZED_KEYS FILE FORMAT in sshd(8)).
190 Empty lines and comments starting with ‘#’ are ignored.
191
192 Arguments to AuthorizedPrincipalsFile accept the tokens described
193 in the TOKENS section. After expansion, AuthorizedPrincipalsFile
194 is taken to be an absolute path or one relative to the user's
195 home directory. The default is none, i.e. not to use a princi‐
196 pals file – in this case, the username of the user must appear in
197 a certificate's principals list for it to be accepted.
198
199 Note that AuthorizedPrincipalsFile is only used when authentica‐
200 tion proceeds using a CA listed in TrustedUserCAKeys and is not
201 consulted for certification authorities trusted via
202 ~/.ssh/authorized_keys, though the principals= key option offers
203 a similar facility (see sshd(8) for details).
204
205 Banner The contents of the specified file are sent to the remote user
206 before authentication is allowed. If the argument is none then
207 no banner is displayed. By default, no banner is displayed.
208
209 CASignatureAlgorithms
210 Specifies which algorithms are allowed for signing of certifi‐
211 cates by certificate authorities (CAs). The default is:
212
213 ecdsa-sha2-nistp256.ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
214 ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
215
216 Certificates signed using other algorithms will not be accepted
217 for public key or host-based authentication.
218
219 ChallengeResponseAuthentication
220 Specifies whether challenge-response authentication is allowed
221 (e.g. via PAM or through authentication styles supported in
222 login.conf(5)) The default is yes.
223
224 ChrootDirectory
225 Specifies the pathname of a directory to chroot(2) to after
226 authentication. At session startup sshd(8) checks that all com‐
227 ponents of the pathname are root-owned directories which are not
228 writable by any other user or group. After the chroot, sshd(8)
229 changes the working directory to the user's home directory.
230 Arguments to ChrootDirectory accept the tokens described in the
231 TOKENS section.
232
233 The ChrootDirectory must contain the necessary files and directo‐
234 ries to support the user's session. For an interactive session
235 this requires at least a shell, typically sh(1), and basic /dev
236 nodes such as null(4), zero(4), stdin(4), stdout(4), stderr(4),
237 and tty(4) devices. For file transfer sessions using SFTP no
238 additional configuration of the environment is necessary if the
239 in-process sftp-server is used, though sessions which use logging
240 may require /dev/log inside the chroot directory on some operat‐
241 ing systems (see sftp-server(8) for details).
242
243 For safety, it is very important that the directory hierarchy be
244 prevented from modification by other processes on the system
245 (especially those outside the jail). Misconfiguration can lead
246 to unsafe environments which sshd(8) cannot detect.
247
248 The default is none, indicating not to chroot(2).
249
250 Ciphers
251 Specifies the ciphers allowed. Multiple ciphers must be comma-
252 separated. If the specified value begins with a ‘+’ character,
253 then the specified ciphers will be appended to the default set
254 instead of replacing them. If the specified value begins with a
255 ‘-’ character, then the specified ciphers (including wildcards)
256 will be removed from the default set instead of replacing them.
257
258 The supported ciphers are:
259
260 3des-cbc
261 aes128-cbc
262 aes192-cbc
263 aes256-cbc
264 aes128-ctr
265 aes192-ctr
266 aes256-ctr
267 aes128-gcm@openssh.com
268 aes256-gcm@openssh.com
269 chacha20-poly1305@openssh.com
270
271 The default is handled system-wide by crypto-policies(7). To see
272 the defaults and how to modifuy this default, see manual page
273 update-crypto-policies(8).
274
275 The list of available ciphers may also be obtained using "ssh -Q
276 cipher".
277
278 ClientAliveCountMax
279 Sets the number of client alive messages which may be sent with‐
280 out sshd(8) receiving any messages back from the client. If this
281 threshold is reached while client alive messages are being sent,
282 sshd will disconnect the client, terminating the session. It is
283 important to note that the use of client alive messages is very
284 different from TCPKeepAlive. The client alive messages are sent
285 through the encrypted channel and therefore will not be spoofa‐
286 ble. The TCP keepalive option enabled by TCPKeepAlive is spoofa‐
287 ble. The client alive mechanism is valuable when the client or
288 server depend on knowing when a connection has become inactive.
289
290 The default value is 3. If ClientAliveInterval is set to 15, and
291 ClientAliveCountMax is left at the default, unresponsive SSH
292 clients will be disconnected after approximately 45 seconds.
293
294 ClientAliveInterval
295 Sets a timeout interval in seconds after which if no data has
296 been received from the client, sshd(8) will send a message
297 through the encrypted channel to request a response from the
298 client. The default is 0, indicating that these messages will
299 not be sent to the client.
300
301 Compression
302 Specifies whether compression is enabled after the user has
303 authenticated successfully. The argument must be yes, delayed (a
304 legacy synonym for yes) or no. The default is yes.
305
306 DenyGroups
307 This keyword can be followed by a list of group name patterns,
308 separated by spaces. Login is disallowed for users whose primary
309 group or supplementary group list matches one of the patterns.
310 Only group names are valid; a numerical group ID is not recog‐
311 nized. By default, login is allowed for all groups. The
312 allow/deny directives are processed in the following order:
313 DenyUsers, AllowUsers, DenyGroups, and finally AllowGroups.
314
315 See PATTERNS in ssh_config(5) for more information on patterns.
316
317 DenyUsers
318 This keyword can be followed by a list of user name patterns,
319 separated by spaces. Login is disallowed for user names that
320 match one of the patterns. Only user names are valid; a numeri‐
321 cal user ID is not recognized. By default, login is allowed for
322 all users. If the pattern takes the form USER@HOST then USER and
323 HOST are separately checked, restricting logins to particular
324 users from particular hosts. HOST criteria may additionally con‐
325 tain addresses to match in CIDR address/masklen format. The
326 allow/deny directives are processed in the following order:
327 DenyUsers, AllowUsers, DenyGroups, and finally AllowGroups.
328
329 See PATTERNS in ssh_config(5) for more information on patterns.
330
331 DisableForwarding
332 Disables all forwarding features, including X11, ssh-agent(1),
333 TCP and StreamLocal. This option overrides all other forwarding-
334 related options and may simplify restricted configurations.
335
336 ExposeAuthInfo
337 Writes a temporary file containing a list of authentication meth‐
338 ods and public credentials (e.g. keys) used to authenticate the
339 user. The location of the file is exposed to the user session
340 through the SSH_USER_AUTH environment variable. The default is
341 no.
342
343 FingerprintHash
344 Specifies the hash algorithm used when logging key fingerprints.
345 Valid options are: md5 and sha256. The default is sha256.
346
347 ForceCommand
348 Forces the execution of the command specified by ForceCommand,
349 ignoring any command supplied by the client and ~/.ssh/rc if
350 present. The command is invoked by using the user's login shell
351 with the -c option. This applies to shell, command, or subsystem
352 execution. It is most useful inside a Match block. The command
353 originally supplied by the client is available in the
354 SSH_ORIGINAL_COMMAND environment variable. Specifying a command
355 of internal-sftp will force the use of an in-process SFTP server
356 that requires no support files when used with ChrootDirectory.
357 The default is none.
358
359 GatewayPorts
360 Specifies whether remote hosts are allowed to connect to ports
361 forwarded for the client. By default, sshd(8) binds remote port
362 forwardings to the loopback address. This prevents other remote
363 hosts from connecting to forwarded ports. GatewayPorts can be
364 used to specify that sshd should allow remote port forwardings to
365 bind to non-loopback addresses, thus allowing other hosts to con‐
366 nect. The argument may be no to force remote port forwardings to
367 be available to the local host only, yes to force remote port
368 forwardings to bind to the wildcard address, or clientspecified
369 to allow the client to select the address to which the forwarding
370 is bound. The default is no.
371
372 GSSAPIAuthentication
373 Specifies whether user authentication based on GSSAPI is allowed.
374 The default is no.
375
376 GSSAPICleanupCredentials
377 Specifies whether to automatically destroy the user's credentials
378 cache on logout. The default is yes.
379
380 GSSAPIEnablek5users
381 Specifies whether to look at .k5users file for GSSAPI authentica‐
382 tion access control. Further details are described in ksu(1).
383 The default is no.
384
385 GSSAPIKeyExchange
386 Specifies whether key exchange based on GSSAPI is allowed. GSSAPI
387 key exchange doesn't rely on ssh keys to verify host identity.
388 The default is no.
389
390 GSSAPIStrictAcceptorCheck
391 Determines whether to be strict about the identity of the GSSAPI
392 acceptor a client authenticates against. If set to yes then the
393 client must authenticate against the host service on the current
394 hostname. If set to no then the client may authenticate against
395 any service key stored in the machine's default store. This
396 facility is provided to assist with operation on multi homed
397 machines. The default is yes.
398
399 GSSAPIStoreCredentialsOnRekey
400 Controls whether the user's GSSAPI credentials should be updated
401 following a successful connection rekeying. This option can be
402 used to accepted renewed or updated credentials from a compatible
403 client. The default is “no”.
404
405 For this to work GSSAPIKeyExchange needs to be enabled in the
406 server and also used by the client.
407
408 GSSAPIKexAlgorithms
409 The list of key exchange algorithms that are accepted by GSSAPI
410 key exchange. Possible values are
411
412 gss-gex-sha1-,
413 gss-group1-sha1-,
414 gss-group14-sha1-,
415 gss-group14-sha256-,
416 gss-group16-sha512-,
417 gss-nistp256-sha256-,
418 gss-curve25519-sha256-
419
420 The default is handled system-wide by crypto-policies(7). To see
421 the defaults and how to modifuy this default, see manual page
422 update-crypto-policies(8). This option only applies to protocol
423 version 2 connections using GSSAPI.
424
425 HostbasedAcceptedKeyTypes
426 Specifies the key types that will be accepted for hostbased
427 authentication as a list of comma-separated patterns. Alter‐
428 nately if the specified value begins with a ‘+’ character, then
429 the specified key types will be appended to the default set
430 instead of replacing them. If the specified value begins with a
431 ‘-’ character, then the specified key types (including wildcards)
432 will be removed from the default set instead of replacing them.
433 The default for this option is:
434
435 ecdsa-sha2-nistp256-cert-v01@openssh.com,
436 ecdsa-sha2-nistp384-cert-v01@openssh.com,
437 ecdsa-sha2-nistp521-cert-v01@openssh.com,
438 ssh-ed25519-cert-v01@openssh.com,
439 rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,
440 ssh-rsa-cert-v01@openssh.com,
441 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
442 ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
443
444 The list of available key types may also be obtained using "ssh
445 -Q key".
446
447 HostbasedAuthentication
448 Specifies whether rhosts or /etc/hosts.equiv authentication
449 together with successful public key client host authentication is
450 allowed (host-based authentication). The default is no.
451
452 HostbasedUsesNameFromPacketOnly
453 Specifies whether or not the server will attempt to perform a
454 reverse name lookup when matching the name in the ~/.shosts,
455 ~/.rhosts, and /etc/hosts.equiv files during
456 HostbasedAuthentication. A setting of yes means that sshd(8)
457 uses the name supplied by the client rather than attempting to
458 resolve the name from the TCP connection itself. The default is
459 no.
460
461 HostCertificate
462 Specifies a file containing a public host certificate. The cer‐
463 tificate's public key must match a private host key already spec‐
464 ified by HostKey. The default behaviour of sshd(8) is not to
465 load any certificates.
466
467 HostKey
468 Specifies a file containing a private host key used by SSH. The
469 defaults are /etc/ssh/ssh_host_ecdsa_key,
470 /etc/ssh/ssh_host_ed25519_key and /etc/ssh/ssh_host_rsa_key.
471
472 Note that sshd(8) will refuse to use a file if it is group/world-
473 accessible and that the HostKeyAlgorithms option restricts which
474 of the keys are actually used by sshd(8).
475
476 It is possible to have multiple host key files. It is also pos‐
477 sible to specify public host key files instead. In this case
478 operations on the private key will be delegated to an
479 ssh-agent(1).
480
481 HostKeyAgent
482 Identifies the UNIX-domain socket used to communicate with an
483 agent that has access to the private host keys. If the string
484 "SSH_AUTH_SOCK" is specified, the location of the socket will be
485 read from the SSH_AUTH_SOCK environment variable.
486
487 HostKeyAlgorithms
488 Specifies the host key algorithms that the server offers. The
489 default is handled system-wide by crypto-policies(7). To see the
490 defaults and how to modifuy this default, see manual page
491 update-crypto-policies(8).
492
493 The list of available key types may also be obtained using "ssh
494 -Q key".
495
496 IgnoreRhosts
497 Specifies that .rhosts and .shosts files will not be used in
498 HostbasedAuthentication.
499
500 /etc/hosts.equiv and /etc/ssh/shosts.equiv are still used. The
501 default is yes.
502
503 IgnoreUserKnownHosts
504 Specifies whether sshd(8) should ignore the user's
505 ~/.ssh/known_hosts during HostbasedAuthentication and use only
506 the system-wide known hosts file /etc/ssh/known_hosts. The
507 default is no.
508
509 IPQoS Specifies the IPv4 type-of-service or DSCP class for the connec‐
510 tion. Accepted values are af11, af12, af13, af21, af22, af23,
511 af31, af32, af33, af41, af42, af43, cs0, cs1, cs2, cs3, cs4, cs5,
512 cs6, cs7, ef, lowdelay, throughput, reliability, a numeric value,
513 or none to use the operating system default. This option may
514 take one or two arguments, separated by whitespace. If one argu‐
515 ment is specified, it is used as the packet class uncondition‐
516 ally. If two values are specified, the first is automatically
517 selected for interactive sessions and the second for non-interac‐
518 tive sessions. The default is af21 (Low-Latency Data) for inter‐
519 active sessions and cs1 (Lower Effort) for non-interactive ses‐
520 sions.
521
522 KbdInteractiveAuthentication
523 Specifies whether to allow keyboard-interactive authentication.
524 The argument to this keyword must be yes or no. The default is
525 to use whatever value ChallengeResponseAuthentication is set to
526 (by default yes).
527
528 KerberosAuthentication
529 Specifies whether the password provided by the user for
530 PasswordAuthentication will be validated through the Kerberos
531 KDC. To use this option, the server needs a Kerberos servtab
532 which allows the verification of the KDC's identity. The default
533 is no.
534
535 KerberosGetAFSToken
536 If AFS is active and the user has a Kerberos 5 TGT, attempt to
537 acquire an AFS token before accessing the user's home directory.
538 The default is no.
539
540 KerberosOrLocalPasswd
541 If password authentication through Kerberos fails then the pass‐
542 word will be validated via any additional local mechanism such as
543 /etc/passwd. The default is yes.
544
545 KerberosTicketCleanup
546 Specifies whether to automatically destroy the user's ticket
547 cache file on logout. The default is yes.
548
549 KerberosUniqueCCache
550 Specifies whether to store the acquired tickets in the per-ses‐
551 sion credential cache under /tmp/ or whether to use per-user cre‐
552 dential cache as configured in /etc/krb5.conf. The default value
553 no can lead to overwriting previous tickets by subseqent connec‐
554 tions to the same user account.
555
556 KerberosUseKuserok
557 Specifies whether to look at .k5login file for user's aliases.
558 The default is yes.
559
560 KexAlgorithms
561 Specifies the available KEX (Key Exchange) algorithms. Multiple
562 algorithms must be comma-separated. Alternately if the specified
563 value begins with a ‘+’ character, then the specified methods
564 will be appended to the default set instead of replacing them.
565 If the specified value begins with a ‘-’ character, then the
566 specified methods (including wildcards) will be removed from the
567 default set instead of replacing them. The supported algorithms
568 are:
569
570 curve25519-sha256
571 curve25519-sha256@libssh.org
572 diffie-hellman-group1-sha1
573 diffie-hellman-group14-sha1
574 diffie-hellman-group14-sha256
575 diffie-hellman-group16-sha512
576 diffie-hellman-group18-sha512
577 diffie-hellman-group-exchange-sha1
578 diffie-hellman-group-exchange-sha256
579 ecdh-sha2-nistp256
580 ecdh-sha2-nistp384
581 ecdh-sha2-nistp521
582
583 The default is handled system-wide by crypto-policies(7). To see
584 the defaults and how to modifuy this default, see manual page
585 update-crypto-policies(8).
586
587 The list of available key exchange algorithms may also be
588 obtained using "ssh -Q kex".
589
590 ListenAddress
591 Specifies the local addresses sshd(8) should listen on. The fol‐
592 lowing forms may be used:
593
594 ListenAddress hostname|address [rdomain domain]
595 ListenAddress hostname:port [rdomain domain]
596 ListenAddress IPv4_address:port [rdomain domain]
597 ListenAddress [hostname|address]:port [rdomain domain]
598
599 The optional rdomain qualifier requests sshd(8) listen in an
600 explicit routing domain. If port is not specified, sshd will
601 listen on the address and all Port options specified. The
602 default is to listen on all local addresses on the current
603 default routing domain. Multiple ListenAddress options are per‐
604 mitted. For more information on routing domains, see rdomain(4).
605
606 LoginGraceTime
607 The server disconnects after this time if the user has not suc‐
608 cessfully logged in. If the value is 0, there is no time limit.
609 The default is 120 seconds.
610
611 LogLevel
612 Gives the verbosity level that is used when logging messages from
613 sshd(8). The possible values are: QUIET, FATAL, ERROR, INFO,
614 VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3. The default is INFO.
615 DEBUG and DEBUG1 are equivalent. DEBUG2 and DEBUG3 each specify
616 higher levels of debugging output. Logging with a DEBUG level
617 violates the privacy of users and is not recommended.
618
619 MACs Specifies the available MAC (message authentication code) algo‐
620 rithms. The MAC algorithm is used for data integrity protection.
621 Multiple algorithms must be comma-separated. If the specified
622 value begins with a ‘+’ character, then the specified algorithms
623 will be appended to the default set instead of replacing them.
624 If the specified value begins with a ‘-’ character, then the
625 specified algorithms (including wildcards) will be removed from
626 the default set instead of replacing them.
627
628 The algorithms that contain "-etm" calculate the MAC after
629 encryption (encrypt-then-mac). These are considered safer and
630 their use recommended. The supported MACs are:
631
632 hmac-md5
633 hmac-md5-96
634 hmac-sha1
635 hmac-sha1-96
636 hmac-sha2-256
637 hmac-sha2-512
638 umac-64@openssh.com
639 umac-128@openssh.com
640 hmac-md5-etm@openssh.com
641 hmac-md5-96-etm@openssh.com
642 hmac-sha1-etm@openssh.com
643 hmac-sha1-96-etm@openssh.com
644 hmac-sha2-256-etm@openssh.com
645 hmac-sha2-512-etm@openssh.com
646 umac-64-etm@openssh.com
647 umac-128-etm@openssh.com
648
649 The default is handled system-wide by crypto-policies(7). To see
650 the defaults and how to modifuy this default, see manual page
651 update-crypto-policies(8).
652
653 The list of available MAC algorithms may also be obtained using
654 "ssh -Q mac".
655
656 Match Introduces a conditional block. If all of the criteria on the
657 Match line are satisfied, the keywords on the following lines
658 override those set in the global section of the config file,
659 until either another Match line or the end of the file. If a
660 keyword appears in multiple Match blocks that are satisfied, only
661 the first instance of the keyword is applied.
662
663 The arguments to Match are one or more criteria-pattern pairs or
664 the single token All which matches all criteria. The available
665 criteria are User, Group, Host, LocalAddress, LocalPort, RDomain,
666 and Address (with RDomain representing the rdomain(4) on which
667 the connection was received).
668
669 The match patterns may consist of single entries or comma-sepa‐
670 rated lists and may use the wildcard and negation operators
671 described in the PATTERNS section of ssh_config(5).
672
673 The patterns in an Address criteria may additionally contain
674 addresses to match in CIDR address/masklen format, such as
675 192.0.2.0/24 or 2001:db8::/32. Note that the mask length pro‐
676 vided must be consistent with the address - it is an error to
677 specify a mask length that is too long for the address or one
678 with bits set in this host portion of the address. For example,
679 192.0.2.0/33 and 192.0.2.0/8, respectively.
680
681 Only a subset of keywords may be used on the lines following a
682 Match keyword. Available keywords are AcceptEnv,
683 AllowAgentForwarding, AllowGroups, AllowStreamLocalForwarding,
684 AllowTcpForwarding, AllowUsers, AuthenticationMethods,
685 AuthorizedKeysCommand, AuthorizedKeysCommandUser,
686 AuthorizedKeysFile, AuthorizedPrincipalsCommand,
687 AuthorizedPrincipalsCommandUser, AuthorizedPrincipalsFile,
688 Banner, ChrootDirectory, ClientAliveCountMax,
689 ClientAliveInterval, DenyGroups, DenyUsers, ForceCommand,
690 GatewayPorts, GSSAPIAuthentication, HostbasedAcceptedKeyTypes,
691 HostbasedAuthentication, HostbasedUsesNameFromPacketOnly, IPQoS,
692 KbdInteractiveAuthentication, KerberosAuthentication,
693 KerberosUseKuserok, LogLevel, MaxAuthTries, MaxSessions,
694 PasswordAuthentication, PermitEmptyPasswords, PermitListen,
695 PermitOpen, PermitRootLogin, PermitTTY, PermitTunnel,
696 PermitUserRC, PubkeyAcceptedKeyTypes, PubkeyAuthentication,
697 RekeyLimit, RevokedKeys, RDomain, SetEnv, StreamLocalBindMask,
698 StreamLocalBindUnlink, TrustedUserCAKeys, X11DisplayOffset,
699 X11MaxDisplays, X11Forwarding and X11UseLocalHost.
700
701 MaxAuthTries
702 Specifies the maximum number of authentication attempts permitted
703 per connection. Once the number of failures reaches half this
704 value, additional failures are logged. The default is 6.
705
706 MaxSessions
707 Specifies the maximum number of open shell, login or subsystem
708 (e.g. sftp) sessions permitted per network connection. Multiple
709 sessions may be established by clients that support connection
710 multiplexing. Setting MaxSessions to 1 will effectively disable
711 session multiplexing, whereas setting it to 0 will prevent all
712 shell, login and subsystem sessions while still permitting for‐
713 warding. The default is 10.
714
715 MaxStartups
716 Specifies the maximum number of concurrent unauthenticated con‐
717 nections to the SSH daemon. Additional connections will be
718 dropped until authentication succeeds or the LoginGraceTime
719 expires for a connection. The default is 10:30:100.
720
721 Alternatively, random early drop can be enabled by specifying the
722 three colon separated values start:rate:full (e.g. "10:30:60").
723 sshd(8) will refuse connection attempts with a probability of
724 rate/100 (30%) if there are currently start (10) unauthenticated
725 connections. The probability increases linearly and all connec‐
726 tion attempts are refused if the number of unauthenticated con‐
727 nections reaches full (60).
728
729 PasswordAuthentication
730 Specifies whether password authentication is allowed. The
731 default is yes.
732
733 PermitEmptyPasswords
734 When password authentication is allowed, it specifies whether the
735 server allows login to accounts with empty password strings. The
736 default is no.
737
738 PermitListen
739 Specifies the addresses/ports on which a remote TCP port forward‐
740 ing may listen. The listen specification must be one of the fol‐
741 lowing forms:
742
743 PermitListen port
744 PermitListen host:port
745
746 Multiple permissions may be specified by separating them with
747 whitespace. An argument of any can be used to remove all
748 restrictions and permit any listen requests. An argument of none
749 can be used to prohibit all listen requests. The host name may
750 contain wildcards as described in the PATTERNS section in
751 ssh_config(5). The wildcard ‘*’ can also be used in place of a
752 port number to allow all ports. By default all port forwarding
753 listen requests are permitted. Note that the GatewayPorts option
754 may further restrict which addresses may be listened on. Note
755 also that ssh(1) will request a listen host of “localhost” if no
756 listen host was specifically requested, and this name is treated
757 differently to explicit localhost addresses of “127.0.0.1” and
758 “::1”.
759
760 PermitOpen
761 Specifies the destinations to which TCP port forwarding is per‐
762 mitted. The forwarding specification must be one of the follow‐
763 ing forms:
764
765 PermitOpen host:port
766 PermitOpen IPv4_addr:port
767 PermitOpen [IPv6_addr]:port
768
769 Multiple forwards may be specified by separating them with white‐
770 space. An argument of any can be used to remove all restrictions
771 and permit any forwarding requests. An argument of none can be
772 used to prohibit all forwarding requests. The wildcard ‘*’ can
773 be used for host or port to allow all hosts or ports, respec‐
774 tively. By default all port forwarding requests are permitted.
775
776 PermitRootLogin
777 Specifies whether root can log in using ssh(1). The argument
778 must be yes, prohibit-password, forced-commands-only, or no. The
779 default is prohibit-password.
780
781 If this option is set to prohibit-password (or its deprecated
782 alias, without-password), password and keyboard-interactive
783 authentication are disabled for root.
784
785 If this option is set to forced-commands-only, root login with
786 public key authentication will be allowed, but only if the
787 command option has been specified (which may be useful for taking
788 remote backups even if root login is normally not allowed). All
789 other authentication methods are disabled for root.
790
791 If this option is set to no, root is not allowed to log in.
792
793 PermitTTY
794 Specifies whether pty(4) allocation is permitted. The default is
795 yes.
796
797 PermitTunnel
798 Specifies whether tun(4) device forwarding is allowed. The argu‐
799 ment must be yes, point-to-point (layer 3), ethernet (layer 2),
800 or no. Specifying yes permits both point-to-point and ethernet.
801 The default is no.
802
803 Independent of this setting, the permissions of the selected
804 tun(4) device must allow access to the user.
805
806 PermitUserEnvironment
807 Specifies whether ~/.ssh/environment and environment= options in
808 ~/.ssh/authorized_keys are processed by sshd(8). Valid options
809 are yes, no or a pattern-list specifying which environment vari‐
810 able names to accept (for example "LANG,LC_*"). The default is
811 no. Enabling environment processing may enable users to bypass
812 access restrictions in some configurations using mechanisms such
813 as LD_PRELOAD.
814
815 PermitUserRC
816 Specifies whether any ~/.ssh/rc file is executed. The default is
817 yes.
818
819 PidFile
820 Specifies the file that contains the process ID of the SSH dae‐
821 mon, or none to not write one. The default is /var/run/sshd.pid.
822
823 Port Specifies the port number that sshd(8) listens on. The default
824 is 22. Multiple options of this type are permitted. See also
825 ListenAddress.
826
827 PrintLastLog
828 Specifies whether sshd(8) should print the date and time of the
829 last user login when a user logs in interactively. The default
830 is yes.
831
832 PrintMotd
833 Specifies whether sshd(8) should print /etc/motd when a user logs
834 in interactively. (On some systems it is also printed by the
835 shell, /etc/profile, or equivalent.) The default is yes.
836
837 PubkeyAcceptedKeyTypes
838 Specifies the key types that will be accepted for public key
839 authentication as a list of comma-separated patterns. Alter‐
840 nately if the specified value begins with a ‘+’ character, then
841 the specified key types will be appended to the default set
842 instead of replacing them. If the specified value begins with a
843 ‘-’ character, then the specified key types (including wildcards)
844 will be removed from the default set instead of replacing them.
845 The default is handled system-wide by crypto-policies(7). To see
846 the defaults and how to modifuy this default, see manual page
847 update-crypto-policies(8).
848
849 The list of available key types may also be obtained using "ssh
850 -Q key".
851
852 PubkeyAuthentication
853 Specifies whether public key authentication is allowed. The
854 default is yes.
855
856 RekeyLimit
857 Specifies the maximum amount of data that may be transmitted
858 before the session key is renegotiated, optionally followed a
859 maximum amount of time that may pass before the session key is
860 renegotiated. The first argument is specified in bytes and may
861 have a suffix of ‘K’, ‘M’, or ‘G’ to indicate Kilobytes,
862 Megabytes, or Gigabytes, respectively. The default is between
863 ‘1G’ and ‘4G’, depending on the cipher. The optional second
864 value is specified in seconds and may use any of the units docu‐
865 mented in the TIME FORMATS section. The default value for
866 RekeyLimit is default none, which means that rekeying is per‐
867 formed after the cipher's default amount of data has been sent or
868 received and no time based rekeying is done.
869
870 RevokedKeys
871 Specifies revoked public keys file, or none to not use one. Keys
872 listed in this file will be refused for public key authentica‐
873 tion. Note that if this file is not readable, then public key
874 authentication will be refused for all users. Keys may be speci‐
875 fied as a text file, listing one public key per line, or as an
876 OpenSSH Key Revocation List (KRL) as generated by ssh-keygen(1).
877 For more information on KRLs, see the KEY REVOCATION LISTS sec‐
878 tion in ssh-keygen(1).
879
880 RDomain
881 Specifies an explicit routing domain that is applied after
882 authentication has completed. The user session, as well and any
883 forwarded or listening IP sockets, will be bound to this
884 rdomain(4). If the routing domain is set to %D, then the domain
885 in which the incoming connection was received will be applied.
886
887 SetEnv Specifies one or more environment variables to set in child ses‐
888 sions started by sshd(8) as “NAME=VALUE”. The environment value
889 may be quoted (e.g. if it contains whitespace characters). Envi‐
890 ronment variables set by SetEnv override the default environment
891 and any variables specified by the user via AcceptEnv or
892 PermitUserEnvironment.
893
894 StreamLocalBindMask
895 Sets the octal file creation mode mask (umask) used when creating
896 a Unix-domain socket file for local or remote port forwarding.
897 This option is only used for port forwarding to a Unix-domain
898 socket file.
899
900 The default value is 0177, which creates a Unix-domain socket
901 file that is readable and writable only by the owner. Note that
902 not all operating systems honor the file mode on Unix-domain
903 socket files.
904
905 StreamLocalBindUnlink
906 Specifies whether to remove an existing Unix-domain socket file
907 for local or remote port forwarding before creating a new one.
908 If the socket file already exists and StreamLocalBindUnlink is
909 not enabled, sshd will be unable to forward the port to the Unix-
910 domain socket file. This option is only used for port forwarding
911 to a Unix-domain socket file.
912
913 The argument must be yes or no. The default is no.
914
915 StrictModes
916 Specifies whether sshd(8) should check file modes and ownership
917 of the user's files and home directory before accepting login.
918 This is normally desirable because novices sometimes accidentally
919 leave their directory or files world-writable. The default is
920 yes. Note that this does not apply to ChrootDirectory, whose
921 permissions and ownership are checked unconditionally.
922
923 Subsystem
924 Configures an external subsystem (e.g. file transfer daemon).
925 Arguments should be a subsystem name and a command (with optional
926 arguments) to execute upon subsystem request.
927
928 The command sftp-server implements the SFTP file transfer subsys‐
929 tem.
930
931 Alternately the name internal-sftp implements an in-process SFTP
932 server. This may simplify configurations using ChrootDirectory
933 to force a different filesystem root on clients.
934
935 By default no subsystems are defined.
936
937 SyslogFacility
938 Gives the facility code that is used when logging messages from
939 sshd(8). The possible values are: DAEMON, USER, AUTH, AUTHPRIV,
940 LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7.
941 The default is AUTH.
942
943 TCPKeepAlive
944 Specifies whether the system should send TCP keepalive messages
945 to the other side. If they are sent, death of the connection or
946 crash of one of the machines will be properly noticed. However,
947 this means that connections will die if the route is down tempo‐
948 rarily, and some people find it annoying. On the other hand, if
949 TCP keepalives are not sent, sessions may hang indefinitely on
950 the server, leaving "ghost" users and consuming server resources.
951
952 The default is yes (to send TCP keepalive messages), and the
953 server will notice if the network goes down or the client host
954 crashes. This avoids infinitely hanging sessions.
955
956 To disable TCP keepalive messages, the value should be set to no.
957
958 TrustedUserCAKeys
959 Specifies a file containing public keys of certificate authori‐
960 ties that are trusted to sign user certificates for authentica‐
961 tion, or none to not use one. Keys are listed one per line;
962 empty lines and comments starting with ‘#’ are allowed. If a
963 certificate is presented for authentication and has its signing
964 CA key listed in this file, then it may be used for authentica‐
965 tion for any user listed in the certificate's principals list.
966 Note that certificates that lack a list of principals will not be
967 permitted for authentication using TrustedUserCAKeys. For more
968 details on certificates, see the CERTIFICATES section in
969 ssh-keygen(1).
970
971 UseDNS Specifies whether sshd(8) should look up the remote host name,
972 and to check that the resolved host name for the remote IP
973 address maps back to the very same IP address.
974
975 If this option is set to no (the default) then only addresses and
976 not host names may be used in ~/.ssh/authorized_keys from and
977 sshd_config Match Host directives.
978
979 UsePAM Enables the Pluggable Authentication Module interface. If set to
980 yes this will enable PAM authentication using
981 ChallengeResponseAuthentication and PasswordAuthentication in
982 addition to PAM account and session module processing for all
983 authentication types.
984
985 Because PAM challenge-response authentication usually serves an
986 equivalent role to password authentication, you should disable
987 either PasswordAuthentication or ChallengeResponseAuthentication.
988
989 If UsePAM is enabled, you will not be able to run sshd(8) as a
990 non-root user. The default is no.
991
992 VersionAddendum
993 Optionally specifies additional text to append to the SSH proto‐
994 col banner sent by the server upon connection. The default is
995 none.
996
997 X11DisplayOffset
998 Specifies the first display number available for sshd(8)'s X11
999 forwarding. This prevents sshd from interfering with real X11
1000 servers. The default is 10.
1001
1002 X11MaxDisplays
1003 Specifies the maximum number of displays available for sshd(8)'s
1004 X11 forwarding. This prevents sshd from exhausting local ports.
1005 The default is 1000.
1006
1007 X11Forwarding
1008 Specifies whether X11 forwarding is permitted. The argument must
1009 be yes or no. The default is no.
1010
1011 When X11 forwarding is enabled, there may be additional exposure
1012 to the server and to client displays if the sshd(8) proxy display
1013 is configured to listen on the wildcard address (see
1014 X11UseLocalhost), though this is not the default. Additionally,
1015 the authentication spoofing and authentication data verification
1016 and substitution occur on the client side. The security risk of
1017 using X11 forwarding is that the client's X11 display server may
1018 be exposed to attack when the SSH client requests forwarding (see
1019 the warnings for ForwardX11 in ssh_config(5)). A system adminis‐
1020 trator may have a stance in which they want to protect clients
1021 that may expose themselves to attack by unwittingly requesting
1022 X11 forwarding, which can warrant a no setting.
1023
1024 Note that disabling X11 forwarding does not prevent users from
1025 forwarding X11 traffic, as users can always install their own
1026 forwarders.
1027
1028 X11UseLocalhost
1029 Specifies whether sshd(8) should bind the X11 forwarding server
1030 to the loopback address or to the wildcard address. By default,
1031 sshd binds the forwarding server to the loopback address and sets
1032 the hostname part of the DISPLAY environment variable to
1033 localhost. This prevents remote hosts from connecting to the
1034 proxy display. However, some older X11 clients may not function
1035 with this configuration. X11UseLocalhost may be set to no to
1036 specify that the forwarding server should be bound to the wild‐
1037 card address. The argument must be yes or no. The default is
1038 yes.
1039
1040 XAuthLocation
1041 Specifies the full pathname of the xauth(1) program, or none to
1042 not use one. The default is /usr/bin/xauth.
1043
1045 sshd(8) command-line arguments and configuration file options that spec‐
1046 ify time may be expressed using a sequence of the form: time[qualifier],
1047 where time is a positive integer value and qualifier is one of the fol‐
1048 lowing:
1049
1050 ⟨none⟩ seconds
1051 s | S seconds
1052 m | M minutes
1053 h | H hours
1054 d | D days
1055 w | W weeks
1056
1057 Each member of the sequence is added together to calculate the total time
1058 value.
1059
1060 Time format examples:
1061
1062 600 600 seconds (10 minutes)
1063 10m 10 minutes
1064 1h30m 1 hour 30 minutes (90 minutes)
1065
1067 Arguments to some keywords can make use of tokens, which are expanded at
1068 runtime:
1069
1070 %% A literal ‘%’.
1071 %D The routing domain in which the incoming connection was
1072 received.
1073 %F The fingerprint of the CA key.
1074 %f The fingerprint of the key or certificate.
1075 %h The home directory of the user.
1076 %i The key ID in the certificate.
1077 %K The base64-encoded CA key.
1078 %k The base64-encoded key or certificate for authentication.
1079 %s The serial number of the certificate.
1080 %T The type of the CA key.
1081 %t The key or certificate type.
1082 %U The numeric user ID of the target user.
1083 %u The username.
1084
1085 AuthorizedKeysCommand accepts the tokens %%, %f, %h, %k, %t, %U, and %u.
1086
1087 AuthorizedKeysFile accepts the tokens %%, %h, %U, and %u.
1088
1089 AuthorizedPrincipalsCommand accepts the tokens %%, %F, %f, %h, %i, %K,
1090 %k, %s, %T, %t, %U, and %u.
1091
1092 AuthorizedPrincipalsFile accepts the tokens %%, %h, %U, and %u.
1093
1094 ChrootDirectory accepts the tokens %%, %h, %U, and %u.
1095
1096 RoutingDomain accepts the token %D.
1097
1099 /etc/ssh/sshd_config
1100 Contains configuration data for sshd(8). This file should be
1101 writable by root only, but it is recommended (though not neces‐
1102 sary) that it be world-readable.
1103
1105 sftp-server(8), sshd(8)
1106
1108 OpenSSH is a derivative of the original and free ssh 1.2.12 release by
1109 Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo
1110 de Raadt and Dug Song removed many bugs, re-added newer features and cre‐
1111 ated OpenSSH. Markus Friedl contributed the support for SSH protocol
1112 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support
1113 for privilege separation.
1114
1115BSD June 22, 2019 BSD