version 1.1, 1999/09/26 20:53:38 |
version 1.2, 1999/09/26 22:30:06 |
|
|
.\" |
.\" |
.\" $Id$ |
.\" $Id$ |
.\" |
.\" |
.TH SSHD 8 "November 8, 1995" "SSH" "SSH" |
.Dd September 25, 1999 |
|
.Dt SSHD 8 |
.SH NAME |
.Os |
sshd \- secure shell daemon |
.Sh NAME |
|
.Nm sshd |
.SH SYNOPSIS |
.Nd secure shell daemon |
.na |
.Sh SYNOPSIS |
.B sshd |
.Nm sshd |
[\c |
.Op Fl diq |
.BI \-b \ bits\fR\c |
.Op Fl b Ar bits |
] |
.Op Fl f Ar config_file |
[\c |
.Op Fl g Ar login_grace_time |
.B \-d \c |
.Op Fl h Ar host_key_file |
] |
.Op Fl k Ar key_gen_time |
[\c |
.Op Fl p Ar port |
.BI \-f \ config_file\fR\c |
.Sh DESCRIPTION |
] |
.Nm |
[\c |
|
.BI \-g \ login_grace_time\fR\c |
|
] |
|
[\c |
|
.BI \-h \ host_key_file\fR\c |
|
] |
|
[\c |
|
.B \-i \c |
|
] |
|
[\c |
|
.BI \-k \ key_gen_time\fR\c |
|
] |
|
[\c |
|
.BI \-p \ port\fR\c |
|
] |
|
[\c |
|
.B \-q \c |
|
] |
|
.ad |
|
|
|
|
|
.SH DESCRIPTION |
|
.LP |
|
.B Sshd |
|
(Secure Shell Daemon) is the daemon program for |
(Secure Shell Daemon) is the daemon program for |
.BR ssh ". |
.Xr ssh 1 . |
Together these programs replace rlogin and rsh programs, and |
Together these programs replace rlogin and rsh programs, and |
provide secure encrypted communications between two untrusted hosts |
provide secure encrypted communications between two untrusted hosts |
over an insecure network. The programs are intended to be as easy to |
over an insecure network. The programs are intended to be as easy to |
install and use as possible. |
install and use as possible. |
.LP |
.Pp |
.B Sshd |
.Nm |
is the daemon that listens for connections from clients. It is |
is the daemon that listens for connections from clients. It is |
normally started at boot from |
normally started at boot from |
.I /etc/rc.local |
.Pa /etc/rc . |
or equivalent. It forks a new |
It forks a new |
daemon for each incoming connection. The forked daemons handle |
daemon for each incoming connection. The forked daemons handle |
key exchange, encryption, authentication, command execution, |
key exchange, encryption, authentication, command execution, |
and data exchange. |
and data exchange. |
.LP |
.Pp |
Sshd works as follows. Each host has a host-specific RSA key |
.Nm |
|
works as follows. Each host has a host-specific RSA key |
(normally 1024 bits) used to identify the host. Additionally, when |
(normally 1024 bits) used to identify the host. Additionally, when |
the daemon starts, it generates a server RSA key (normally 768 bits). |
the daemon starts, it generates a server RSA key (normally 768 bits). |
This key is normally regenerated every hour if it has been used, and |
This key is normally regenerated every hour if it has been used, and |
is never stored on disk. |
is never stored on disk. |
.LP |
.Pp |
Whenever a client connects the daemon, the daemon sends its host |
Whenever a client connects the daemon, the daemon sends its host |
and server public keys to the client. The client compares the |
and server public keys to the client. The client compares the |
host key against its own database to verify that it has not changed. |
host key against its own database to verify that it has not changed. |
|
|
random number as a session key which is used to encrypt all further |
random number as a session key which is used to encrypt all further |
communications in the session. The rest of the session is encrypted |
communications in the session. The rest of the session is encrypted |
using a conventional cipher. Currently, |
using a conventional cipher. Currently, |
.BR \s-1Blowfish\s0 ", |
Blowfish, IDEA, DES, and 3DES. |
.BR \s-1IDEA\s0 ", |
3DES |
.BR \s-1DES\s0 ", |
|
.BR \s-1\&3DES\s0 ", |
|
.B \s-13DES\s0 |
|
is used by default. The client selects the encryption algorithm to use |
is used by default. The client selects the encryption algorithm to use |
from those offered by the server. |
from those offered by the server. |
.LP |
.Pp |
Next, the server and the client enter an authentication dialog. The |
Next, the server and the client enter an authentication dialog. The |
client tries to authenticate itself using \|\s+2.\s0rhosts |
client tries to authenticate itself using |
authentication, \|\s+2.\s0rhosts authentication combined with RSA host |
.Pa .rhosts |
|
authentication, |
|
.Pa .rhosts |
|
authentication combined with RSA host |
authentication, RSA challenge-response authentication, or password |
authentication, RSA challenge-response authentication, or password |
based authentication. |
based authentication. |
.LP |
.Pp |
Rhosts authentication is normally disabled |
Rhosts authentication is normally disabled |
because it is fundamentally insecure, but can be enabled in the server |
because it is fundamentally insecure, but can be enabled in the server |
configuration file if desired. System security is not improved unless |
configuration file if desired. System security is not improved unless |
.BR rshd "(8), |
.Xr rshd 8 , |
.BR rlogind "(8), |
.Xr rlogind 8 , |
.BR rexecd "(8), and |
.Xr rexecd 8 , |
.B rexd "(8) |
and |
|
.Xr rexd 8 |
are disabled (thus completely disabling |
are disabled (thus completely disabling |
.BR rlogin (1) |
.Xr rlogin 1 |
and |
and |
.BR rsh (1) |
.Xr rsh 1 |
into that machine). |
into that machine). |
.LP |
.Pp |
If the client successfully authenticates itself, a dialog for |
If the client successfully authenticates itself, a dialog for |
preparing the session is entered. At this time the client may request |
preparing the session is entered. At this time the client may request |
things like allocating a pseudo-tty, forwarding X11 connections, |
things like allocating a pseudo-tty, forwarding X11 connections, |
forwarding TCP/IP connections, or forwarding the authentication agent |
forwarding TCP/IP connections, or forwarding the authentication agent |
connection over the secure channel. |
connection over the secure channel. |
.LP |
.Pp |
Finally, the client either requests a shell or execution of a command. |
Finally, the client either requests a shell or execution of a command. |
The sides then enter session mode. In this mode, either side may send |
The sides then enter session mode. In this mode, either side may send |
data at any time, and such data is forwarded to/from the shell or |
data at any time, and such data is forwarded to/from the shell or |
command on the server side, and the user terminal in the client side. |
command on the server side, and the user terminal in the client side. |
.LP |
.Pp |
When the user program terminates and all forwarded X11 and other |
When the user program terminates and all forwarded X11 and other |
connections have been closed, the server sends command exit status to |
connections have been closed, the server sends command exit status to |
the client, and both sides exit. |
the client, and both sides exit. |
.LP |
.Pp |
.B Sshd |
.Nm |
can be configured using command-line options or a configuration |
can be configured using command-line options or a configuration |
file. Command-line options override values specified in the |
file. Command-line options override values specified in the |
configuration file. |
configuration file. |
|
.Sh OPTIONS |
|
.Bl -tag -width Ds |
.SH OPTIONS |
.It Fl b Ar bits |
.TP |
|
.BI \-b \ bits |
|
Specifies the number of bits in the server key (default 768). |
Specifies the number of bits in the server key (default 768). |
.TP |
.Pp |
.B \-d |
.It Fl d |
Debug mode. The server sends verbose debug output to the system |
Debug mode. The server sends verbose debug output to the system |
log, and does not put itself in the background. The server also will |
log, and does not put itself in the background. The server also will |
not fork and will only process one connection. This option is only |
not fork and will only process one connection. This option is only |
intended for debugging for the server. |
intended for debugging for the server. |
.TP |
.It Fl f Ar configuration_file |
.BI \-f \ configuration_file |
|
Specifies the name of the configuration file. The default is |
Specifies the name of the configuration file. The default is |
.IR /etc/sshd_config ". |
.Pa /etc/sshd_config . |
.TP |
.It Fl g Ar login_grace_time |
.BI \-g \ login_grace_time |
|
Gives the grace time for clients to authenticate themselves (default |
Gives the grace time for clients to authenticate themselves (default |
300 seconds). If the client fails to authenticate the user within |
300 seconds). If the client fails to authenticate the user within |
this many seconds, the server disconnects and exits. A value of zero |
this many seconds, the server disconnects and exits. A value of zero |
indicates no limit. |
indicates no limit. |
.TP |
.It Fl h Ar host_key_file |
.BI \-h \ host_key_file |
|
Specifies the file from which the host key is read (default |
Specifies the file from which the host key is read (default |
.IR /etc/ssh_host_key). |
.Pa /etc/ssh_host_key ) . |
This option must be given if sshd is not run as root (as the normal |
This option must be given if sshd is not run as root (as the normal |
host file is normally not readable by anyone but root). |
host file is normally not readable by anyone but root). |
.TP |
.It Fl i |
.B \-i |
|
Specifies that sshd is being run from inetd. Sshd is normally not run |
Specifies that sshd is being run from inetd. Sshd is normally not run |
from inetd because it needs to generate the server key before it can |
from inetd because it needs to generate the server key before it can |
respond to the client, and this may take tens of seconds. Clients |
respond to the client, and this may take tens of seconds. Clients |
would have to wait too long if the key was regenerated every time. |
would have to wait too long if the key was regenerated every time. |
However, with small key sizes (e.g. 512) using sshd from inetd may |
However, with small key sizes (e.g. 512) using sshd from inetd may |
be feasible. |
be feasible. |
.TP |
.It Fl k Ar key_gen_time |
.BI \-k \ key_gen_time |
|
Specifies how often the server key is regenerated (default 3600 |
Specifies how often the server key is regenerated (default 3600 |
seconds, or one hour). The motivation for regenerating the key fairly |
seconds, or one hour). The motivation for regenerating the key fairly |
often is that the key is not stored anywhere, and after about an hour, |
often is that the key is not stored anywhere, and after about an hour, |
it becomes impossible to recover the key for decrypting intercepted |
it becomes impossible to recover the key for decrypting intercepted |
communications even if the machine is cracked into or physically |
communications even if the machine is cracked into or physically |
seized. A value of zero indicates that the key will never be regenerated. |
seized. A value of zero indicates that the key will never be regenerated. |
.TP |
.It Fl p Ar port |
.BI \-p \ port |
|
Specifies the port on which the server listens for connections |
Specifies the port on which the server listens for connections |
(default 22). |
(default 22). |
.TP |
.It Fl q |
.B \-q |
|
Quiet mode. Nothing is sent to the system log. Normally the beginning, |
Quiet mode. Nothing is sent to the system log. Normally the beginning, |
authentication, and termination of each connection is logged. |
authentication, and termination of each connection is logged. |
|
.El |
.SH CONFIGURATION FILE |
.Sh CONFIGURATION FILE |
|
.Nm |
.B Sshd |
|
reads configuration data from |
reads configuration data from |
.I /etc/sshd_config |
.Pa /etc/sshd_config |
(or the file specified with -f on the command line). The file |
(or the file specified with |
contains keyword-value pairs, one per line. Lines starting with '#' |
.Fl f |
|
on the command line). The file |
|
contains keyword-value pairs, one per line. Lines starting with |
|
.Ql # |
and empty lines are interpreted as comments. |
and empty lines are interpreted as comments. |
|
.Pp |
The following keywords are possible. |
The following keywords are possible. |
.TP |
.Bl -tag -width Ds |
.B AFSTokenPassing |
.It Cm AFSTokenPassing |
Specifies whether to accept AFS tokens passed from the client. Default |
Specifies whether to accept AFS tokens passed from the client. Default |
is "yes". |
is |
.TP |
.Dq yes . |
.B AllowHosts |
.It Cm AllowHosts |
This keyword can be followed by any number of host name patterns, |
This keyword can be followed by any number of host name patterns, |
separated by spaces. If specified, login is allowed only from hosts |
separated by spaces. If specified, login is allowed only from hosts |
whose name matches one of the patterns. '*' and '?' can be used as |
whose name matches one of the patterns. |
|
.Ql \&* |
|
and |
|
.Ql ? |
|
can be used as |
wildcards in the patterns. Normal name servers are used to map the |
wildcards in the patterns. Normal name servers are used to map the |
client's host into a canonical host name. If the name cannot be |
client's host into a canonical host name. If the name cannot be |
mapped, its IP-address is used as the host name. By default all hosts |
mapped, its IP-address is used as the host name. By default all hosts |
are allowed to connect. |
are allowed to connect. |
|
.Pp |
Note that |
Note that |
.B sshd |
.Nm |
can also be configured to use tcp_wrappers using the --with-libwrap |
can also be configured to use tcp_wrappers using the |
|
.Fl -with-libwrap |
compile-time configuration option. |
compile-time configuration option. |
.TP |
.It Cm DenyHosts |
.B DenyHosts |
|
This keyword can be followed by any number of host name patterns, |
This keyword can be followed by any number of host name patterns, |
separated by spaces. If specified, login is disallowed from the hosts |
separated by spaces. If specified, login is disallowed from the hosts |
whose name matches any of the patterns. |
whose name matches any of the patterns. |
.TP |
.It Cm FascistLogging |
.B FascistLogging |
|
Specifies whether to use verbose logging. Verbose logging violates |
Specifies whether to use verbose logging. Verbose logging violates |
the privacy of users and is not recommended. The argument must be |
the privacy of users and is not recommended. The argument must be |
"yes" or "no" (without the quotes). The default is "no". |
.Dq yes |
.TP |
or |
.B HostKey |
.Dq no . |
|
The default is |
|
.Dq no . |
|
.It Cm HostKey |
Specifies the file containing the private host key (default |
Specifies the file containing the private host key (default |
.IR /etc/ssh_host_key "). |
.Pa /etc/ssh_host_key ) . |
.TP |
.It Cm IgnoreRhosts |
.B IgnoreRhosts |
|
Specifies that rhosts and shosts files will not be used in |
Specifies that rhosts and shosts files will not be used in |
authentication. |
authentication. |
.I /etc/hosts.equiv |
.Pa /etc/hosts.equiv |
and |
and |
.I /etc/shosts.equiv |
.Pa /etc/shosts.equiv |
are still used. The default is "no". |
are still used. The default is |
.TP |
.Dq no . |
.B KeepAlive |
.It Cm KeepAlive |
Specifies whether the system should send keepalive messages to the |
Specifies whether the system should send keepalive messages to the |
other side. If they are sent, death of the connection or crash of one |
other side. If they are sent, death of the connection or crash of one |
of the machines will be properly noticed. However, this means that |
of the machines will be properly noticed. However, this means that |
connections will die if the route is down temporarily, and some people |
connections will die if the route is down temporarily, and some people |
find it annoying. On the other hand, if keepalives are not send, |
find it annoying. On the other hand, if keepalives are not send, |
sessions may hang indefinitely on the server, leaving "ghost" users |
sessions may hang indefinitely on the server, leaving |
and consuming server resources. |
.Dq ghost |
|
users and consuming server resources. |
The default is "yes" (to send keepalives), and the server will notice |
.Pp |
|
The default is |
|
.Dq yes |
|
(to send keepalives), and the server will notice |
if the network goes down or the client host reboots. This avoids |
if the network goes down or the client host reboots. This avoids |
infinitely hanging sessions. |
infinitely hanging sessions. |
|
.Pp |
To disable keepalives, the value should be set to "no" in both the |
To disable keepalives, the value should be set to |
server and the client configuration files. |
.Dq no |
.TP |
in both the server and the client configuration files. |
.B KerberosAuthentication |
.It Cm KerberosAuthentication |
Specifies whether Kerberos authentication is allowed. This can |
Specifies whether Kerberos authentication is allowed. This can |
be in the form of a Kerberos ticket, or if PasswordAuthentication |
be in the form of a Kerberos ticket, or if PasswordAuthentication |
is yes, the password provided by the user will be validated through |
is yes, the password provided by the user will be validated through |
the Kerberos KDC / AFS kaserver / DCE Security Server. Default is yes. |
the Kerberos KDC / AFS kaserver / DCE Security Server. Default is yes. |
.TP |
.It Cm KerberosOrLocalPasswd |
.B KerberosOrLocalPasswd |
|
If set then if password authentication through Kerberos fails then |
If set then if password authentication through Kerberos fails then |
the password will be validated via any additional local mechanism |
the password will be validated via any additional local mechanism |
such as /etc/passwd or SecurID. Default is no. |
such as |
.TP |
.Pa /etc/passwd |
.B KerberosTgtPassing |
or SecurID. Default is |
|
.Dq no . |
|
.It Cm KerberosTgtPassing |
Specifies whether a Kerberos TGT may be forwarded to the server. |
Specifies whether a Kerberos TGT may be forwarded to the server. |
Default is no, TGT forwarding does only work with the AFS kaserver. |
Default is no, TGT forwarding does only work with the AFS kaserver. |
.TP |
.It Cm KerberosTicketCleanup |
.B KerberosTicketCleanup |
|
Specifies whether to automatically destroy the user's |
Specifies whether to automatically destroy the user's |
ticket cache file on logout. Default is yes. |
ticket cache file on logout. Default is yes. |
.TP |
.It Cm KeyRegenerationInterval |
.B KeyRegenerationInterval |
|
The server key is automatically regenerated after this many seconds |
The server key is automatically regenerated after this many seconds |
(if it has been used). The purpose of regeneration is to prevent |
(if it has been used). The purpose of regeneration is to prevent |
decrypting captured sessions by later breaking into the machine and |
decrypting captured sessions by later breaking into the machine and |
stealing the keys. The key is never stored anywhere. If the value is |
stealing the keys. The key is never stored anywhere. If the value is |
0, the key is never regenerated. The default is 3600 |
0, the key is never regenerated. The default is 3600 |
(seconds). |
(seconds). |
.TP |
.It Cm LoginGraceTime |
.B LoginGraceTime |
|
The server disconnects after this time if the user has not |
The server disconnects after this time if the user has not |
successfully logged in. If the value is 0, there is no time limit. |
successfully logged in. If the value is 0, there is no time limit. |
The default is 600 (seconds). |
The default is 600 (seconds). |
.TP |
.It Cm PasswordAuthentication |
.B PasswordAuthentication |
|
Specifies whether password authentication is allowed. |
Specifies whether password authentication is allowed. |
The default is "yes". |
The default is |
.TP |
.Dq yes . |
.B PermitEmptyPasswords |
.It Cm PermitEmptyPasswords |
When password authentication is allowed, it specifies whether the |
When password authentication is allowed, it specifies whether the |
server allows login to accounts with empty password strings. The default |
server allows login to accounts with empty password strings. The default |
is "yes". |
is |
.TP |
.Dq yes . |
.B PermitRootLogin |
.It Cm PermitRootLogin |
Specifies whether the root can log in using |
Specifies whether the root can log in using |
.BR ssh . |
.Xr ssh 1 . |
The default is "yes". |
The default is |
|
.Dq yes . |
Root login with RSA authentication when the "command" option has been |
.Pp |
|
Root login with RSA authentication when the |
|
.Ar command |
|
option has been |
specified will be allowed regardless of the value of this setting |
specified will be allowed regardless of the value of this setting |
(which may be useful for taking remote backups even if root login is |
(which may be useful for taking remote backups even if root login is |
normally not allowed). |
normally not allowed). |
.TP |
.It Cm Port |
.B Port |
|
Specifies the port number that |
Specifies the port number that |
.B sshd |
.Nm |
listens on. The default is 22. |
listens on. The default is 22. |
.TP |
.It Cm PrintMotd |
.B PrintMotd |
|
Specifies whether |
Specifies whether |
.B sshd |
.Nm |
should print |
should print |
.I /etc/motd |
.Pa /etc/motd |
when a user logs in interactively. (On some systems it is also |
when a user logs in interactively. (On some systems it is also |
printed by the shell, /etc/profile, or equivalent.) The default is |
printed by the shell, |
"yes". |
.Pa /etc/profile , |
.TP |
or equivalent.) The default is |
.B QuietMode |
.Dq yes . |
|
.It Cm QuietMode |
Specifies whether the system runs in quiet mode. In quiet mode, |
Specifies whether the system runs in quiet mode. In quiet mode, |
nothing is logged in the system log, except fatal errors. The default |
nothing is logged in the system log, except fatal errors. The default |
is "no". |
is |
.TP |
.Dq no . |
.B RandomSeed |
.It Cm RandomSeed |
Specifies the file containing the random seed for the server; this |
Specifies the file containing the random seed for the server; this |
file is created automatically and updated regularly. The default is |
file is created automatically and updated regularly. The default is |
.IR /etc/ssh_random_seed ". |
.Pa /etc/ssh_random_seed . |
.TP |
.It Cm RhostsAuthentication |
.B RhostsAuthentication |
|
Specifies whether authentication using rhosts or /etc/hosts.equiv |
Specifies whether authentication using rhosts or /etc/hosts.equiv |
files is sufficient. Normally, this method should not be permitted |
files is sufficient. Normally, this method should not be permitted |
because it is insecure. RhostsRSAAuthentication should be used |
because it is insecure. RhostsRSAAuthentication should be used |
instead, because it performs RSA-based host authentication in addition |
instead, because it performs RSA-based host authentication in addition |
to normal rhosts or /etc/hosts.equiv authentication. |
to normal rhosts or /etc/hosts.equiv authentication. |
The default is "no". |
The default is |
.TP |
.Dq no . |
.B RhostsRSAAuthentication |
.It Cm RhostsRSAAuthentication |
Specifies whether rhosts or /etc/hosts.equiv authentication together |
Specifies whether rhosts or /etc/hosts.equiv authentication together |
with successful RSA host authentication is allowed. The default is "yes". |
with successful RSA host authentication is allowed. The default is |
.TP |
.Dq yes . |
.B RSAAuthentication |
.It Cm RSAAuthentication |
Specifies whether pure RSA authentication is allowed. The default is "yes". |
Specifies whether pure RSA authentication is allowed. The default is |
.TP |
.Dq yes . |
.B ServerKeyBits |
.It Cm ServerKeyBits |
Defines the number of bits in the server key. The minimum value is |
Defines the number of bits in the server key. The minimum value is |
512, and the default is 768. |
512, and the default is 768. |
.TP |
.It Cm StrictModes |
.B StrictModes |
Specifies whether SSH should check file modes and ownership of the |
Specifies whether ssh should check file modes and ownership of the |
|
user's home directory and rhosts files before accepting login. This |
user's home directory and rhosts files before accepting login. This |
is normally desirable because novices sometimes accidentally leave their |
is normally desirable because novices sometimes accidentally leave their |
directory or files world-writable. The default is "yes". |
directory or files world-writable. The default is "yes". |
.TP |
.It Cm SyslogFacility |
.B SyslogFacility |
|
Gives the facility code that is used when logging messages from |
Gives the facility code that is used when logging messages from |
.B sshd. |
.Nm sshd . |
The possible values are: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, |
The possible values are: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, |
LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. The default is DAEMON. |
LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. The default is DAEMON. |
.TP |
.It Cm X11Forwarding |
.B X11Forwarding |
Specifies whether X11 forwarding is permitted. The default is |
Specifies whether X11 forwarding is permitted. The default is "yes". |
.Dq yes . |
Note that disabling X11 forwarding does not improve security in any |
Note that disabling X11 forwarding does not improve security in any |
way, as users can always install their own forwarders. |
way, as users can always install their own forwarders. |
|
.El |
.SH LOGIN PROCESS |
.Sh LOGIN PROCESS |
|
|
When a user successfully logs in, |
When a user successfully logs in, |
.B sshd |
.Nm |
does the following: |
does the following: |
.IP 1. |
.Bl -enum -offset indent |
|
.It |
If the login is on a tty, and no command has been specified, |
If the login is on a tty, and no command has been specified, |
prints last login time and |
prints last login time and |
.B /etc/motd |
.Pa /etc/motd |
(unless prevented in the configuration file or by |
(unless prevented in the configuration file or by |
.IR $HOME/\s+2.\s0hushlogin ; |
.Pa $HOME/.hushlogin ; |
see the FILES section). |
see the |
.IP 2. |
.Sx FILES |
|
section). |
|
.It |
If the login is on a tty, records login time. |
If the login is on a tty, records login time. |
.IP 3. |
.It |
Checks /etc/nologin; if it exists, prints contents and quits |
Checks |
|
.Pa /etc/nologin ; |
|
if it exists, prints contents and quits |
(unless root). |
(unless root). |
.IP 4. |
.It |
Changes to run with normal user privileges. |
Changes to run with normal user privileges. |
.IP 5. |
.It |
Sets up basic environment. |
Sets up basic environment. |
.IP 6. |
.It |
Reads /etc/environment if it exists. |
Reads |
.IP 7. |
.Pa /etc/environment |
Reads $HOME/.ssh/environment if it exists. |
if it exists. |
.IP 8. |
.It |
|
Reads |
|
.Pa $HOME/.ssh/environment |
|
if it exists. |
|
.It |
Changes to user's home directory. |
Changes to user's home directory. |
.IP 9. |
.It |
If $HOME/.ssh/rc exists, runs it; else if /etc/sshrc exists, runs |
If |
it; otherwise runs xauth. The "rc" files are given the X11 |
.Pa $HOME/.ssh/rc |
|
exists, runs it; else if |
|
.Pa /etc/sshrc |
|
exists, runs |
|
it; otherwise runs xauth. The |
|
.Dq rc |
|
files are given the X11 |
authentication protocol and cookie in standard input. |
authentication protocol and cookie in standard input. |
.IP 10. |
.It |
Runs user's shell or command. |
Runs user's shell or command. |
.RT |
.El |
|
.Sh AUTHORIZED_KEYS FILE FORMAT |
|
|
.SH AUTHORIZED_KEYS FILE FORMAT |
|
.LP |
|
The |
The |
.I \&$HOME/\s+2.\s0ssh/authorized_keys |
.Pa $HOME/.ssh/authorized_keys |
file lists the RSA keys that are |
file lists the RSA keys that are |
permitted for RSA authentication. Each line of the file contains one |
permitted for RSA authentication. Each line of the file contains one |
key (empty lines and lines starting with a '#' are ignored as |
key (empty lines and lines starting with a |
|
.Ql # |
|
are ignored as |
comments). Each line consists of the following fields, separated by |
comments). Each line consists of the following fields, separated by |
spaces: options, bits, exponent, modulus, comment. The options field |
spaces: options, bits, exponent, modulus, comment. The options field |
is optional; its presence is determined by whether the line starts |
is optional; its presence is determined by whether the line starts |
|
|
The bits, exponent, modulus and comment fields give the RSA key; the |
The bits, exponent, modulus and comment fields give the RSA key; the |
comment field is not used for anything (but may be convenient for the |
comment field is not used for anything (but may be convenient for the |
user to identify the key). |
user to identify the key). |
.LP |
.Pp |
Note that lines in this file are usually several hundred bytes long |
Note that lines in this file are usually several hundred bytes long |
(because of the size of the RSA key modulus). You don't want to type |
(because of the size of the RSA key modulus). You don't want to type |
them in; instead, copy the |
them in; instead, copy the |
.I identity.pub |
.Pa identity.pub |
file and edit it. |
file and edit it. |
.LP |
.Pp |
The options (if present) consists of comma-separated option |
The options (if present) consists of comma-separated option |
specifications. No spaces are permitted, except within double quotes. |
specifications. No spaces are permitted, except within double quotes. |
The following option specifications are supported: |
The following option specifications are supported: |
.IP |
.Bl -tag -width Ds |
.ti -.5i |
.It Cm from="pattern-list" |
\fBfrom="pattern-list" \fR |
|
.br |
|
Specifies that in addition to RSA authentication, the canonical name |
Specifies that in addition to RSA authentication, the canonical name |
of the remote host must be present in the comma-separated list of |
of the remote host must be present in the comma-separated list of |
patterns ('*' and '?' serve as wildcards). The list may also contain |
patterns ('*' and '?' serve as wildcards). The list may also contain |
|
|
additional option makes using a stolen key more difficult (name |
additional option makes using a stolen key more difficult (name |
servers and/or routers would have to be compromised in addition to |
servers and/or routers would have to be compromised in addition to |
just the key). |
just the key). |
.IP |
.It Cm command="command" |
.ti -.5i |
|
\fBcommand="command"\fR |
|
.br |
|
Specifies that the command is executed whenever this key is used for |
Specifies that the command is executed whenever this key is used for |
authentication. The command supplied by the user (if any) is ignored. |
authentication. The command supplied by the user (if any) is ignored. |
The command is run on a pty if the connection requests a pty; |
The command is run on a pty if the connection requests a pty; |
|
|
example might be a key that permits remote backups but nothing |
example might be a key that permits remote backups but nothing |
else. Notice that the client may specify TCP/IP and/or X11 |
else. Notice that the client may specify TCP/IP and/or X11 |
forwardings unless they are explicitly prohibited. |
forwardings unless they are explicitly prohibited. |
.IP |
.It Cm environment="NAME=value" |
.ti -.5i |
|
\fBenvironment="NAME=value"\fR |
|
.br |
|
Specifies that the string is to be added to the environment when |
Specifies that the string is to be added to the environment when |
logging in using this key. Environment variables set this way |
logging in using this key. Environment variables set this way |
override other default environment values. Multiple options of this |
override other default environment values. Multiple options of this |
type are permitted. |
type are permitted. |
.TP |
.It Cm no-port-forwarding |
.B no-port-forwarding |
|
Forbids TCP/IP forwarding when this key is used for authentication. |
Forbids TCP/IP forwarding when this key is used for authentication. |
Any port forward requests by the client will return an error. This |
Any port forward requests by the client will return an error. This |
might be used e.g. in connection with the |
might be used, e.g., in connection with the |
.B command |
.Cm command |
option. |
option. |
.TP |
.It Cm no-X11-forwarding |
.B no-X11-forwarding |
|
Forbids X11 forwarding when this key is used for authentication. |
Forbids X11 forwarding when this key is used for authentication. |
Any X11 forward requests by the client will return an error. |
Any X11 forward requests by the client will return an error. |
.TP |
.It Cm no-agent-forwarding |
.B no-agent-forwarding |
|
Forbids authentication agent forwarding when this key is used for |
Forbids authentication agent forwarding when this key is used for |
authentication. |
authentication. |
.TP |
.It Cm no-pty |
.B no-pty |
|
Prevents tty allocation (a request to allocate a pty will fail). |
Prevents tty allocation (a request to allocate a pty will fail). |
|
.El |
.SS Examples |
.Ss Examples |
.LP |
|
1024 33 12121.\|.\|.\|312314325 ylo@foo.bar |
1024 33 12121.\|.\|.\|312314325 ylo@foo.bar |
.LP |
.Pp |
from="*.niksula.hut.fi,!pc.niksula.hut.fi" 1024 35 23.\|.\|.\|2334 ylo@niksula |
from="*.niksula.hut.fi,!pc.niksula.hut.fi" 1024 35 23.\|.\|.\|2334 ylo@niksula |
.LP |
.Pp |
command="dump /home",no-pty,no-port-forwarding 1024 33 23.\|.\|.\|2323 backup.hut.fi |
command="dump /home",no-pty,no-port-forwarding 1024 33 23.\|.\|.\|2323 backup.hut.fi |
|
.Sh SSH_KNOWN_HOSTS FILE FORMAT |
|
|
|
|
.SH SSH_KNOWN_HOSTS FILE FORMAT |
|
.LP |
|
The |
The |
.I /etc/ssh_known_hosts |
.Pa /etc/ssh_known_hosts |
and |
and |
.I \&$HOME/\s+2.\s0ssh/known_hosts |
.Pa $HOME/.ssh/known_hosts |
files contain host public keys for all known hosts. The global file should |
files contain host public keys for all known hosts. The global file should |
be prepared by the admistrator (optional), and the per-user file is |
be prepared by the admistrator (optional), and the per-user file is |
maintained automatically: whenever the user connects an unknown host |
maintained automatically: whenever the user connects an unknown host |
its key is added to the per-user file. The recommended way to create |
its key is added to the per-user file. The recommended way to create |
.I /etc/ssh_known_hosts |
.Pa /etc/ssh_known_hosts |
is to use the |
is to use the |
.B make-ssh-known-hosts |
.Xr make-ssh-known-hosts 1 |
command. |
command. |
.LP |
.Pp |
Each line in these files contains the following fields: hostnames, |
Each line in these files contains the following fields: hostnames, |
bits, exponent, modulus, comment. The fields are separated by spaces. |
bits, exponent, modulus, comment. The fields are separated by spaces. |
.LP |
.Pp |
Hostnames is a comma-separated list of patterns ('*' and '?' act as |
Hostnames is a comma-separated list of patterns ('*' and '?' act as |
wildcards); each pattern in turn is matched against the canonical host |
wildcards); each pattern in turn is matched against the canonical host |
name (when authenticating a client) or against the user-supplied |
name (when authenticating a client) or against the user-supplied |
name (when authenticating a server). A pattern may also be preceded |
name (when authenticating a server). A pattern may also be preceded |
by '!' to indicate negation: if the host name matches a negated |
by |
|
.Ql ! |
|
to indicate negation: if the host name matches a negated |
pattern, it is not accepted (by that line) even if it matched another |
pattern, it is not accepted (by that line) even if it matched another |
pattern on the line. |
pattern on the line. |
.LP |
.Pp |
Bits, exponent, and modulus are taken directly from the host key; they |
Bits, exponent, and modulus are taken directly from the host key; they |
can be obtained e.g. from |
can be obtained, e.g., from |
.IR /etc/ssh_host_key.pub ". |
.Pa /etc/ssh_host_key.pub . |
The optional comment field continues to the end of the line, and is not used. |
The optional comment field continues to the end of the line, and is not used. |
.LP |
.Pp |
Lines starting with '#' and empty lines are ignored as comments. |
Lines starting with |
.LP |
.Ql # |
|
and empty lines are ignored as comments. |
|
.Pp |
When performing host authentication, authentication is accepted if any |
When performing host authentication, authentication is accepted if any |
matching line has the proper key. It is thus permissible (but not |
matching line has the proper key. It is thus permissible (but not |
recommended) to have several lines or different host keys for the same |
recommended) to have several lines or different host keys for the same |
|
|
from different domains are put in the file. It is possible |
from different domains are put in the file. It is possible |
that the files contain conflicting information; authentication is |
that the files contain conflicting information; authentication is |
accepted if valid information can be found from either file. |
accepted if valid information can be found from either file. |
.LP |
.Pp |
Note that the lines in these files are typically hundreds of characters |
Note that the lines in these files are typically hundreds of characters |
long, and you definitely don't want to type in the host keys by hand. |
long, and you definitely don't want to type in the host keys by hand. |
Rather, generate them by a script (see |
Rather, generate them by a script (see |
.BR make-ssh-known-hosts (1)) |
.Xr make-ssh-known-hosts 1 ) |
or by taking |
or by taking |
.I /etc/ssh_host_key.pub |
.Pa /etc/ssh_host_key.pub |
and adding the host names at the front. |
and adding the host names at the front. |
|
.Ss Examples |
.SS Examples |
|
|
|
closenet,closenet.hut.fi,.\|.\|.\|,130.233.208.41 1024 37 159.\|.\|.93 closenet.hut.fi |
closenet,closenet.hut.fi,.\|.\|.\|,130.233.208.41 1024 37 159.\|.\|.93 closenet.hut.fi |
|
.Sh FILES |
.SH FILES |
.Bl -tag -width Ds |
.TP |
.It Pa /etc/sshd_config |
.I /etc/sshd_config |
|
Contains configuration data for |
Contains configuration data for |
.BR sshd . |
.Nm sshd . |
This file should be writable by root only, but it is recommended |
This file should be writable by root only, but it is recommended |
(though not necessary) that it be world-readable. |
(though not necessary) that it be world-readable. |
.TP |
.It Pa /etc/ssh_host_key |
.I /etc/ssh_host_key |
|
Contains the private part of the host key. This file is normally |
Contains the private part of the host key. This file is normally |
created automatically by "make install", but can also be created |
created automatically by "make install", but can also be created |
manually using |
manually using |
.BR ssh-keygen (1). |
.Xr ssh-keygen 1 . |
This file should only be owned by root, readable only by root, and not |
This file should only be owned by root, readable only by root, and not |
accessible to others. |
accessible to others. |
.TP |
.It Pa /etc/ssh_host_key.pub |
.I /etc/ssh_host_key.pub |
|
Contains the public part of the host key. This file is normally |
Contains the public part of the host key. This file is normally |
created automatically by "make install", but can also be created |
created automatically by "make install", but can also be created |
manually. This file should be world-readable but writable only by |
manually. This file should be world-readable but writable only by |
root. Its contents should match the private part. This file is not |
root. Its contents should match the private part. This file is not |
really used for anything; it is only provided for the convenience of |
really used for anything; it is only provided for the convenience of |
the user so its contents can be copied to known hosts files. |
the user so its contents can be copied to known hosts files. |
.TP |
.It Pa /etc/ssh_random_seed |
.I /etc/ssh_random_seed |
|
This file contains a seed for the random number generator. This file |
This file contains a seed for the random number generator. This file |
should only be accessible by root. |
should only be accessible by root. |
.TP |
.It Pa /var/run/sshd.pid |
.I /var/run/sshd.pid |
Contains the process ID of the |
Contains the process id of the |
.Nm |
.B sshd |
|
listening for connections (if there are several daemons running |
listening for connections (if there are several daemons running |
concurrently for different ports, this contains the pid of the one |
concurrently for different ports, this contains the pid of the one |
started last). The contents of this file are not sensitive; it can be |
started last). The contents of this file are not sensitive; it can be |
world-readable. |
world-readable. |
.TP |
.It Pa $HOME/.ssh/authorized_keys |
.I \&$HOME/\s+2.\s0ssh/authorized_keys |
|
Lists the RSA keys that can be used to log into the user's account. |
Lists the RSA keys that can be used to log into the user's account. |
This file must be readable by root (which may on some machines imply |
This file must be readable by root (which may on some machines imply |
it being world-readable if the user's home directory resides on an NFS |
it being world-readable if the user's home directory resides on an NFS |
volume). It is recommended that it not be accessible by others. The |
volume). It is recommended that it not be accessible by others. The |
format of this file is described above. |
format of this file is described above. |
.TP |
.It Pa "/etc/ssh_known_hosts" and "$HOME/.ssh/known_hosts" |
.I "/etc/ssh_known_hosts\fR and \fI$HOME/\s+2.\s0ssh/known_hosts\fR |
|
These files are consulted when using rhosts with RSA host |
These files are consulted when using rhosts with RSA host |
authentication to check the public key of the host. The key must be |
authentication to check the public key of the host. The key must be |
listed in one of these files to be accepted. (The client uses the |
listed in one of these files to be accepted. (The client uses the |
same files to verify that the remote host is the one we intended to |
same files to verify that the remote host is the one we intended to |
connect.) These files should be writable only by root/the owner. |
connect.) These files should be writable only by root/the owner. |
.I /etc/ssh_known_hosts |
.Pa /etc/ssh_known_hosts |
should be world-readable, and \fI$HOME/\s+2.\s0ssh/known_hosts\fR can |
should be world-readable, and |
but need not be world-readable. |
.Pa $HOME/.ssh/known_hosts |
.TP |
can but need not be world-readable. |
.I /etc/nologin |
.Pa /etc/nologin |
If this file exists, |
If this file exists, |
.B sshd |
.Nm |
refuses to let anyone except root log in. The contents of the file |
refuses to let anyone except root log in. The contents of the file |
are displayed to anyone trying to log in, and non-root connections are |
are displayed to anyone trying to log in, and non-root connections are |
refused. The file should be world-readable. |
refused. The file should be world-readable. |
.TP |
.Pa $HOME/.rhosts |
.I \&$HOME/\s+2.\s0rhosts |
|
This file contains host-username pairs, separated by a space, one per |
This file contains host-username pairs, separated by a space, one per |
line. The given user on the corresponding host is permitted to log in |
line. The given user on the corresponding host is permitted to log in |
without password. The same file is used by rlogind and rshd. |
without password. The same file is used by rlogind and rshd. |
.B Ssh |
Ssh differs from rlogind |
differs from rlogind |
|
and rshd in that it requires RSA host authentication in addition to |
and rshd in that it requires RSA host authentication in addition to |
validating the host name retrieved from domain name servers (unless |
validating the host name retrieved from domain name servers (unless |
compiled with the \-\-with\-rhosts configuration option). The file must |
compiled with the |
|
.Fl -with-rhosts |
|
configuration option). The file must |
be writable only by the user; it is recommended that it not be |
be writable only by the user; it is recommended that it not be |
accessible by others. |
accessible by others. |
|
.Pp |
If is also possible to use netgroups in the file. Either host or user |
If is also possible to use netgroups in the file. Either host or user |
name may be of the form +@groupname to specify all hosts or all users |
name may be of the form +@groupname to specify all hosts or all users |
in the group. |
in the group. |
.TP |
.It Pa $HOME/.shosts |
.I \&$HOME/\s+2.\s0shosts |
For ssh, |
For |
this file is exactly the same as for |
.B ssh, |
.Pa .rhosts . |
this file is exactly the same as for \s+2.\s0rhosts. However, this file is |
However, this file is |
not used by rlogin and rshd, so using this permits access using |
not used by rlogin and rshd, so using this permits access using SSH only. |
.B ssh |
.Pa /etc/hosts.equiv |
only. |
This file is used during |
.TP |
.Pa .rhosts |
.I /etc/hosts.equiv |
authentication. In the |
This file is used during \s+2.\s0rhosts authentication. In the |
|
simplest form, this file contains host names, one per line. Users on |
simplest form, this file contains host names, one per line. Users on |
those hosts are permitted to log in without a password, provided they |
those hosts are permitted to log in without a password, provided they |
have the same user name on both machines. The host name may also be |
have the same user name on both machines. The host name may also be |
followed by a user name; such users are permitted to log in as |
followed by a user name; such users are permitted to log in as |
.B any |
.Em any |
user on this machine (except root). Additionally, the syntax +@group |
user on this machine (except root). Additionally, the syntax |
can be used to specify netgroups. Negated entries start with '-'. |
.Dq +@group |
|
can be used to specify netgroups. Negated entries start with |
|
.Ql \&- . |
|
.Pp |
If the client host/user is successfully matched in this file, login is |
If the client host/user is successfully matched in this file, login is |
automatically permitted provided the client and server user names are the |
automatically permitted provided the client and server user names are the |
same. Additionally, successful RSA host authentication is normally |
same. Additionally, successful RSA host authentication is normally |
required. This file must be writable only by root; it is recommended |
required. This file must be writable only by root; it is recommended |
that it be world-readable. |
that it be world-readable. |
|
.Pp |
\fBWarning: It is almost never a good idea to use user names in |
.Sy Warning: It is almost never a good idea to use user names in |
hosts.equiv.\fR |
.Pa hosts.equiv . |
Beware that it really means that the named user(s) can log in as |
Beware that it really means that the named user(s) can log in as |
\fBanybody\fR, |
.Em anybody , |
which includes bin, daemon, adm, and other accounts that own critical |
which includes bin, daemon, adm, and other accounts that own critical |
binaries and directories. Using a user name practically grants the |
binaries and directories. Using a user name practically grants the |
user root access. The only valid use for user names that I can think |
user root access. The only valid use for user names that I can think |
of is in negative entries. |
of is in negative entries. |
\fBNote that this warning also applies to rsh/rlogin.\fR |
.Pp |
.TP |
Note that this warning also applies to rsh/rlogin. |
.I /etc/shosts.equiv |
.It Pa /etc/shosts.equiv |
This is processed exactly as |
This is processed exactly as |
.I /etc/hosts.equiv. |
.Pa /etc/hosts.equiv . |
However, this file may be useful in environments that want to run both |
However, this file may be useful in environments that want to run both |
rsh/rlogin and |
rsh/rlogin and ssh. |
.B ssh. |
.It Pa /etc/environment |
.TP |
|
.I /etc/environment |
|
This file is read into the environment at login (if it exists). It |
This file is read into the environment at login (if it exists). It |
can only contain empty lines, comment lines (that start with '#'), and |
can only contain empty lines, comment lines (that start with |
assignment lines of the form name=value. This file is processed in |
.Ql # ) , |
|
and assignment lines of the form name=value. This file is processed in |
all environments (normal rsh/rlogin only process it on AIX and |
all environments (normal rsh/rlogin only process it on AIX and |
potentially some other systems). The file should be writable only by |
potentially some other systems). The file should be writable only by |
root, and should be world-readable. |
root, and should be world-readable. |
.TP |
.It Pa $HOME/.ssh/environment |
.I \&$HOME/\s+2.\s0ssh/environment |
|
This file is read into the environment after /etc/environment. It has |
This file is read into the environment after /etc/environment. It has |
the same format. The file should be writable only by the user; it |
the same format. The file should be writable only by the user; it |
need not be readable by anyone else. |
need not be readable by anyone else. |
.TP |
.It Pa $HOME/.ssh/rc |
.I \&$HOME/\s+2.\s0ssh/rc |
|
If this file exists, it is run with /bin/sh after reading the |
If this file exists, it is run with /bin/sh after reading the |
environment files but before starting the user's shell or command. If |
environment files but before starting the user's shell or command. If |
X11 spoofing is in use, this will receive the "proto cookie" pair in |
X11 spoofing is in use, this will receive the "proto cookie" pair in |
standard input (and DISPLAY in environment). This must call xauth in |
standard input (and |
that case. |
.Ev DISPLAY |
|
in environment). This must call |
|
.Xr xauth 1 |
|
in that case. |
|
.Pp |
The primary purpose of this file is to run any initialization routines |
The primary purpose of this file is to run any initialization routines |
which may be needed before the user's home directory becomes |
which may be needed before the user's home directory becomes |
accessible; AFS is a particular example of such an environment. |
accessible; AFS is a particular example of such an environment. |
|
.Pp |
This file will probably contain some initialization code followed by |
This file will probably contain some initialization code followed by |
something similar to: "if read proto cookie; then echo add $DISPLAY |
something similar to: "if read proto cookie; then echo add $DISPLAY |
$proto $cookie | xauth -q -; fi". |
$proto $cookie | xauth -q -; fi". |
|
.Pp |
If this file does not exist, /etc/sshrc is run, and if that |
If this file does not exist, |
|
.Pa /etc/sshrc |
|
is run, and if that |
does not exist either, xauth is used to store the cookie. |
does not exist either, xauth is used to store the cookie. |
|
.Pp |
This file should be writable only by the user, and need not be |
This file should be writable only by the user, and need not be |
readable by anyone else. |
readable by anyone else. |
.TP |
.It Pa /etc/sshrc |
.I /etc/sshrc |
Like |
Like $HOME/\s+2.\s0ssh/rc. This can be used to specify |
.Pa $HOME/.ssh/rc . |
|
This can be used to specify |
machine-specific login-time initializations globally. This file |
machine-specific login-time initializations globally. This file |
should be writable only by root, and should be world-readable. |
should be writable only by root, and should be world-readable. |
|
.Sh INSTALLATION |
|
.Nm |
.SH INSTALLATION |
|
.LP |
|
.B Sshd |
|
is normally run as root. If it is not run as root, it can |
is normally run as root. If it is not run as root, it can |
only log in as the user it is running as, and password authentication |
only log in as the user it is running as, and password authentication |
may not work if the system uses shadow passwords. An alternative |
may not work if the system uses shadow passwords. An alternative |
host key file must also be used. |
host key file must also be used. |
.LP |
.Pp |
.B Sshd |
.Nm |
is normally started from |
is normally started from |
.I /etc/rc.local |
.Pa /etc/rc |
or equivalent at system boot. |
or equivalent at system boot. |
.LP |
.Pp |
Considerable work has been put to making |
Considerable work has been put to making |
.B sshd |
.Nm |
secure. However, if you find a security problem, please report it |
secure. However, if you find a security problem, please report it |
immediately to <ssh-bugs@cs.hut.fi>. |
immediately to <ssh-bugs@cs.hut.fi>. |
|
.Sh AUTHOR |
.SH AUTHOR |
|
.LP |
|
Tatu Ylonen <ylo@cs.hut.fi> |
Tatu Ylonen <ylo@cs.hut.fi> |
.LP |
.Pp |
Information about new releases, mailing lists, and other related |
Information about new releases, mailing lists, and other related |
issues can be found from the ssh WWW home page at |
issues can be found from the SSH WWW home page: |
http://www.cs.hut.fi/ssh. |
.Pp |
|
.Dl http://www.cs.hut.fi/ssh. |
.SH SEE ALSO |
.Sh SEE ALSO |
.LP |
.Xr make-ssh-known-hosts 1 , |
.BR ssh (1), |
.Xr rlogin 1 , |
.BR make-ssh-known-hosts (1), |
.Xr rsh 1 , |
.BR ssh-keygen (1), |
.Xr scp 1 , |
.BR ssh-agent (1), |
.Xr ssh 1 , |
.BR ssh-add (1), |
.Xr ssh-add x 1 , |
.BR scp (1), |
.Xr ssh-agent 1 , |
.BR rlogin (1), |
.Xr ssh-keygen 1 |
.BR rsh (1) |
|