]> andersk Git - openssh.git/blame_incremental - sshd.8
- stevesk@cvs.openbsd.org 2001/08/29 23:27:23
[openssh.git] / sshd.8
... / ...
CommitLineData
1.\" -*- nroff -*-
2.\"
3.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
5.\" All rights reserved
6.\"
7.\" As far as I am concerned, the code I have written for this software
8.\" can be used freely for any purpose. Any derived versions of this
9.\" software must be clearly marked as such, and if the derived work is
10.\" incompatible with the protocol description in the RFC file, it must be
11.\" called by a name other than "ssh" or "Secure Shell".
12.\"
13.\" Copyright (c) 1999,2000 Markus Friedl. All rights reserved.
14.\" Copyright (c) 1999 Aaron Campbell. All rights reserved.
15.\" Copyright (c) 1999 Theo de Raadt. All rights reserved.
16.\"
17.\" Redistribution and use in source and binary forms, with or without
18.\" modification, are permitted provided that the following conditions
19.\" are met:
20.\" 1. Redistributions of source code must retain the above copyright
21.\" notice, this list of conditions and the following disclaimer.
22.\" 2. Redistributions in binary form must reproduce the above copyright
23.\" notice, this list of conditions and the following disclaimer in the
24.\" documentation and/or other materials provided with the distribution.
25.\"
26.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
27.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
28.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
29.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
30.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
31.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
35.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36.\"
37.\" $OpenBSD: sshd.8,v 1.144 2001/08/29 23:02:21 stevesk Exp $
38.Dd September 25, 1999
39.Dt SSHD 8
40.Os
41.Sh NAME
42.Nm sshd
43.Nd OpenSSH SSH daemon
44.Sh SYNOPSIS
45.Nm sshd
46.Op Fl deiqD46
47.Op Fl b Ar bits
48.Op Fl f Ar config_file
49.Op Fl g Ar login_grace_time
50.Op Fl h Ar host_key_file
51.Op Fl k Ar key_gen_time
52.Op Fl p Ar port
53.Op Fl u Ar len
54.Op Fl V Ar client_protocol_id
55.Sh DESCRIPTION
56.Nm
57(SSH Daemon) is the daemon program for
58.Xr ssh 1 .
59Together these programs replace rlogin and rsh, and
60provide secure encrypted communications between two untrusted hosts
61over an insecure network.
62The programs are intended to be as easy to
63install and use as possible.
64.Pp
65.Nm
66is the daemon that listens for connections from clients.
67It is normally started at boot from
68.Pa /etc/rc .
69It forks a new
70daemon for each incoming connection.
71The forked daemons handle
72key exchange, encryption, authentication, command execution,
73and data exchange.
74This implementation of
75.Nm
76supports both SSH protocol version 1 and 2 simultaneously.
77.Nm
78works as follows.
79.Pp
80.Ss SSH protocol version 1
81.Pp
82Each host has a host-specific RSA key
83(normally 1024 bits) used to identify the host.
84Additionally, when
85the daemon starts, it generates a server RSA key (normally 768 bits).
86This key is normally regenerated every hour if it has been used, and
87is never stored on disk.
88.Pp
89Whenever a client connects the daemon responds with its public
90host and server keys.
91The client compares the
92RSA host key against its own database to verify that it has not changed.
93The client then generates a 256 bit random number.
94It encrypts this
95random number using both the host key and the server key, and sends
96the encrypted number to the server.
97Both sides then use this
98random number as a session key which is used to encrypt all further
99communications in the session.
100The rest of the session is encrypted
101using a conventional cipher, currently Blowfish or 3DES, with 3DES
102being used by default.
103The client selects the encryption algorithm
104to use from those offered by the server.
105.Pp
106Next, the server and the client enter an authentication dialog.
107The client tries to authenticate itself using
108.Pa .rhosts
109authentication,
110.Pa .rhosts
111authentication combined with RSA host
112authentication, RSA challenge-response authentication, or password
113based authentication.
114.Pp
115Rhosts authentication is normally disabled
116because it is fundamentally insecure, but can be enabled in the server
117configuration file if desired.
118System security is not improved unless
119.Xr rshd 8 ,
120.Xr rlogind 8 ,
121and
122.Xr rexecd 8
123are disabled (thus completely disabling
124.Xr rlogin 1
125and
126.Xr rsh 1
127into the machine).
128.Pp
129.Ss SSH protocol version 2
130.Pp
131Version 2 works similarly:
132Each host has a host-specific key (RSA or DSA) used to identify the host.
133However, when the daemon starts, it does not generate a server key.
134Forward security is provided through a Diffie-Hellman key agreement.
135This key agreement results in a shared session key.
136.Pp
137The rest of the session is encrypted using a symmetric cipher, currently
138128 bit AES, Blowfish, 3DES, CAST128, Arcfour, 192 bit AES, or 256 bit AES.
139The client selects the encryption algorithm
140to use from those offered by the server.
141Additionally, session integrity is provided
142through a cryptographic message authentication code
143(hmac-sha1 or hmac-md5).
144.Pp
145Protocol version 2 provides a public key based
146user (PubkeyAuthentication) or
147client host (HostbasedAuthentication) authentication method,
148conventional password authentication and challenge response based methods.
149.Pp
150.Ss Command execution and data forwarding
151.Pp
152If the client successfully authenticates itself, a dialog for
153preparing the session is entered.
154At this time the client may request
155things like allocating a pseudo-tty, forwarding X11 connections,
156forwarding TCP/IP connections, or forwarding the authentication agent
157connection over the secure channel.
158.Pp
159Finally, the client either requests a shell or execution of a command.
160The sides then enter session mode.
161In this mode, either side may send
162data at any time, and such data is forwarded to/from the shell or
163command on the server side, and the user terminal in the client side.
164.Pp
165When the user program terminates and all forwarded X11 and other
166connections have been closed, the server sends command exit status to
167the client, and both sides exit.
168.Pp
169.Nm
170can be configured using command-line options or a configuration
171file.
172Command-line options override values specified in the
173configuration file.
174.Pp
175.Nm
176rereads its configuration file when it receives a hangup signal,
177.Dv SIGHUP ,
178by executing itself with the name it was started as, i.e.,
179.Pa /usr/sbin/sshd .
180.Pp
181The options are as follows:
182.Bl -tag -width Ds
183.It Fl b Ar bits
184Specifies the number of bits in the ephemeral protocol version 1
185server key (default 768).
186.It Fl d
187Debug mode.
188The server sends verbose debug output to the system
189log, and does not put itself in the background.
190The server also will not fork and will only process one connection.
191This option is only intended for debugging for the server.
192Multiple -d options increase the debugging level.
193Maximum is 3.
194.It Fl e
195When this option is specified,
196.Nm
197will send the output to the standard error instead of the system log.
198.It Fl f Ar configuration_file
199Specifies the name of the configuration file.
200The default is
201.Pa /etc/sshd_config .
202.Nm
203refuses to start if there is no configuration file.
204.It Fl g Ar login_grace_time
205Gives the grace time for clients to authenticate themselves (default
206600 seconds).
207If the client fails to authenticate the user within
208this many seconds, the server disconnects and exits.
209A value of zero indicates no limit.
210.It Fl h Ar host_key_file
211Specifies the file from which the host key is read (default
212.Pa /etc/ssh_host_key ) .
213This option must be given if
214.Nm
215is not run as root (as the normal
216host file is normally not readable by anyone but root).
217It is possible to have multiple host key files for
218the different protocol versions and host key algorithms.
219.It Fl i
220Specifies that
221.Nm
222is being run from inetd.
223.Nm
224is normally not run
225from inetd because it needs to generate the server key before it can
226respond to the client, and this may take tens of seconds.
227Clients would have to wait too long if the key was regenerated every time.
228However, with small key sizes (e.g., 512) using
229.Nm
230from inetd may
231be feasible.
232.It Fl k Ar key_gen_time
233Specifies how often the ephemeral protocol version 1 server key is
234regenerated (default 3600 seconds, or one hour).
235The motivation for regenerating the key fairly
236often is that the key is not stored anywhere, and after about an hour,
237it becomes impossible to recover the key for decrypting intercepted
238communications even if the machine is cracked into or physically
239seized.
240A value of zero indicates that the key will never be regenerated.
241.It Fl p Ar port
242Specifies the port on which the server listens for connections
243(default 22).
244.It Fl q
245Quiet mode.
246Nothing is sent to the system log.
247Normally the beginning,
248authentication, and termination of each connection is logged.
249.It Fl t
250Test mode.
251Only check the validity of the configuration file and sanity of the keys.
252This is useful for updating
253.Nm
254reliably as configuration options may change.
255.It Fl u Ar len
256This option is used to specify the size of the field
257in the
258.Li utmp
259structure that holds the remote host name.
260If the resolved host name is longer than
261.Ar len ,
262the dotted decimal value will be used instead.
263This allows hosts with very long host names that
264overflow this field to still be uniquely identified.
265Specifying
266.Fl u0
267indicates that only dotted decimal addresses
268should be put into the
269.Pa utmp
270file.
271.Fl u0
272is also be used to prevent
273.Nm
274from making DNS requests unless the authentication
275mechanism or configuration requires it.
276Authentication mechanisms that may require DNS include
277.Cm RhostsAuthentication ,
278.Cm RhostsRSAAuthentication ,
279.Cm HostbasedAuthentication
280and using a
281.Cm from="pattern-list"
282option in a key file.
283.It Fl D
284When this option is specified
285.Nm
286will not detach and does not become a daemon.
287This allows easy monitoring of
288.Nm sshd .
289.It Fl 4
290Forces
291.Nm
292to use IPv4 addresses only.
293.It Fl 6
294Forces
295.Nm
296to use IPv6 addresses only.
297.El
298.Sh CONFIGURATION FILE
299.Nm
300reads configuration data from
301.Pa /etc/sshd_config
302(or the file specified with
303.Fl f
304on the command line).
305The file contains keyword-argument pairs, one per line.
306Lines starting with
307.Ql #
308and empty lines are interpreted as comments.
309.Pp
310The possible
311keywords and their meanings are as follows (note that
312keywords are case-insensitive and arguments are case-sensitive):
313.Bl -tag -width Ds
314.It Cm AFSTokenPassing
315Specifies whether an AFS token may be forwarded to the server.
316Default is
317.Dq yes .
318.It Cm AllowGroups
319This keyword can be followed by a list of group names, separated
320by spaces.
321If specified, login is allowed only for users whose primary
322group or supplementary group list matches one of the patterns.
323.Ql \&*
324and
325.Ql ?
326can be used as
327wildcards in the patterns.
328Only group names are valid; a numerical group ID isn't recognized.
329By default login is allowed regardless of the group list.
330.Pp
331.It Cm AllowTcpForwarding
332Specifies whether TCP forwarding is permitted.
333The default is
334.Dq yes .
335Note that disabling TCP forwarding does not improve security unless
336users are also denied shell access, as they can always install their
337own forwarders.
338.Pp
339.It Cm AllowUsers
340This keyword can be followed by a list of user names, separated
341by spaces.
342If specified, login is allowed only for users names that
343match one of the patterns.
344.Ql \&*
345and
346.Ql ?
347can be used as
348wildcards in the patterns.
349Only user names are valid; a numerical user ID isn't recognized.
350By default login is allowed regardless of the user name.
351If the pattern takes the form USER@HOST then USER and HOST
352are separately checked, allowing you to restrict logins to particular
353users from particular hosts.
354.Pp
355.It Cm AuthorizedKeysFile
356Specifies the file that contains the public keys that can be used
357for user authentication.
358.Cm AuthorizedKeysFile
359may contain tokens of the form %T which are substituted during connection
360set-up. The following tokens are defined: %% is replaced by a literal '%',
361%h is replaced by the home directory of the user being authenticated and
362%u is replaced by the username of that user.
363After expansion,
364.Cm AuthorizedKeysFile
365is taken to be an absolute path or one relative to the user's home
366directory.
367The default is
368.Dq .ssh/authorized_keys
369.It Cm Banner
370In some jurisdictions, sending a warning message before authentication
371may be relevant for getting legal protection.
372The contents of the specified file are sent to the remote user before
373authentication is allowed.
374This option is only available for protocol version 2.
375.Pp
376.It Cm ChallengeResponseAuthentication
377Specifies whether challenge response authentication is allowed.
378All authentication styles from
379.Xr login.conf 5
380are supported.
381The default is
382.Dq yes .
383.It Cm Ciphers
384Specifies the ciphers allowed for protocol version 2.
385Multiple ciphers must be comma-separated.
386The default is
387.Dq aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour.
388.It Cm ClientAliveInterval
389Sets a timeout interval in seconds after which if no data has been received
390from the client,
391.Nm
392will send a message through the encrypted
393channel to request a response from the client.
394The default
395is 0, indicating that these messages will not be sent to the client.
396This option applies to protocol version 2 only.
397.It Cm ClientAliveCountMax
398Sets the number of client alive messages (see above) which may be
399sent without
400.Nm
401receiving any messages back from the client. If this threshold is
402reached while client alive messages are being sent,
403.Nm
404will disconnect the client, terminating the session. It is important
405to note that the use of client alive messages is very different from
406.Cm Keepalive
407(below). The client alive messages are sent through the
408encrypted channel and therefore will not be spoofable. The TCP keepalive
409option enabled by
410.Cm Keepalive
411is spoofable. You want to use the client
412alive mechanism when you are basing something important on
413clients having an active connection to the server.
414.Pp
415The default value is 3. If you set
416.Cm ClientAliveInterval
417(above) to 15, and leave this value at the default, unresponsive ssh clients
418will be disconnected after approximately 45 seconds.
419.It Cm DenyGroups
420This keyword can be followed by a number of group names, separated
421by spaces.
422Users whose primary group or supplementary group list matches
423one of the patterns aren't allowed to log in.
424.Ql \&*
425and
426.Ql ?
427can be used as
428wildcards in the patterns.
429Only group names are valid; a numerical group ID isn't recognized.
430By default login is allowed regardless of the group list.
431.Pp
432.It Cm DenyUsers
433This keyword can be followed by a number of user names, separated
434by spaces.
435Login is disallowed for user names that match one of the patterns.
436.Ql \&*
437and
438.Ql ?
439can be used as wildcards in the patterns.
440Only user names are valid; a numerical user ID isn't recognized.
441By default login is allowed regardless of the user name.
442.It Cm GatewayPorts
443Specifies whether remote hosts are allowed to connect to ports
444forwarded for the client.
445The argument must be
446.Dq yes
447or
448.Dq no .
449The default is
450.Dq no .
451.It Cm HostbasedAuthentication
452Specifies whether rhosts or /etc/hosts.equiv authentication together
453with successful public key client host authentication is allowed
454(hostbased authentication).
455This option is similar to
456.Cm RhostsRSAAuthentication
457and applies to protocol version 2 only.
458The default is
459.Dq no .
460.It Cm HostKey
461Specifies the file containing the private host keys (default
462.Pa /etc/ssh_host_key )
463used by SSH protocol versions 1 and 2.
464Note that
465.Nm
466will refuse to use a file if it is group/world-accessible.
467It is possible to have multiple host key files.
468.Dq rsa1
469keys are used for version 1 and
470.Dq dsa
471or
472.Dq rsa
473are used for version 2 of the SSH protocol.
474.It Cm IgnoreRhosts
475Specifies that
476.Pa .rhosts
477and
478.Pa .shosts
479files will not be used in
480.Cm RhostsAuthentication ,
481.Cm RhostsRSAAuthentication
482or
483.Cm HostbasedAuthentication .
484.Pp
485.Pa /etc/hosts.equiv
486and
487.Pa /etc/shosts.equiv
488are still used.
489The default is
490.Dq yes .
491.It Cm IgnoreUserKnownHosts
492Specifies whether
493.Nm
494should ignore the user's
495.Pa $HOME/.ssh/known_hosts
496during
497.Cm RhostsRSAAuthentication
498or
499.Cm HostbasedAuthentication .
500The default is
501.Dq no .
502.It Cm KeepAlive
503Specifies whether the system should send keepalive messages to the
504other side.
505If they are sent, death of the connection or crash of one
506of the machines will be properly noticed.
507However, this means that
508connections will die if the route is down temporarily, and some people
509find it annoying.
510On the other hand, if keepalives are not sent,
511sessions may hang indefinitely on the server, leaving
512.Dq ghost
513users and consuming server resources.
514.Pp
515The default is
516.Dq yes
517(to send keepalives), and the server will notice
518if the network goes down or the client host reboots.
519This avoids infinitely hanging sessions.
520.Pp
521To disable keepalives, the value should be set to
522.Dq no
523in both the server and the client configuration files.
524.It Cm KerberosAuthentication
525Specifies whether Kerberos authentication is allowed.
526This can be in the form of a Kerberos ticket, or if
527.Cm PasswordAuthentication
528is yes, the password provided by the user will be validated through
529the Kerberos KDC.
530To use this option, the server needs a
531Kerberos servtab which allows the verification of the KDC's identity.
532Default is
533.Dq yes .
534.It Cm KerberosOrLocalPasswd
535If set then if password authentication through Kerberos fails then
536the password will be validated via any additional local mechanism
537such as
538.Pa /etc/passwd .
539Default is
540.Dq yes .
541.It Cm KerberosTgtPassing
542Specifies whether a Kerberos TGT may be forwarded to the server.
543Default is
544.Dq no ,
545as this only works when the Kerberos KDC is actually an AFS kaserver.
546.It Cm KerberosTicketCleanup
547Specifies whether to automatically destroy the user's ticket cache
548file on logout.
549Default is
550.Dq yes .
551.It Cm KeyRegenerationInterval
552In protocol version 1, the ephemeral server key is automatically regenerated
553after this many seconds (if it has been used).
554The purpose of regeneration is to prevent
555decrypting captured sessions by later breaking into the machine and
556stealing the keys.
557The key is never stored anywhere.
558If the value is 0, the key is never regenerated.
559The default is 3600 (seconds).
560.It Cm ListenAddress
561Specifies the local addresses
562.Nm
563should listen on.
564The following forms may be used:
565.Pp
566.Bl -item -offset indent -compact
567.It
568.Cm ListenAddress
569.Sm off
570.Ar host No | Ar IPv4_addr No | Ar IPv6_addr
571.Sm on
572.It
573.Cm ListenAddress
574.Sm off
575.Ar host No | Ar IPv4_addr No : Ar port
576.Sm on
577.It
578.Cm ListenAddress
579.Sm off
580.Oo
581.Ar host No | Ar IPv6_addr Oc : Ar port
582.Sm on
583.El
584.Pp
585If
586.Ar port
587is not specified,
588.Nm
589will listen on the address and all prior
590.Cm Port
591options specified. The default is to listen on all local
592addresses. Multiple
593.Cm ListenAddress
594options are permitted. Additionally, any
595.Cm Port
596options must precede this option for non port qualified addresses.
597.It Cm LoginGraceTime
598The server disconnects after this time if the user has not
599successfully logged in.
600If the value is 0, there is no time limit.
601The default is 600 (seconds).
602.It Cm LogLevel
603Gives the verbosity level that is used when logging messages from
604.Nm sshd .
605The possible values are:
606QUIET, FATAL, ERROR, INFO, VERBOSE and DEBUG.
607The default is INFO.
608Logging with level DEBUG violates the privacy of users
609and is not recommended.
610.It Cm MACs
611Specifies the available MAC (message authentication code) algorithms.
612The MAC algorithm is used in protocol version 2
613for data integrity protection.
614Multiple algorithms must be comma-separated.
615The default is
616.Dq hmac-md5,hmac-sha1,hmac-ripemd160,hmac-sha1-96,hmac-md5-96 .
617.It Cm MaxStartups
618Specifies the maximum number of concurrent unauthenticated connections to the
619.Nm
620daemon.
621Additional connections will be dropped until authentication succeeds or the
622.Cm LoginGraceTime
623expires for a connection.
624The default is 10.
625.Pp
626Alternatively, random early drop can be enabled by specifying
627the three colon separated values
628.Dq start:rate:full
629(e.g., "10:30:60").
630.Nm
631will refuse connection attempts with a probability of
632.Dq rate/100
633(30%)
634if there are currently
635.Dq start
636(10)
637unauthenticated connections.
638The probability increases linearly and all connection attempts
639are refused if the number of unauthenticated connections reaches
640.Dq full
641(60).
642.It Cm PAMAuthenticationViaKbdInt
643Specifies whether PAM challenge response authentication is allowed. This
644allows the use of most PAM challenge response authentication modules, but
645it will allow password authentication regardless of whether
646.Cm PasswordAuthentication
647is disabled.
648The default is
649.Dq no .
650.It Cm PasswordAuthentication
651Specifies whether password authentication is allowed.
652The default is
653.Dq yes .
654.It Cm PermitEmptyPasswords
655When password authentication is allowed, it specifies whether the
656server allows login to accounts with empty password strings.
657The default is
658.Dq no .
659.It Cm PermitRootLogin
660Specifies whether root can login using
661.Xr ssh 1 .
662The argument must be
663.Dq yes ,
664.Dq without-password ,
665.Dq forced-commands-only
666or
667.Dq no .
668The default is
669.Dq yes .
670.Pp
671If this option is set to
672.Dq without-password
673password authentication is disabled for root.
674.Pp
675If this option is set to
676.Dq forced-commands-only
677root login with public key authentication will be allowed,
678but only if the
679.Ar command
680option has been specified
681(which may be useful for taking remote backups even if root login is
682normally not allowed). All other authentication methods are disabled
683for root.
684.Pp
685If this option is set to
686.Dq no
687root is not allowed to login.
688.It Cm PidFile
689Specifies the file that contains the process identifier of the
690.Nm
691daemon.
692The default is
693.Pa /var/run/sshd.pid .
694.It Cm Port
695Specifies the port number that
696.Nm
697listens on.
698The default is 22.
699Multiple options of this type are permitted.
700See also
701.Cm ListenAddress .
702.It Cm PrintLastLog
703Specifies whether
704.Nm
705should print the date and time when the user last logged in.
706The default is
707.Dq yes .
708.It Cm PrintMotd
709Specifies whether
710.Nm
711should print
712.Pa /etc/motd
713when a user logs in interactively.
714(On some systems it is also printed by the shell,
715.Pa /etc/profile ,
716or equivalent.)
717The default is
718.Dq yes .
719.It Cm Protocol
720Specifies the protocol versions
721.Nm
722should support.
723The possible values are
724.Dq 1
725and
726.Dq 2 .
727Multiple versions must be comma-separated.
728The default is
729.Dq 2,1 .
730.It Cm PubkeyAuthentication
731Specifies whether public key authentication is allowed.
732The default is
733.Dq yes .
734Note that this option applies to protocol version 2 only.
735.It Cm ReverseMappingCheck
736Specifies whether
737.Nm
738should try to verify the remote host name and check that
739the resolved host name for the remote IP address maps back to the
740very same IP address.
741The default is
742.Dq no .
743.It Cm RhostsAuthentication
744Specifies whether authentication using rhosts or /etc/hosts.equiv
745files is sufficient.
746Normally, this method should not be permitted because it is insecure.
747.Cm RhostsRSAAuthentication
748should be used
749instead, because it performs RSA-based host authentication in addition
750to normal rhosts or /etc/hosts.equiv authentication.
751The default is
752.Dq no .
753This option applies to protocol version 1 only.
754.It Cm RhostsRSAAuthentication
755Specifies whether rhosts or /etc/hosts.equiv authentication together
756with successful RSA host authentication is allowed.
757The default is
758.Dq no .
759This option applies to protocol version 1 only.
760.It Cm RSAAuthentication
761Specifies whether pure RSA authentication is allowed.
762The default is
763.Dq yes .
764This option applies to protocol version 1 only.
765.It Cm ServerKeyBits
766Defines the number of bits in the ephemeral protocol version 1 server key.
767The minimum value is 512, and the default is 768.
768.It Cm StrictModes
769Specifies whether
770.Nm
771should check file modes and ownership of the
772user's files and home directory before accepting login.
773This is normally desirable because novices sometimes accidentally leave their
774directory or files world-writable.
775The default is
776.Dq yes .
777.It Cm Subsystem
778Configures an external subsystem (e.g., file transfer daemon).
779Arguments should be a subsystem name and a command to execute upon subsystem
780request.
781The command
782.Xr sftp-server 8
783implements the
784.Dq sftp
785file transfer subsystem.
786By default no subsystems are defined.
787Note that this option applies to protocol version 2 only.
788.It Cm SyslogFacility
789Gives the facility code that is used when logging messages from
790.Nm sshd .
791The possible values are: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2,
792LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7.
793The default is AUTH.
794.It Cm UseLogin
795Specifies whether
796.Xr login 1
797is used for interactive login sessions.
798The default is
799.Dq no .
800Note that
801.Xr login 1
802is never used for remote command execution.
803Note also, that if this is enabled,
804.Cm X11Forwarding
805will be disabled because
806.Xr login 1
807does not know how to handle
808.Xr xauth 1
809cookies.
810.It Cm X11DisplayOffset
811Specifies the first display number available for
812.Nm sshd Ns 's
813X11 forwarding.
814This prevents
815.Nm
816from interfering with real X11 servers.
817The default is 10.
818.It Cm X11Forwarding
819Specifies whether X11 forwarding is permitted.
820The default is
821.Dq no .
822Note that disabling X11 forwarding does not improve security in any
823way, as users can always install their own forwarders.
824X11 forwarding is automatically disabled if
825.Cm UseLogin
826is enabled.
827.It Cm XAuthLocation
828Specifies the location of the
829.Xr xauth 1
830program.
831The default is
832.Pa /usr/X11R6/bin/xauth .
833.El
834.Ss Time Formats
835.Pp
836.Nm
837command-line arguments and configuration file options that specify time
838may be expressed using a sequence of the form:
839.Sm off
840.Ar time Oo Ar qualifier Oc ,
841.Sm on
842where
843.Ar time
844is a positive integer value and
845.Ar qualifier
846is one of the following:
847.Pp
848.Bl -tag -width Ds -compact -offset indent
849.It Cm <none>
850seconds
851.It Cm s | Cm S
852seconds
853.It Cm m | Cm M
854minutes
855.It Cm h | Cm H
856hours
857.It Cm d | Cm D
858days
859.It Cm w | Cm W
860weeks
861.El
862.Pp
863Each member of the sequence is added together to calculate
864the total time value.
865.Pp
866Time format examples:
867.Pp
868.Bl -tag -width Ds -compact -offset indent
869.It 600
870600 seconds (10 minutes)
871.It 10m
87210 minutes
873.It 1h30m
8741 hour 30 minutes (90 minutes)
875.El
876.Sh LOGIN PROCESS
877When a user successfully logs in,
878.Nm
879does the following:
880.Bl -enum -offset indent
881.It
882If the login is on a tty, and no command has been specified,
883prints last login time and
884.Pa /etc/motd
885(unless prevented in the configuration file or by
886.Pa $HOME/.hushlogin ;
887see the
888.Sx FILES
889section).
890.It
891If the login is on a tty, records login time.
892.It
893Checks
894.Pa /etc/nologin ;
895if it exists, prints contents and quits
896(unless root).
897.It
898Changes to run with normal user privileges.
899.It
900Sets up basic environment.
901.It
902Reads
903.Pa $HOME/.ssh/environment
904if it exists.
905.It
906Changes to user's home directory.
907.It
908If
909.Pa $HOME/.ssh/rc
910exists, runs it; else if
911.Pa /etc/sshrc
912exists, runs
913it; otherwise runs xauth.
914The
915.Dq rc
916files are given the X11
917authentication protocol and cookie in standard input.
918.It
919Runs user's shell or command.
920.El
921.Sh AUTHORIZED_KEYS FILE FORMAT
922.Pa $HOME/.ssh/authorized_keys
923is the default file that lists the public keys that are
924permitted for RSA authentication in protocol version 1
925and for public key authentication (PubkeyAuthentication)
926in protocol version 2.
927.Cm AuthorizedKeysFile
928may be used to specify an alternative file.
929.Pp
930Each line of the file contains one
931key (empty lines and lines starting with a
932.Ql #
933are ignored as
934comments).
935Each RSA public key consists of the following fields, separated by
936spaces: options, bits, exponent, modulus, comment.
937Each protocol version 2 public key consists of:
938options, keytype, base64 encoded key, comment.
939The options fields
940are optional; its presence is determined by whether the line starts
941with a number or not (the option field never starts with a number).
942The bits, exponent, modulus and comment fields give the RSA key for
943protocol version 1; the
944comment field is not used for anything (but may be convenient for the
945user to identify the key).
946For protocol version 2 the keytype is
947.Dq ssh-dss
948or
949.Dq ssh-rsa .
950.Pp
951Note that lines in this file are usually several hundred bytes long
952(because of the size of the RSA key modulus).
953You don't want to type them in; instead, copy the
954.Pa identity.pub ,
955.Pa id_dsa.pub
956or the
957.Pa id_rsa.pub
958file and edit it.
959.Pp
960The options (if present) consist of comma-separated option
961specifications.
962No spaces are permitted, except within double quotes.
963The following option specifications are supported (note
964that option keywords are case-insensitive):
965.Bl -tag -width Ds
966.It Cm from="pattern-list"
967Specifies that in addition to RSA authentication, the canonical name
968of the remote host must be present in the comma-separated list of
969patterns
970.Pf ( Ql *
971and
972.Ql ?
973serve as wildcards).
974The list may also contain
975patterns negated by prefixing them with
976.Ql ! ;
977if the canonical host name matches a negated pattern, the key is not accepted.
978The purpose
979of this option is to optionally increase security: RSA authentication
980by itself does not trust the network or name servers or anything (but
981the key); however, if somebody somehow steals the key, the key
982permits an intruder to log in from anywhere in the world.
983This additional option makes using a stolen key more difficult (name
984servers and/or routers would have to be compromised in addition to
985just the key).
986.It Cm command="command"
987Specifies that the command is executed whenever this key is used for
988authentication.
989The command supplied by the user (if any) is ignored.
990The command is run on a pty if the connection requests a pty;
991otherwise it is run without a tty.
992Note that if you want a 8-bit clean channel,
993you must not request a pty or should specify
994.Cm no-pty .
995A quote may be included in the command by quoting it with a backslash.
996This option might be useful
997to restrict certain RSA keys to perform just a specific operation.
998An example might be a key that permits remote backups but nothing else.
999Note that the client may specify TCP/IP and/or X11
1000forwarding unless they are explicitly prohibited.
1001.It Cm environment="NAME=value"
1002Specifies that the string is to be added to the environment when
1003logging in using this key.
1004Environment variables set this way
1005override other default environment values.
1006Multiple options of this type are permitted.
1007.It Cm no-port-forwarding
1008Forbids TCP/IP forwarding when this key is used for authentication.
1009Any port forward requests by the client will return an error.
1010This might be used, e.g., in connection with the
1011.Cm command
1012option.
1013.It Cm no-X11-forwarding
1014Forbids X11 forwarding when this key is used for authentication.
1015Any X11 forward requests by the client will return an error.
1016.It Cm no-agent-forwarding
1017Forbids authentication agent forwarding when this key is used for
1018authentication.
1019.It Cm no-pty
1020Prevents tty allocation (a request to allocate a pty will fail).
1021.It Cm permitopen="host:port"
1022Limit local
1023.Li ``ssh -L''
1024port forwarding such that it may only connect to the specified host and
1025port. Multiple
1026.Cm permitopen
1027options may be applied separated by commas. No pattern matching is
1028performed on the specified hostnames, they must be literal domains or
1029addresses.
1030.El
1031.Ss Examples
10321024 33 12121.\|.\|.\|312314325 ylo@foo.bar
1033.Pp
1034from="*.niksula.hut.fi,!pc.niksula.hut.fi" 1024 35 23.\|.\|.\|2334 ylo@niksula
1035.Pp
1036command="dump /home",no-pty,no-port-forwarding 1024 33 23.\|.\|.\|2323 backup.hut.fi
1037.Pp
1038permitopen="10.2.1.55:80",permitopen="10.2.1.56:25" 1024 33 23.\|.\|.\|2323
1039.Sh SSH_KNOWN_HOSTS FILE FORMAT
1040The
1041.Pa /etc/ssh_known_hosts ,
1042and
1043.Pa $HOME/.ssh/known_hosts
1044files contain host public keys for all known hosts.
1045The global file should
1046be prepared by the administrator (optional), and the per-user file is
1047maintained automatically: whenever the user connects from an unknown host
1048its key is added to the per-user file.
1049.Pp
1050Each line in these files contains the following fields: hostnames,
1051bits, exponent, modulus, comment.
1052The fields are separated by spaces.
1053.Pp
1054Hostnames is a comma-separated list of patterns ('*' and '?' act as
1055wildcards); each pattern in turn is matched against the canonical host
1056name (when authenticating a client) or against the user-supplied
1057name (when authenticating a server).
1058A pattern may also be preceded by
1059.Ql !
1060to indicate negation: if the host name matches a negated
1061pattern, it is not accepted (by that line) even if it matched another
1062pattern on the line.
1063.Pp
1064Bits, exponent, and modulus are taken directly from the RSA host key; they
1065can be obtained, e.g., from
1066.Pa /etc/ssh_host_key.pub .
1067The optional comment field continues to the end of the line, and is not used.
1068.Pp
1069Lines starting with
1070.Ql #
1071and empty lines are ignored as comments.
1072.Pp
1073When performing host authentication, authentication is accepted if any
1074matching line has the proper key.
1075It is thus permissible (but not
1076recommended) to have several lines or different host keys for the same
1077names.
1078This will inevitably happen when short forms of host names
1079from different domains are put in the file.
1080It is possible
1081that the files contain conflicting information; authentication is
1082accepted if valid information can be found from either file.
1083.Pp
1084Note that the lines in these files are typically hundreds of characters
1085long, and you definitely don't want to type in the host keys by hand.
1086Rather, generate them by a script
1087or by taking
1088.Pa /etc/ssh_host_key.pub
1089and adding the host names at the front.
1090.Ss Examples
1091.Bd -literal
1092closenet,.\|.\|.\|,130.233.208.41 1024 37 159.\|.\|.93 closenet.hut.fi
1093cvs.openbsd.org,199.185.137.3 ssh-rsa AAAA1234.....=
1094.Ed
1095.Sh FILES
1096.Bl -tag -width Ds
1097.It Pa /etc/sshd_config
1098Contains configuration data for
1099.Nm sshd .
1100This file should be writable by root only, but it is recommended
1101(though not necessary) that it be world-readable.
1102.It Pa /etc/ssh_host_key, /etc/ssh_host_dsa_key, /etc/ssh_host_rsa_key
1103These three files contain the private parts of the host keys.
1104These files should only be owned by root, readable only by root, and not
1105accessible to others.
1106Note that
1107.Nm
1108does not start if this file is group/world-accessible.
1109.It Pa /etc/ssh_host_key.pub, /etc/ssh_host_dsa_key.pub, /etc/ssh_host_rsa_key.pub
1110These three files contain the public parts of the host keys.
1111These files should be world-readable but writable only by
1112root.
1113Their contents should match the respective private parts.
1114These files are not
1115really used for anything; they are provided for the convenience of
1116the user so their contents can be copied to known hosts files.
1117These files are created using
1118.Xr ssh-keygen 1 .
1119.It Pa /etc/moduli
1120Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange".
1121.It Pa /var/run/sshd.pid
1122Contains the process ID of the
1123.Nm
1124listening for connections (if there are several daemons running
1125concurrently for different ports, this contains the pid of the one
1126started last).
1127The content of this file is not sensitive; it can be world-readable.
1128.It Pa $HOME/.ssh/authorized_keys
1129Lists the public keys (RSA or DSA) that can be used to log into the user's account.
1130This file must be readable by root (which may on some machines imply
1131it being world-readable if the user's home directory resides on an NFS
1132volume).
1133It is recommended that it not be accessible by others.
1134The format of this file is described above.
1135Users will place the contents of their
1136.Pa identity.pub ,
1137.Pa id_dsa.pub
1138and/or
1139.Pa id_rsa.pub
1140files into this file, as described in
1141.Xr ssh-keygen 1 .
1142.It Pa "/etc/ssh_known_hosts" and "$HOME/.ssh/known_hosts"
1143These files are consulted when using rhosts with RSA host
1144authentication or protocol version 2 hostbased authentication
1145to check the public key of the host.
1146The key must be listed in one of these files to be accepted.
1147The client uses the same files
1148to verify that it is connecting to the correct remote host.
1149These files should be writable only by root/the owner.
1150.Pa /etc/ssh_known_hosts
1151should be world-readable, and
1152.Pa $HOME/.ssh/known_hosts
1153can but need not be world-readable.
1154.It Pa /etc/nologin
1155If this file exists,
1156.Nm
1157refuses to let anyone except root log in.
1158The contents of the file
1159are displayed to anyone trying to log in, and non-root connections are
1160refused.
1161The file should be world-readable.
1162.It Pa /etc/hosts.allow, /etc/hosts.deny
1163If compiled with
1164.Sy LIBWRAP
1165support, tcp-wrappers access controls may be defined here as described in
1166.Xr hosts_access 5 .
1167.It Pa $HOME/.rhosts
1168This file contains host-username pairs, separated by a space, one per
1169line.
1170The given user on the corresponding host is permitted to log in
1171without password.
1172The same file is used by rlogind and rshd.
1173The file must
1174be writable only by the user; it is recommended that it not be
1175accessible by others.
1176.Pp
1177If is also possible to use netgroups in the file.
1178Either host or user
1179name may be of the form +@groupname to specify all hosts or all users
1180in the group.
1181.It Pa $HOME/.shosts
1182For ssh,
1183this file is exactly the same as for
1184.Pa .rhosts .
1185However, this file is
1186not used by rlogin and rshd, so using this permits access using SSH only.
1187.It Pa /etc/hosts.equiv
1188This file is used during
1189.Pa .rhosts
1190authentication.
1191In the simplest form, this file contains host names, one per line.
1192Users on
1193those hosts are permitted to log in without a password, provided they
1194have the same user name on both machines.
1195The host name may also be
1196followed by a user name; such users are permitted to log in as
1197.Em any
1198user on this machine (except root).
1199Additionally, the syntax
1200.Dq +@group
1201can be used to specify netgroups.
1202Negated entries start with
1203.Ql \&- .
1204.Pp
1205If the client host/user is successfully matched in this file, login is
1206automatically permitted provided the client and server user names are the
1207same.
1208Additionally, successful RSA host authentication is normally required.
1209This file must be writable only by root; it is recommended
1210that it be world-readable.
1211.Pp
1212.Sy "Warning: It is almost never a good idea to use user names in"
1213.Pa hosts.equiv .
1214Beware that it really means that the named user(s) can log in as
1215.Em anybody ,
1216which includes bin, daemon, adm, and other accounts that own critical
1217binaries and directories.
1218Using a user name practically grants the user root access.
1219The only valid use for user names that I can think
1220of is in negative entries.
1221.Pp
1222Note that this warning also applies to rsh/rlogin.
1223.It Pa /etc/shosts.equiv
1224This is processed exactly as
1225.Pa /etc/hosts.equiv .
1226However, this file may be useful in environments that want to run both
1227rsh/rlogin and ssh.
1228.It Pa $HOME/.ssh/environment
1229This file is read into the environment at login (if it exists).
1230It can only contain empty lines, comment lines (that start with
1231.Ql # ) ,
1232and assignment lines of the form name=value.
1233The file should be writable
1234only by the user; it need not be readable by anyone else.
1235.It Pa $HOME/.ssh/rc
1236If this file exists, it is run with /bin/sh after reading the
1237environment files but before starting the user's shell or command.
1238If X11 spoofing is in use, this will receive the "proto cookie" pair in
1239standard input (and
1240.Ev DISPLAY
1241in environment).
1242This must call
1243.Xr xauth 1
1244in that case.
1245.Pp
1246The primary purpose of this file is to run any initialization routines
1247which may be needed before the user's home directory becomes
1248accessible; AFS is a particular example of such an environment.
1249.Pp
1250This file will probably contain some initialization code followed by
1251something similar to:
1252.Bd -literal
1253 if read proto cookie; then
1254 echo add $DISPLAY $proto $cookie | xauth -q -
1255 fi
1256.Ed
1257.Pp
1258If this file does not exist,
1259.Pa /etc/sshrc
1260is run, and if that
1261does not exist either, xauth is used to store the cookie.
1262.Pp
1263This file should be writable only by the user, and need not be
1264readable by anyone else.
1265.It Pa /etc/sshrc
1266Like
1267.Pa $HOME/.ssh/rc .
1268This can be used to specify
1269machine-specific login-time initializations globally.
1270This file should be writable only by root, and should be world-readable.
1271.El
1272.Sh AUTHORS
1273OpenSSH is a derivative of the original and free
1274ssh 1.2.12 release by Tatu Ylonen.
1275Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
1276Theo de Raadt and Dug Song
1277removed many bugs, re-added newer features and
1278created OpenSSH.
1279Markus Friedl contributed the support for SSH
1280protocol versions 1.5 and 2.0.
1281.Sh SEE ALSO
1282.Xr scp 1 ,
1283.Xr sftp 1 ,
1284.Xr ssh 1 ,
1285.Xr ssh-add 1 ,
1286.Xr ssh-agent 1 ,
1287.Xr ssh-keygen 1 ,
1288.Xr login.conf 5 ,
1289.Xr moduli 5 ,
1290.Xr sftp-server 8
1291.Rs
1292.%A T. Ylonen
1293.%A T. Kivinen
1294.%A M. Saarinen
1295.%A T. Rinne
1296.%A S. Lehtinen
1297.%T "SSH Protocol Architecture"
1298.%N draft-ietf-secsh-architecture-09.txt
1299.%D July 2001
1300.%O work in progress material
1301.Re
1302.Rs
1303.%A M. Friedl
1304.%A N. Provos
1305.%A W. A. Simpson
1306.%T "Diffie-Hellman Group Exchange for the SSH Transport Layer Protocol"
1307.%N draft-ietf-secsh-dh-group-exchange-01.txt
1308.%D April 2001
1309.%O work in progress material
1310.Re
This page took 0.050605 seconds and 5 git commands to generate.