xref: /freebsd/crypto/openssh/sshd.8 (revision d6b92ffa)
1.\"
2.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
3.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
4.\"                    All rights reserved
5.\"
6.\" As far as I am concerned, the code I have written for this software
7.\" can be used freely for any purpose.  Any derived versions of this
8.\" software must be clearly marked as such, and if the derived work is
9.\" incompatible with the protocol description in the RFC file, it must be
10.\" called by a name other than "ssh" or "Secure Shell".
11.\"
12.\" Copyright (c) 1999,2000 Markus Friedl.  All rights reserved.
13.\" Copyright (c) 1999 Aaron Campbell.  All rights reserved.
14.\" Copyright (c) 1999 Theo de Raadt.  All rights reserved.
15.\"
16.\" Redistribution and use in source and binary forms, with or without
17.\" modification, are permitted provided that the following conditions
18.\" are met:
19.\" 1. Redistributions of source code must retain the above copyright
20.\"    notice, this list of conditions and the following disclaimer.
21.\" 2. Redistributions in binary form must reproduce the above copyright
22.\"    notice, this list of conditions and the following disclaimer in the
23.\"    documentation and/or other materials provided with the distribution.
24.\"
25.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
26.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
27.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
28.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
29.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
30.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\"
36.\" $OpenBSD: sshd.8,v 1.287 2016/11/30 02:57:40 djm Exp $
37.\" $FreeBSD$
38.Dd $Mdocdate: November 30 2016 $
39.Dt SSHD 8
40.Os
41.Sh NAME
42.Nm sshd
43.Nd OpenSSH SSH daemon
44.Sh SYNOPSIS
45.Nm sshd
46.Bk -words
47.Op Fl 46DdeiqTt
48.Op Fl C Ar connection_spec
49.Op Fl c Ar host_certificate_file
50.Op Fl E Ar log_file
51.Op Fl f Ar config_file
52.Op Fl g Ar login_grace_time
53.Op Fl h Ar host_key_file
54.Op Fl o Ar option
55.Op Fl p Ar port
56.Op Fl u Ar len
57.Ek
58.Sh DESCRIPTION
59.Nm
60(OpenSSH Daemon) is the daemon program for
61.Xr ssh 1 .
62Together these programs replace rlogin and rsh,
63and provide secure encrypted communications between two untrusted hosts
64over an insecure network.
65.Pp
66.Nm
67listens for connections from clients.
68It is normally started at boot from
69.Pa /etc/rc.d/sshd .
70It forks a new
71daemon for each incoming connection.
72The forked daemons handle
73key exchange, encryption, authentication, command execution,
74and data exchange.
75.Pp
76.Nm
77can be configured using command-line options or a configuration file
78(by default
79.Xr sshd_config 5 ) ;
80command-line options override values specified in the
81configuration file.
82.Nm
83rereads its configuration file when it receives a hangup signal,
84.Dv SIGHUP ,
85by executing itself with the name and options it was started with, e.g.\&
86.Pa /usr/sbin/sshd .
87.Pp
88The options are as follows:
89.Bl -tag -width Ds
90.It Fl 4
91Forces
92.Nm
93to use IPv4 addresses only.
94.It Fl 6
95Forces
96.Nm
97to use IPv6 addresses only.
98.It Fl C Ar connection_spec
99Specify the connection parameters to use for the
100.Fl T
101extended test mode.
102If provided, any
103.Cm Match
104directives in the configuration file
105that would apply to the specified user, host, and address will be set before
106the configuration is written to standard output.
107The connection parameters are supplied as keyword=value pairs.
108The keywords are
109.Dq user ,
110.Dq host ,
111.Dq laddr ,
112.Dq lport ,
113and
114.Dq addr .
115All are required and may be supplied in any order, either with multiple
116.Fl C
117options or as a comma-separated list.
118.It Fl c Ar host_certificate_file
119Specifies a path to a certificate file to identify
120.Nm
121during key exchange.
122The certificate file must match a host key file specified using the
123.Fl h
124option or the
125.Cm HostKey
126configuration directive.
127.It Fl D
128When this option is specified,
129.Nm
130will not detach and does not become a daemon.
131This allows easy monitoring of
132.Nm sshd .
133.It Fl d
134Debug mode.
135The server sends verbose debug output to standard error,
136and does not put itself in the background.
137The server also will not fork and will only process one connection.
138This option is only intended for debugging for the server.
139Multiple
140.Fl d
141options increase the debugging level.
142Maximum is 3.
143.It Fl E Ar log_file
144Append debug logs to
145.Ar log_file
146instead of the system log.
147.It Fl e
148Write debug logs to standard error instead of the system log.
149.It Fl f Ar config_file
150Specifies the name of the configuration file.
151The default is
152.Pa /etc/ssh/sshd_config .
153.Nm
154refuses to start if there is no configuration file.
155.It Fl g Ar login_grace_time
156Gives the grace time for clients to authenticate themselves (default
157120 seconds).
158If the client fails to authenticate the user within
159this many seconds, the server disconnects and exits.
160A value of zero indicates no limit.
161.It Fl h Ar host_key_file
162Specifies a file from which a host key is read.
163This option must be given if
164.Nm
165is not run as root (as the normal
166host key files are normally not readable by anyone but root).
167The default is
168.Pa /etc/ssh/ssh_host_dsa_key ,
169.Pa /etc/ssh/ssh_host_ecdsa_key ,
170.Pa /etc/ssh/ssh_host_ed25519_key
171and
172.Pa /etc/ssh/ssh_host_rsa_key .
173It is possible to have multiple host key files for
174the different host key algorithms.
175.It Fl i
176Specifies that
177.Nm
178is being run from
179.Xr inetd 8 .
180.It Fl o Ar option
181Can be used to give options in the format used in the configuration file.
182This is useful for specifying options for which there is no separate
183command-line flag.
184For full details of the options, and their values, see
185.Xr sshd_config 5 .
186.It Fl p Ar port
187Specifies the port on which the server listens for connections
188(default 22).
189Multiple port options are permitted.
190Ports specified in the configuration file with the
191.Cm Port
192option are ignored when a command-line port is specified.
193Ports specified using the
194.Cm ListenAddress
195option override command-line ports.
196.It Fl q
197Quiet mode.
198Nothing is sent to the system log.
199Normally the beginning,
200authentication, and termination of each connection is logged.
201.It Fl T
202Extended test mode.
203Check the validity of the configuration file, output the effective configuration
204to stdout and then exit.
205Optionally,
206.Cm Match
207rules may be applied by specifying the connection parameters using one or more
208.Fl C
209options.
210.It Fl t
211Test mode.
212Only check the validity of the configuration file and sanity of the keys.
213This is useful for updating
214.Nm
215reliably as configuration options may change.
216.It Fl u Ar len
217This option is used to specify the size of the field
218in the
219.Li utmp
220structure that holds the remote host name.
221If the resolved host name is longer than
222.Ar len ,
223the dotted decimal value will be used instead.
224This allows hosts with very long host names that
225overflow this field to still be uniquely identified.
226Specifying
227.Fl u0
228indicates that only dotted decimal addresses
229should be put into the
230.Pa utmp
231file.
232.Fl u0
233may also be used to prevent
234.Nm
235from making DNS requests unless the authentication
236mechanism or configuration requires it.
237Authentication mechanisms that may require DNS include
238.Cm HostbasedAuthentication
239and using a
240.Cm from="pattern-list"
241option in a key file.
242Configuration options that require DNS include using a
243USER@HOST pattern in
244.Cm AllowUsers
245or
246.Cm DenyUsers .
247.El
248.Sh AUTHENTICATION
249The OpenSSH SSH daemon supports SSH protocol 2 only.
250Each host has a host-specific key,
251used to identify the host.
252Whenever a client connects, the daemon responds with its public
253host key.
254The client compares the
255host key against its own database to verify that it has not changed.
256Forward security is provided through a Diffie-Hellman key agreement.
257This key agreement results in a shared session key.
258The rest of the session is encrypted using a symmetric cipher, currently
259128-bit AES, Blowfish, 3DES, CAST128, Arcfour, 192-bit AES, or 256-bit AES.
260The client selects the encryption algorithm
261to use from those offered by the server.
262Additionally, session integrity is provided
263through a cryptographic message authentication code
264(hmac-md5, hmac-sha1, umac-64, umac-128, hmac-ripemd160,
265hmac-sha2-256 or hmac-sha2-512).
266.Pp
267Finally, the server and the client enter an authentication dialog.
268The client tries to authenticate itself using
269host-based authentication,
270public key authentication,
271challenge-response authentication,
272or password authentication.
273.Pp
274Regardless of the authentication type, the account is checked to
275ensure that it is accessible.  An account is not accessible if it is
276locked, listed in
277.Cm DenyUsers
278or its group is listed in
279.Cm DenyGroups
280\&.  The definition of a locked account is system dependant. Some platforms
281have their own account database (eg AIX) and some modify the passwd field (
282.Ql \&*LK\&*
283on Solaris and UnixWare,
284.Ql \&*
285on HP-UX, containing
286.Ql Nologin
287on Tru64,
288a leading
289.Ql \&*LOCKED\&*
290on FreeBSD and a leading
291.Ql \&!
292on most Linuxes).
293If there is a requirement to disable password authentication
294for the account while allowing still public-key, then the passwd field
295should be set to something other than these values (eg
296.Ql NP
297or
298.Ql \&*NP\&*
299).
300.Pp
301If the client successfully authenticates itself, a dialog for
302preparing the session is entered.
303At this time the client may request
304things like allocating a pseudo-tty, forwarding X11 connections,
305forwarding TCP connections, or forwarding the authentication agent
306connection over the secure channel.
307.Pp
308After this, the client either requests a shell or execution of a command.
309The sides then enter session mode.
310In this mode, either side may send
311data at any time, and such data is forwarded to/from the shell or
312command on the server side, and the user terminal in the client side.
313.Pp
314When the user program terminates and all forwarded X11 and other
315connections have been closed, the server sends command exit status to
316the client, and both sides exit.
317.Sh LOGIN PROCESS
318When a user successfully logs in,
319.Nm
320does the following:
321.Bl -enum -offset indent
322.It
323If the login is on a tty, and no command has been specified,
324prints last login time and
325.Pa /etc/motd
326(unless prevented in the configuration file or by
327.Pa ~/.hushlogin ;
328see the
329.Sx FILES
330section).
331.It
332If the login is on a tty, records login time.
333.It
334Checks
335.Pa /etc/nologin and
336.Pa /var/run/nologin ;
337if one exists, it prints the contents and quits
338(unless root).
339.It
340Changes to run with normal user privileges.
341.It
342Sets up basic environment.
343.It
344Reads the file
345.Pa ~/.ssh/environment ,
346if it exists, and users are allowed to change their environment.
347See the
348.Cm PermitUserEnvironment
349option in
350.Xr sshd_config 5 .
351.It
352Changes to user's home directory.
353.It
354If
355.Pa ~/.ssh/rc
356exists and the
357.Xr sshd_config 5
358.Cm PermitUserRC
359option is set, runs it; else if
360.Pa /etc/ssh/sshrc
361exists, runs
362it; otherwise runs
363.Xr xauth 1 .
364The
365.Dq rc
366files are given the X11
367authentication protocol and cookie in standard input.
368See
369.Sx SSHRC ,
370below.
371.It
372Runs user's shell or command.
373All commands are run under the user's login shell as specified in the
374system password database.
375.El
376.Sh SSHRC
377If the file
378.Pa ~/.ssh/rc
379exists,
380.Xr sh 1
381runs it after reading the
382environment files but before starting the user's shell or command.
383It must not produce any output on stdout; stderr must be used
384instead.
385If X11 forwarding is in use, it will receive the "proto cookie" pair in
386its standard input (and
387.Ev DISPLAY
388in its environment).
389The script must call
390.Xr xauth 1
391because
392.Nm
393will not run xauth automatically to add X11 cookies.
394.Pp
395The primary purpose of this file is to run any initialization routines
396which may be needed before the user's home directory becomes
397accessible; AFS is a particular example of such an environment.
398.Pp
399This file will probably contain some initialization code followed by
400something similar to:
401.Bd -literal -offset 3n
402if read proto cookie && [ -n "$DISPLAY" ]; then
403	if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
404		# X11UseLocalhost=yes
405		echo add unix:`echo $DISPLAY |
406		    cut -c11-` $proto $cookie
407	else
408		# X11UseLocalhost=no
409		echo add $DISPLAY $proto $cookie
410	fi | xauth -q -
411fi
412.Ed
413.Pp
414If this file does not exist,
415.Pa /etc/ssh/sshrc
416is run, and if that
417does not exist either, xauth is used to add the cookie.
418.Sh AUTHORIZED_KEYS FILE FORMAT
419.Cm AuthorizedKeysFile
420specifies the files containing public keys for
421public key authentication;
422if this option is not specified, the default is
423.Pa ~/.ssh/authorized_keys
424and
425.Pa ~/.ssh/authorized_keys2 .
426Each line of the file contains one
427key (empty lines and lines starting with a
428.Ql #
429are ignored as
430comments).
431Public keys consist of the following space-separated fields:
432options, keytype, base64-encoded key, comment.
433The options field is optional.
434The keytype is
435.Dq ecdsa-sha2-nistp256 ,
436.Dq ecdsa-sha2-nistp384 ,
437.Dq ecdsa-sha2-nistp521 ,
438.Dq ssh-ed25519 ,
439.Dq ssh-dss
440or
441.Dq ssh-rsa ;
442the comment field is not used for anything (but may be convenient for the
443user to identify the key).
444.Pp
445Note that lines in this file can be several hundred bytes long
446(because of the size of the public key encoding) up to a limit of
4478 kilobytes, which permits DSA keys up to 8 kilobits and RSA
448keys up to 16 kilobits.
449You don't want to type them in; instead, copy the
450.Pa id_dsa.pub ,
451.Pa id_ecdsa.pub ,
452.Pa id_ed25519.pub ,
453or the
454.Pa id_rsa.pub
455file and edit it.
456.Pp
457.Nm
458enforces a minimum RSA key modulus size of 768 bits.
459.Pp
460The options (if present) consist of comma-separated option
461specifications.
462No spaces are permitted, except within double quotes.
463The following option specifications are supported (note
464that option keywords are case-insensitive):
465.Bl -tag -width Ds
466.It Cm agent-forwarding
467Enable authentication agent forwarding previously disabled by the
468.Cm restrict
469option.
470.It Cm cert-authority
471Specifies that the listed key is a certification authority (CA) that is
472trusted to validate signed certificates for user authentication.
473.Pp
474Certificates may encode access restrictions similar to these key options.
475If both certificate restrictions and key options are present, the most
476restrictive union of the two is applied.
477.It Cm command="command"
478Specifies that the command is executed whenever this key is used for
479authentication.
480The command supplied by the user (if any) is ignored.
481The command is run on a pty if the client requests a pty;
482otherwise it is run without a tty.
483If an 8-bit clean channel is required,
484one must not request a pty or should specify
485.Cm no-pty .
486A quote may be included in the command by quoting it with a backslash.
487.Pp
488This option might be useful
489to restrict certain public keys to perform just a specific operation.
490An example might be a key that permits remote backups but nothing else.
491Note that the client may specify TCP and/or X11
492forwarding unless they are explicitly prohibited, e.g. using the
493.Cm restrict
494key option.
495.Pp
496The command originally supplied by the client is available in the
497.Ev SSH_ORIGINAL_COMMAND
498environment variable.
499Note that this option applies to shell, command or subsystem execution.
500Also note that this command may be superseded by a
501.Xr sshd_config 5
502.Cm ForceCommand
503directive.
504.Pp
505If a command is specified and a forced-command is embedded in a certificate
506used for authentication, then the certificate will be accepted only if the
507two commands are identical.
508.It Cm environment="NAME=value"
509Specifies that the string is to be added to the environment when
510logging in using this key.
511Environment variables set this way
512override other default environment values.
513Multiple options of this type are permitted.
514Environment processing is disabled by default and is
515controlled via the
516.Cm PermitUserEnvironment
517option.
518.It Cm from="pattern-list"
519Specifies that in addition to public key authentication, either the canonical
520name of the remote host or its IP address must be present in the
521comma-separated list of patterns.
522See PATTERNS in
523.Xr ssh_config 5
524for more information on patterns.
525.Pp
526In addition to the wildcard matching that may be applied to hostnames or
527addresses, a
528.Cm from
529stanza may match IP addresses using CIDR address/masklen notation.
530.Pp
531The purpose of this option is to optionally increase security: public key
532authentication by itself does not trust the network or name servers or
533anything (but the key); however, if somebody somehow steals the key, the key
534permits an intruder to log in from anywhere in the world.
535This additional option makes using a stolen key more difficult (name
536servers and/or routers would have to be compromised in addition to
537just the key).
538.It Cm no-agent-forwarding
539Forbids authentication agent forwarding when this key is used for
540authentication.
541.It Cm no-port-forwarding
542Forbids TCP forwarding when this key is used for authentication.
543Any port forward requests by the client will return an error.
544This might be used, e.g. in connection with the
545.Cm command
546option.
547.It Cm no-pty
548Prevents tty allocation (a request to allocate a pty will fail).
549.It Cm no-user-rc
550Disables execution of
551.Pa ~/.ssh/rc .
552.It Cm no-X11-forwarding
553Forbids X11 forwarding when this key is used for authentication.
554Any X11 forward requests by the client will return an error.
555.It Cm permitopen="host:port"
556Limit local port forwarding with
557.Xr ssh 1
558.Fl L
559such that it may only connect to the specified host and port.
560IPv6 addresses can be specified by enclosing the address in square brackets.
561Multiple
562.Cm permitopen
563options may be applied separated by commas.
564No pattern matching is performed on the specified hostnames,
565they must be literal domains or addresses.
566A port specification of
567.Cm *
568matches any port.
569.It Cm port-forwarding
570Enable port forwarding previously disabled by the
571.Cm restrict
572.It Cm principals="principals"
573On a
574.Cm cert-authority
575line, specifies allowed principals for certificate authentication as a
576comma-separated list.
577At least one name from the list must appear in the certificate's
578list of principals for the certificate to be accepted.
579This option is ignored for keys that are not marked as trusted certificate
580signers using the
581.Cm cert-authority
582option.
583.It Cm pty
584Permits tty allocation previously disabled by the
585.Cm restrict
586option.
587.It Cm restrict
588Enable all restrictions, i.e. disable port, agent and X11 forwarding,
589as well as disabling PTY allocation
590and execution of
591.Pa ~/.ssh/rc .
592If any future restriction capabilities are added to authorized_keys files
593they will be included in this set.
594.It Cm tunnel="n"
595Force a
596.Xr tun 4
597device on the server.
598Without this option, the next available device will be used if
599the client requests a tunnel.
600.It Cm user-rc
601Enables execution of
602.Pa ~/.ssh/rc
603previously disabled by the
604.Cm restrict
605option.
606.It Cm X11-forwarding
607Permits X11 forwarding previously disabled by the
608.Cm restrict
609option.
610.El
611.Pp
612An example authorized_keys file:
613.Bd -literal -offset 3n
614# Comments allowed at start of line
615ssh-rsa AAAAB3Nza...LiPk== user@example.net
616from="*.sales.example.net,!pc.sales.example.net" ssh-rsa
617AAAAB2...19Q== john@example.net
618command="dump /home",no-pty,no-port-forwarding ssh-dss
619AAAAC3...51R== example.net
620permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-dss
621AAAAB5...21S==
622tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...==
623jane@example.net
624restrict,command="uptime" ssh-rsa AAAA1C8...32Tv==
625user@example.net
626restrict,pty,command="nethack" ssh-rsa AAAA1f8...IrrC5==
627user@example.net
628.Ed
629.Sh SSH_KNOWN_HOSTS FILE FORMAT
630The
631.Pa /etc/ssh/ssh_known_hosts
632and
633.Pa ~/.ssh/known_hosts
634files contain host public keys for all known hosts.
635The global file should
636be prepared by the administrator (optional), and the per-user file is
637maintained automatically: whenever the user connects from an unknown host,
638its key is added to the per-user file.
639.Pp
640Each line in these files contains the following fields: markers (optional),
641hostnames, keytype, base64-encoded key, comment.
642The fields are separated by spaces.
643.Pp
644The marker is optional, but if it is present then it must be one of
645.Dq @cert-authority ,
646to indicate that the line contains a certification authority (CA) key,
647or
648.Dq @revoked ,
649to indicate that the key contained on the line is revoked and must not ever
650be accepted.
651Only one marker should be used on a key line.
652.Pp
653Hostnames is a comma-separated list of patterns
654.Pf ( Ql *
655and
656.Ql \&?
657act as
658wildcards); each pattern in turn is matched against the canonical host
659name (when authenticating a client) or against the user-supplied
660name (when authenticating a server).
661A pattern may also be preceded by
662.Ql \&!
663to indicate negation: if the host name matches a negated
664pattern, it is not accepted (by that line) even if it matched another
665pattern on the line.
666A hostname or address may optionally be enclosed within
667.Ql \&[
668and
669.Ql \&]
670brackets then followed by
671.Ql \&:
672and a non-standard port number.
673.Pp
674Alternately, hostnames may be stored in a hashed form which hides host names
675and addresses should the file's contents be disclosed.
676Hashed hostnames start with a
677.Ql |
678character.
679Only one hashed hostname may appear on a single line and none of the above
680negation or wildcard operators may be applied.
681.Pp
682The keytype and base64-encoded key are taken directly from the host key; they
683can be obtained, for example, from
684.Pa /etc/ssh/ssh_host_rsa_key.pub .
685The optional comment field continues to the end of the line, and is not used.
686.Pp
687Lines starting with
688.Ql #
689and empty lines are ignored as comments.
690.Pp
691When performing host authentication, authentication is accepted if any
692matching line has the proper key; either one that matches exactly or,
693if the server has presented a certificate for authentication, the key
694of the certification authority that signed the certificate.
695For a key to be trusted as a certification authority, it must use the
696.Dq @cert-authority
697marker described above.
698.Pp
699The known hosts file also provides a facility to mark keys as revoked,
700for example when it is known that the associated private key has been
701stolen.
702Revoked keys are specified by including the
703.Dq @revoked
704marker at the beginning of the key line, and are never accepted for
705authentication or as certification authorities, but instead will
706produce a warning from
707.Xr ssh 1
708when they are encountered.
709.Pp
710It is permissible (but not
711recommended) to have several lines or different host keys for the same
712names.
713This will inevitably happen when short forms of host names
714from different domains are put in the file.
715It is possible
716that the files contain conflicting information; authentication is
717accepted if valid information can be found from either file.
718.Pp
719Note that the lines in these files are typically hundreds of characters
720long, and you definitely don't want to type in the host keys by hand.
721Rather, generate them by a script,
722.Xr ssh-keyscan 1
723or by taking, for example,
724.Pa /etc/ssh/ssh_host_rsa_key.pub
725and adding the host names at the front.
726.Xr ssh-keygen 1
727also offers some basic automated editing for
728.Pa ~/.ssh/known_hosts
729including removing hosts matching a host name and converting all host
730names to their hashed representations.
731.Pp
732An example ssh_known_hosts file:
733.Bd -literal -offset 3n
734# Comments allowed at start of line
735closenet,...,192.0.2.53 1024 37 159...93 closenet.example.net
736cvs.example.net,192.0.2.10 ssh-rsa AAAA1234.....=
737# A hashed hostname
738|1|JfKTdBh7rNbXkVAQCRp4OQoPfmI=|USECr3SWf1JUPsms5AqfD5QfxkM= ssh-rsa
739AAAA1234.....=
740# A revoked key
741@revoked * ssh-rsa AAAAB5W...
742# A CA key, accepted for any host in *.mydomain.com or *.mydomain.org
743@cert-authority *.mydomain.org,*.mydomain.com ssh-rsa AAAAB5W...
744.Ed
745.Sh FILES
746.Bl -tag -width Ds -compact
747.It Pa ~/.hushlogin
748This file is used to suppress printing the last login time and
749.Pa /etc/motd ,
750if
751.Cm PrintLastLog
752and
753.Cm PrintMotd ,
754respectively,
755are enabled.
756It does not suppress printing of the banner specified by
757.Cm Banner .
758.Pp
759.It Pa ~/.rhosts
760This file is used for host-based authentication (see
761.Xr ssh 1
762for more information).
763On some machines this file may need to be
764world-readable if the user's home directory is on an NFS partition,
765because
766.Nm
767reads it as root.
768Additionally, this file must be owned by the user,
769and must not have write permissions for anyone else.
770The recommended
771permission for most machines is read/write for the user, and not
772accessible by others.
773.Pp
774.It Pa ~/.shosts
775This file is used in exactly the same way as
776.Pa .rhosts ,
777but allows host-based authentication without permitting login with
778rlogin/rsh.
779.Pp
780.It Pa ~/.ssh/
781This directory is the default location for all user-specific configuration
782and authentication information.
783There is no general requirement to keep the entire contents of this directory
784secret, but the recommended permissions are read/write/execute for the user,
785and not accessible by others.
786.Pp
787.It Pa ~/.ssh/authorized_keys
788Lists the public keys (DSA, ECDSA, Ed25519, RSA)
789that can be used for logging in as this user.
790The format of this file is described above.
791The content of the file is not highly sensitive, but the recommended
792permissions are read/write for the user, and not accessible by others.
793.Pp
794If this file, the
795.Pa ~/.ssh
796directory, or the user's home directory are writable
797by other users, then the file could be modified or replaced by unauthorized
798users.
799In this case,
800.Nm
801will not allow it to be used unless the
802.Cm StrictModes
803option has been set to
804.Dq no .
805.Pp
806.It Pa ~/.ssh/environment
807This file is read into the environment at login (if it exists).
808It can only contain empty lines, comment lines (that start with
809.Ql # ) ,
810and assignment lines of the form name=value.
811The file should be writable
812only by the user; it need not be readable by anyone else.
813Environment processing is disabled by default and is
814controlled via the
815.Cm PermitUserEnvironment
816option.
817.Pp
818.It Pa ~/.ssh/known_hosts
819Contains a list of host keys for all hosts the user has logged into
820that are not already in the systemwide list of known host keys.
821The format of this file is described above.
822This file should be writable only by root/the owner and
823can, but need not be, world-readable.
824.Pp
825.It Pa ~/.ssh/rc
826Contains initialization routines to be run before
827the user's home directory becomes accessible.
828This file should be writable only by the user, and need not be
829readable by anyone else.
830.Pp
831.It Pa /etc/hosts.allow
832.It Pa /etc/hosts.deny
833Access controls that should be enforced by tcp-wrappers are defined here.
834Further details are described in
835.Xr hosts_access 5 .
836.Pp
837.It Pa /etc/hosts.equiv
838This file is for host-based authentication (see
839.Xr ssh 1 ) .
840It should only be writable by root.
841.Pp
842.It Pa /etc/moduli
843Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange"
844key exchange method.
845The file format is described in
846.Xr moduli 5 .
847If no usable groups are found in this file then fixed internal groups will
848be used.
849.Pp
850.It Pa /etc/motd
851See
852.Xr motd 5 .
853.Pp
854.It Pa /etc/nologin
855If this file exists,
856.Nm
857refuses to let anyone except root log in.
858The contents of the file
859are displayed to anyone trying to log in, and non-root connections are
860refused.
861The file should be world-readable.
862.Pp
863.It Pa /etc/shosts.equiv
864This file is used in exactly the same way as
865.Pa hosts.equiv ,
866but allows host-based authentication without permitting login with
867rlogin/rsh.
868.Pp
869.It Pa /etc/ssh/ssh_host_dsa_key
870.It Pa /etc/ssh/ssh_host_ecdsa_key
871.It Pa /etc/ssh/ssh_host_ed25519_key
872.It Pa /etc/ssh/ssh_host_rsa_key
873These files contain the private parts of the host keys.
874These files should only be owned by root, readable only by root, and not
875accessible to others.
876Note that
877.Nm
878does not start if these files are group/world-accessible.
879.Pp
880.It Pa /etc/ssh/ssh_host_dsa_key.pub
881.It Pa /etc/ssh/ssh_host_ecdsa_key.pub
882.It Pa /etc/ssh/ssh_host_ed25519_key.pub
883.It Pa /etc/ssh/ssh_host_rsa_key.pub
884These files contain the public parts of the host keys.
885These files should be world-readable but writable only by
886root.
887Their contents should match the respective private parts.
888These files are not
889really used for anything; they are provided for the convenience of
890the user so their contents can be copied to known hosts files.
891These files are created using
892.Xr ssh-keygen 1 .
893.Pp
894.It Pa /etc/ssh/ssh_known_hosts
895Systemwide list of known host keys.
896This file should be prepared by the
897system administrator to contain the public host keys of all machines in the
898organization.
899The format of this file is described above.
900This file should be writable only by root/the owner and
901should be world-readable.
902.Pp
903.It Pa /etc/ssh/sshd_config
904Contains configuration data for
905.Nm sshd .
906The file format and configuration options are described in
907.Xr sshd_config 5 .
908.Pp
909.It Pa /etc/ssh/sshrc
910Similar to
911.Pa ~/.ssh/rc ,
912it can be used to specify
913machine-specific login-time initializations globally.
914This file should be writable only by root, and should be world-readable.
915.Pp
916.It Pa /var/empty
917.Xr chroot 2
918directory used by
919.Nm
920during privilege separation in the pre-authentication phase.
921The directory should not contain any files and must be owned by root
922and not group or world-writable.
923.Pp
924.It Pa /var/run/sshd.pid
925Contains the process ID of the
926.Nm
927listening for connections (if there are several daemons running
928concurrently for different ports, this contains the process ID of the one
929started last).
930The content of this file is not sensitive; it can be world-readable.
931.El
932.Sh SEE ALSO
933.Xr scp 1 ,
934.Xr sftp 1 ,
935.Xr ssh 1 ,
936.Xr ssh-add 1 ,
937.Xr ssh-agent 1 ,
938.Xr ssh-keygen 1 ,
939.Xr ssh-keyscan 1 ,
940.Xr chroot 2 ,
941.Xr hosts_access 5 ,
942.Xr login.conf 5 ,
943.Xr moduli 5 ,
944.Xr sshd_config 5 ,
945.Xr inetd 8 ,
946.Xr sftp-server 8
947.Sh AUTHORS
948OpenSSH is a derivative of the original and free
949ssh 1.2.12 release by Tatu Ylonen.
950Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
951Theo de Raadt and Dug Song
952removed many bugs, re-added newer features and
953created OpenSSH.
954Markus Friedl contributed the support for SSH
955protocol versions 1.5 and 2.0.
956Niels Provos and Markus Friedl contributed support
957for privilege separation.
958