SSHD_CONFIG(4)SSHD_CONFIG(4)NAMEsshd_config - sshd configuration file
SYNOPSIS
/etc/ssh/sshd_config
DESCRIPTION
The sshd(1M) daemon reads configuration data from /etc/ssh/sshd_config
(or the file specified with sshd -f on the command line). The file con‐
tains keyword-value pairs, one per line. A line starting with a hash
mark (#) and empty lines are interpreted as comments.
The sshd_config file supports the following keywords. Unless otherwise
noted, keywords and their arguments are case-insensitive.
AllowGroups
This keyword can be followed by a number of group names, separated
by spaces. If specified, login is allowed only for users whose
primary group or supplementary group list matches one of the pat‐
terns. Asterisk (*) and question mark (?) can be used as wildcards
in the patterns. Only group names are valid; a numerical group ID
is not recognized. By default, login is allowed regardless of the
primary group.
AllowTcpForwarding
Specifies whether TCP forwarding is permitted. The default is yes.
Disabling TCP forwarding does not improve security unless users are
also denied shell access, as they can always install their own for‐
warders.
AllowUsers
This keyword can be followed by a number of user names, separated
by spaces. If specified, login is allowed only for user names that
match one of the patterns. Asterisk (*) and question mark (?) can
be used as wildcards in the patterns. Only user names are valid; a
numerical user ID is not recognized. By default login is allowed
regardless of the user name.
If a specified pattern takes the form user@host then user and host
are checked separately, restricting logins to particular users from
particular hosts.
AuthorizedKeysFile
Specifies the file that contains the public keys that can be used
for user authentication. AuthorizedKeysFile can contain tokens of
the form %T, which are substituted during connection set-up. The
following tokens are defined: %% is replaced by a literal %, %h is
replaced by the home directory of the user being authenticated and
%u is replaced by the username of that user. After expansion,
AuthorizedKeysFile is taken to be an absolute path or one relative
to the user's home directory. The default is .ssh/authorized_keys.
Banner
In some jurisdictions, sending a warning message before authentica‐
tion can be relevant for getting legal protection. The contents of
the specified file are sent to the remote user before authentica‐
tion is allowed. This option is only available for protocol version
2. By default, no banner is displayed.
ChrootDirectory
Specifies a path to chroot(2) to after authentication. This path,
and all its components, must be root-owned directories that are not
writable by any other user or group.
The server always tries to change to the user's home directory
locally under the chrooted environment but a failure to do so is
not considered an error. In addition, the path might contain the
following tokens that are expanded at runtime once the connecting
user has been authenticated: %% is replaced by a literal %, %h is
replaced by the home directory of the user being authenticated, and
%u is replaced by the username of that user.
The ChrootDirectory must contain the necessary files and directo‐
ries to support the user's session. For an interactive SSH session
this requires at least a user's shell, shared libraries needed by
the shell, dynamic linker, and possibly basic /dev nodes such as
null, zero, stdin, stdout, stderr, random, and tty. Additionally,
terminal databases are needed for screen oriented applications. For
file transfer sessions using sftp with the SSH protocol version 2,
no additional configuration of the environment is necessary if the
in-process sftp server is used. See Subsystem for details.
The default is not to chroot(2).
Ciphers
Specifies the ciphers allowed for protocol version 2. Cipher order‐
ing on the server side is not relevant. Multiple ciphers must be
comma separated.
Valid ciphers are: aes128-ctr, aes192-ctr, aes256-ctr, aes128-cbc,
aes192-cbc, aes256-cbc, arcfour, arcfour128, arcfour256, 3des-cbc,
and blowfish-cbc.
The default cipher list is:
aes128-ctr,aes192-ctr,aes256-ctr,arcfour128,
arcfour256,arcfour
Using CBC modes on the server side is not recommended due to poten‐
tial security issues in connection with the SSH protocol version 2.
ClientAliveCountMax
Sets the number of client alive messages, (see ClientAliveInter‐
val), that can be sent without sshd receiving any messages back
from the client. If this threshold is reached while client alive
messages are being sent, sshd disconnects the client, terminating
the session. The use of client alive messages is very different
from TCPKeepAlive. The client alive messages are sent through the
encrypted channel and therefore are not spoofable. The TCP
keepalive option enabled by TCPKeepAlive is spoofable. The client
alive mechanism is valuable when a client or server depend on know‐
ing when a connection has become inactive.
The default value is 3. If ClientAliveInterval is set to 15, and
ClientAliveCountMax is left at the default, unresponsive ssh
clients are disconnected after approximately 45 seconds.
ClientAliveInterval
Sets a timeout interval in seconds after which, if no data has been
received from the client, sshd sends a message through the
encrypted channel to request a response from the client. The
default is 0, indicating that these messages are not sent to the
client. This option applies only to protocol version 2.
Compression
Controls whether the server allows the client to negotiate the use
of compression. The default is yes.
DenyGroups
Can be followed by a number of group names, separated by spaces.
Users whose primary group matches one of the patterns are not
allowed to log in. Asterisk (*) and question mark (?) can be used
as wildcards in the patterns. Only group names are valid; a numer‐
ical group ID is not recognized. By default, login is allowed
regardless of the primary group.
DenyUsers
Can be followed by a number of user names, separated by spaces.
Login is disallowed for user names that match one of the patterns.
Asterisk (*) and question mark (?) can be used as wildcards in the
patterns. Only user names are valid; a numerical user ID is not
recognized. By default, login is allowed regardless of the user
name.
If a specified pattern takes the form user@host then user and host
are checked separately, disallowing logins to particular users from
particular hosts.
GatewayPorts
Specifies whether remote hosts are allowed to connect to ports for‐
warded for the client. By default, sshd binds remote port forward‐
ings to the loopback address. This prevents other remote hosts from
connecting to forwarded ports. GatewayPorts can be used to specify
that sshd should bind remote port forwardings to the wildcard
address, thus allowing remote hosts to connect to forwarded ports.
The argument can be no to force remote port forwardings to be
available to the local host only, yes to force remote port forward‐
ings to bind to the wildcard address, or clientspecified to allow
the client to select the address to which the forwarding is bound.
The default is no. See also RemoteForward in ssh_config(4).
GSSAPIAuthentication
Enables/disables GSS-API user authentication. The default is yes.
Currently sshd authorizes client user principals to user accounts
as follows: if the principal name matches the requested user
account, then the principal is authorized. Otherwise, GSS-API
authentication fails.
GSSAPIKeyExchange
Enables/disables GSS-API-authenticated key exchanges. The default
is yes.
This option also enables the use of the GSS-API to authenticate the
user to server after the key exchange. GSS-API key exchange can
succeed but the subsequent authentication using the GSS-API fail if
the server does not authorize the user's GSS principal name to the
target user account.
Currently sshd authorizes client user principals to user accounts
as follows: if the principal name matches the requested user
account, then the principal is authorized. Otherwise, GSS-API
authentication fails.
GSSAPIStoreDelegatedCredentials
Enables/disables the use of delegated GSS-API credentials on the
server-side. The default is yes.
Specifically, this option, when enabled, causes the server to store
delegated GSS-API credentials in the user's default GSS-API creden‐
tial store (which for the Kerberos V mechanism means
/tmp/krb5cc_<uid>).
Note -
sshd does not take any steps to explicitly destroy stored dele‐
gated GSS-API credentials upon logout. It is the responsibility
of PAM modules to destroy credentials associated with a session.
HostbasedAuthentication
Specifies whether to try rhosts-based authentication with public
key authentication. The argument must be yes or no. The default is
no. This option applies to protocol version 2 only and is similar
to RhostsRSAAuthentication. See sshd(1M) for guidelines on setting
up host-based authentication.
HostbasedUsesNameFromPacketOnly
Controls which hostname is searched for in the files ~/.shosts,
/etc/shosts.equiv, and /etc/hosts.equiv. If this parameter is set
to yes, the server uses the name the client claimed for itself and
signed with that host's key. If set to no, the default, the server
uses the name to which the client's IP address resolves.
Setting this parameter to no disables host-based authentication
when using NAT or when the client gets to the server indirectly
through a port-forwarding firewall.
HostKey
Specifies the file containing the private host key used by SSH. The
default is /etc/ssh/ssh_host_key for protocol version 1, and
/etc/ssh/ssh_host_rsa_key and /etc/ssh/ssh_host_dsa_key for proto‐
col version 2. sshd refuses to use a file if it is group/world-
accessible. It is possible to have multiple host key files. rsa1
keys are used for version 1 and dsa or rsa are used for version 2
of the SSH protocol.
IgnoreRhosts
Specifies that .rhosts and .shosts files are not used in authenti‐
cation. /etc/hosts.equiv and /etc/shosts.equiv are still used. The
default is yes. This parameter applies to both protocol versions 1
and 2.
IgnoreUserKnownHosts
Specifies whether sshd should ignore the user's
$HOME/.ssh/known_hosts during RhostsRSAAuthentication. The default
is no. This parameter applies to both protocol versions 1 and 2.
KbdInteractiveAuthentication
Specifies whether authentication by means of the "keyboard-interac‐
tive" authentication method (and PAM) is allowed. Defaults to yes.
(Deprecated: this parameter can only be set to yes.)
TCPKeepAlive
Specifies whether the system should send keepalive messages to the
other side. If they are sent, death of the connection or crash of
one of the machines is properly noticed. However, this means that
connections die if the route is down temporarily, which can be an
annoyance. On the other hand, if keepalives are not sent, sessions
can hang indefinitely on the server, leaving ghost users and con‐
suming server resources.
The default is yes (to send keepalives), and the server notices if
the network goes down or the client host reboots. This avoids in‐
finitely hanging sessions.
To disable keepalives, the value should be set to no in both the
server and the client configuration files.
KeyRegenerationInterval
In protocol version 1, the ephemeral server key is automatically
regenerated after this many seconds (if it has been used). The pur‐
pose of regeneration is to prevent decrypting captured sessions by
later breaking into the machine and stealing the keys. The key is
never stored anywhere. If the value is 0, the key is never regener‐
ated. The default is 3600 (seconds).
ListenAddress
Specifies what local address sshd should listen on. The following
forms can be used:
ListenAddress host|IPv4_addr|IPv6_addr
ListenAddress host|IPv4_addr:port
ListenAddress [host|IPv6_addr]:port
If port is not specified, sshd listens on the address and all prior
Port options specified. The default is to listen on all local
addresses. Multiple ListenAddress options are permitted. Addition‐
ally, any Port options must precede this option for non-port quali‐
fied addresses.
The default is to listen on all local addresses. Multiple options
of this type are permitted. Additionally, the Ports options must
precede this option.
LoginGraceTime
The server disconnects after this time (in seconds) if the user has
not successfully logged in. If the value is 0, there is no time
limit. The default is 120 (seconds).
LogLevel
Gives the verbosity level that is used when logging messages from
sshd. The possible values are: QUIET, FATAL, ERROR, INFO, VERBOSE,
DEBUG, DEBUG1, DEBUG2, and DEBUG3. The default is INFO. DEBUG2 and
DEBUG3 each specify higher levels of debugging output. Logging with
level DEBUG violates the privacy of users and is not recommended.
LookupClientHostnames
Specifies whether or not to lookup the names of client's addresses.
Defaults to yes.
MACs
Specifies the available MAC (message authentication code) algo‐
rithms. The MAC algorithm is used in protocol version 2 for data
integrity protection. Multiple algorithms must be comma-separated.
The default is hmac-md5,hmac-sha1,hmac-sha1-96,hmac-md5-96.
MaxStartups
Specifies the maximum number of concurrent unauthenticated connec‐
tions to the sshd daemon. Additional connections are dropped until
authentication succeeds or the LoginGraceTime expires for a connec‐
tion. The default is 10.
Alternatively, random early drop can be enabled by specifying the
three colon-separated values start:rate:full (for example,
10:30:60). Referring to this example, sshd refuse connection
attempts with a probability of rate/100 (30% in our example) if
there are currently 10 (from the start field) unauthenticated con‐
nections. The probability increases linearly and all connection
attempts are refused if the number of unauthenticated connections
reaches full (60 in our example).
PasswordAuthentication
Specifies whether password authentication is allowed. The default
is yes. This option applies to both protocol versions 1 and 2.
PermitEmptyPasswords
When password or keyboard-interactive authentication is allowed, it
specifies whether the server allows login to accounts with empty
password strings.
If not set then the /etc/default/login PASSREQ value is used
instead.
PASSREQ=no is equivalent to PermitEmptyPasswords yes. PASSREQ=yes
is equivalent to PermitEmptyPasswords no. If neither PermitEmpty‐
Passwords or PASSREQ are set the default is no.
PermitRootLogin
Specifies whether the root can log in using ssh(1). The argument
must be yes, without-password, forced-commands-only, or no. with‐
out-password means that root cannot be authenticated using the
"password" or "keyboard-interactive" methods (see description of
KbdInteractiveAuthentication). forced-commands-only means that
authentication is allowed only for publickey (for SSHv2, or RSA,
for SSHv1) and only if the matching authorized_keys entry for root
has a command=<cmd> option.
In Solaris, the default /etc/ssh/sshd_config file is shipped with
PermitRootLogin set to no. If unset by the administrator, then CON‐
SOLE parameter from /etc/default/login supplies the default value
as follows: if the CONSOLE parameter is not commented out (it can
even be empty, that is, "CONSOLE="), then without-password is used
as default value. If CONSOLE is commented out, then the default for
PermitRootLogin is yes.
The without-password and forced-commands-only settings are useful
for, for example, performing remote administration and backups
using trusted public keys for authentication of the remote client,
without allowing access to the root account using passwords.
PermitUserEnvironment
Specifies whether a user's ~/.ssh/environment on the server side
and environment options in the AuthorizedKeysFile file are pro‐
cessed by sshd. The default is no. Enabling environment processing
can enable users to bypass access restrictions in some configura‐
tions using mechanisms such as LD_PRELOAD.
Environment setting from a relevant entry in AuthorizedKeysFile
file is processed only if the user was authenticated using the pub‐
lic key authentication method. Of the two files used, values of
variables set in ~/.ssh/environment are of higher priority.
PidFile
Allows you to specify an alternative to /var/run/sshd.pid, the
default file for storing the PID of the sshd listening for connec‐
tions. See sshd(1M).
Port
Specifies the port number that sshd listens on. The default is 22.
Multiple options of this type are permitted. See also ListenAd‐
dress.
PrintLastLog
Specifies whether sshd should display the date and time when the
user last logged in. The default is yes.
PrintMotd
Specifies whether sshd should display the contents of /etc/motd
when a user logs in interactively. (On some systems it is also dis‐
played by the shell or a shell startup file, such as /etc/profile.)
The default is yes.
Protocol
Specifies the protocol versions sshd should support in order of
preference. The possible values are 1 and 2. Multiple versions must
be comma-separated. The default is 2,1. This means that ssh tries
version 2 and falls back to version 1 if version 2 is not avail‐
able.
PubkeyAuthentication
Specifies whether public key authentication is allowed. The default
is yes. This option applies to protocol version 2 only.
RhostsAuthentication
Specifies whether authentication using rhosts or /etc/hosts.equiv
files is sufficient. Normally, this method should not be permitted
because it is insecure. RhostsRSAAuthentication should be used
instead, because it performs RSA-based host authentication in addi‐
tion to normal rhosts or /etc/hosts.equiv authentication. The
default is no. This parameter applies only to protocol version 1.
RhostsRSAAuthentication
Specifies whether rhosts or /etc/hosts.equiv authentication
together with successful RSA host authentication is allowed. The
default is no. This parameter applies only to protocol version 1.
RSAAuthentication
Specifies whether pure RSA authentication is allowed. The default
is yes. This option applies to protocol version 1 only.
ServerKeyBits
Defines the number of bits in the ephemeral protocol version 1
server key. The minimum value is 512, and the default is 768.
StrictModes
Specifies whether sshd should check file modes and ownership of the
user's files and home directory before accepting login. This is
normally desirable because novices sometimes accidentally leave
their directory or files world-writable. The default is yes.
Subsystem
Configures an external subsystem (for example, a file transfer dae‐
mon). Arguments should be a subsystem name and a command to exe‐
cute upon subsystem request. The command sftp-server(1M) implements
the sftp file transfer subsystem.
Alternately, the name internal-sftp implements an in-process sftp
server. This can simplify configurations using ChrootDirectory to
force a different filesystem root on clients.
By default, no subsystems are defined. This option applies to pro‐
tocol version 2 only.
SyslogFacility
Gives the facility code that is used when logging messages from
sshd. The possible values are: DAEMON, USER, AUTH, LOCAL0, LOCAL1,
LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, and LOCAL7. The default is
AUTH.
UseOpenSSLEngine
Specifies whether sshd should use the OpenSSL PKCS#11 engine for
offloading cryptographic operations to the Cryptographic Framework.
Cryptographic operations are accelerated according to the available
installed plug-ins. When no suitable plug-ins are present this
option does not have an effect. The default is yes.
VerifyReverseMapping
Specifies whether sshd should try to verify the remote host name
and check that the resolved host name for the remote IP address
maps back to the very same IP address. (A yes setting means "ver‐
ify".) Setting this parameter to no can be useful where DNS servers
might be down and thus cause sshd to spend much time trying to
resolve the client's IP address to a name. This feature is useful
for Internet-facing servers. The default is no.
X11DisplayOffset
Specifies the first display number available for sshd's X11 for‐
warding. This prevents sshd from interfering with real X11
servers. The default is 10.
X11Forwarding
Specifies whether X11 forwarding is permitted. The default is yes.
Disabling X11 forwarding does not improve security in any way, as
users can always install their own forwarders.
When X11 forwarding is enabled, there can be additional exposure to
the server and to client displays if the sshd proxy display is con‐
figured to listen on the wildcard address (see X11UseLocalhost).
However, this is not the default. Additionally, the authentication
spoofing and authentication data verification and substitution
occur on the client side. The security risk of using X11 forwarding
is that the client's X11 display server can be exposed to attack
when the ssh client requests forwarding (see the warnings for For‐
wardX11 in ssh_config(4)). A system administrator who wants to pro‐
tect clients that expose themselves to attack by unwittingly
requesting X11 forwarding, should specify a no setting.
Disabling X11 forwarding does not prevent users from forwarding X11
traffic, as users can always install their own forwarders.
X11UseLocalhost
Specifies whether sshd should bind the X11 forwarding server to the
loopback address or to the wildcard address. By default, sshd binds
the forwarding server to the loopback address and sets the hostname
part of the DISPLAY environment variable to localhost. This pre‐
vents remote hosts from connecting to the proxy display. However,
some older X11 clients might not function with this configuration.
X11UseLocalhost can be set to no to specify that the forwarding
server should be bound to the wildcard address. The argument must
be yes or no. The default is yes.
XAuthLocation
Specifies the location of the xauth(1) program. The default is
/usr/X11/bin/xauth and sshd attempts to open it when X11 forwarding
is enabled.
Time Formats
sshd command-line arguments and configuration file options that specify
time can be expressed using a sequence of the form: time[qualifier,]
where time is a positive integer value and qualifier is one of the fol‐
lowing:
<none>
seconds
s | S
seconds
m | M
minutes
h | H
hours
d | D
days
w |
weeks
Each element of the sequence is added together to calculate the total
time value. For example:
600
600 seconds (10 minutes)
10m
10 minutes
1h30m
1 hour, 30 minutes (90 minutes)
FILES
/etc/ssh/sshd_config
Contains configuration data for sshd. This file
should be writable by root only, but it is rec‐
ommended (though not necessary) that it be
world-readable.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
┌────────────────────┬─────────────────┐
│ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
├────────────────────┼─────────────────┤
│Interface Stability │ Uncommitted │
└────────────────────┴─────────────────┘
SEE ALSOlogin(1), sshd(1M), chroot(2), ssh_config(4), attributes(5), ker‐
beros(5)AUTHORS
OpenSSH is a derivative of the original and free ssh 1.2.12 release by
Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
Theo de Raadt, and Dug Song removed many bugs, re-added recent fea‐
tures, and created OpenSSH. Markus Friedl contributed the support for
SSH protocol versions 1.5 and 2.0. Niels Provos and Markus Friedl con‐
tributed support for privilege separation.
Jan 17, 2013 SSHD_CONFIG(4)