xref: /freebsd/crypto/openssh/sshd.8 (revision 4f52dfbb8d6c4d446500c5b097e3806ec219fbd4)
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.291 2017/06/24 06:28:50 jmc Exp $
37.\" $FreeBSD$
38.Dd $Mdocdate: June 24 2017 $
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,
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 to 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 host name.
659When
660.Nm sshd
661is authenticating a client, such as when using
662.Cm HostbasedAuthentication ,
663this will be the canonical client host name.
664When
665.Xr ssh 1
666is authenticating a server, this will be the host name
667given by the user, the value of the
668.Xr ssh 1
669.Cm HostkeyAlias
670if it was specified, or the canonical server hostname if the
671.Xr ssh 1
672.Cm CanonicalizeHostname
673option was used.
674.Pp
675A pattern may also be preceded by
676.Ql \&!
677to indicate negation: if the host name matches a negated
678pattern, it is not accepted (by that line) even if it matched another
679pattern on the line.
680A hostname or address may optionally be enclosed within
681.Ql \&[
682and
683.Ql \&]
684brackets then followed by
685.Ql \&:
686and a non-standard port number.
687.Pp
688Alternately, hostnames may be stored in a hashed form which hides host names
689and addresses should the file's contents be disclosed.
690Hashed hostnames start with a
691.Ql |
692character.
693Only one hashed hostname may appear on a single line and none of the above
694negation or wildcard operators may be applied.
695.Pp
696The keytype and base64-encoded key are taken directly from the host key; they
697can be obtained, for example, from
698.Pa /etc/ssh/ssh_host_rsa_key.pub .
699The optional comment field continues to the end of the line, and is not used.
700.Pp
701Lines starting with
702.Ql #
703and empty lines are ignored as comments.
704.Pp
705When performing host authentication, authentication is accepted if any
706matching line has the proper key; either one that matches exactly or,
707if the server has presented a certificate for authentication, the key
708of the certification authority that signed the certificate.
709For a key to be trusted as a certification authority, it must use the
710.Dq @cert-authority
711marker described above.
712.Pp
713The known hosts file also provides a facility to mark keys as revoked,
714for example when it is known that the associated private key has been
715stolen.
716Revoked keys are specified by including the
717.Dq @revoked
718marker at the beginning of the key line, and are never accepted for
719authentication or as certification authorities, but instead will
720produce a warning from
721.Xr ssh 1
722when they are encountered.
723.Pp
724It is permissible (but not
725recommended) to have several lines or different host keys for the same
726names.
727This will inevitably happen when short forms of host names
728from different domains are put in the file.
729It is possible
730that the files contain conflicting information; authentication is
731accepted if valid information can be found from either file.
732.Pp
733Note that the lines in these files are typically hundreds of characters
734long, and you definitely don't want to type in the host keys by hand.
735Rather, generate them by a script,
736.Xr ssh-keyscan 1
737or by taking, for example,
738.Pa /etc/ssh/ssh_host_rsa_key.pub
739and adding the host names at the front.
740.Xr ssh-keygen 1
741also offers some basic automated editing for
742.Pa ~/.ssh/known_hosts
743including removing hosts matching a host name and converting all host
744names to their hashed representations.
745.Pp
746An example ssh_known_hosts file:
747.Bd -literal -offset 3n
748# Comments allowed at start of line
749closenet,...,192.0.2.53 1024 37 159...93 closenet.example.net
750cvs.example.net,192.0.2.10 ssh-rsa AAAA1234.....=
751# A hashed hostname
752|1|JfKTdBh7rNbXkVAQCRp4OQoPfmI=|USECr3SWf1JUPsms5AqfD5QfxkM= ssh-rsa
753AAAA1234.....=
754# A revoked key
755@revoked * ssh-rsa AAAAB5W...
756# A CA key, accepted for any host in *.mydomain.com or *.mydomain.org
757@cert-authority *.mydomain.org,*.mydomain.com ssh-rsa AAAAB5W...
758.Ed
759.Sh FILES
760.Bl -tag -width Ds -compact
761.It Pa ~/.hushlogin
762This file is used to suppress printing the last login time and
763.Pa /etc/motd ,
764if
765.Cm PrintLastLog
766and
767.Cm PrintMotd ,
768respectively,
769are enabled.
770It does not suppress printing of the banner specified by
771.Cm Banner .
772.Pp
773.It Pa ~/.rhosts
774This file is used for host-based authentication (see
775.Xr ssh 1
776for more information).
777On some machines this file may need to be
778world-readable if the user's home directory is on an NFS partition,
779because
780.Nm
781reads it as root.
782Additionally, this file must be owned by the user,
783and must not have write permissions for anyone else.
784The recommended
785permission for most machines is read/write for the user, and not
786accessible by others.
787.Pp
788.It Pa ~/.shosts
789This file is used in exactly the same way as
790.Pa .rhosts ,
791but allows host-based authentication without permitting login with
792rlogin/rsh.
793.Pp
794.It Pa ~/.ssh/
795This directory is the default location for all user-specific configuration
796and authentication information.
797There is no general requirement to keep the entire contents of this directory
798secret, but the recommended permissions are read/write/execute for the user,
799and not accessible by others.
800.Pp
801.It Pa ~/.ssh/authorized_keys
802Lists the public keys (DSA, ECDSA, Ed25519, RSA)
803that can be used for logging in as this user.
804The format of this file is described above.
805The content of the file is not highly sensitive, but the recommended
806permissions are read/write for the user, and not accessible by others.
807.Pp
808If this file, the
809.Pa ~/.ssh
810directory, or the user's home directory are writable
811by other users, then the file could be modified or replaced by unauthorized
812users.
813In this case,
814.Nm
815will not allow it to be used unless the
816.Cm StrictModes
817option has been set to
818.Dq no .
819.Pp
820.It Pa ~/.ssh/environment
821This file is read into the environment at login (if it exists).
822It can only contain empty lines, comment lines (that start with
823.Ql # ) ,
824and assignment lines of the form name=value.
825The file should be writable
826only by the user; it need not be readable by anyone else.
827Environment processing is disabled by default and is
828controlled via the
829.Cm PermitUserEnvironment
830option.
831.Pp
832.It Pa ~/.ssh/known_hosts
833Contains a list of host keys for all hosts the user has logged into
834that are not already in the systemwide list of known host keys.
835The format of this file is described above.
836This file should be writable only by root/the owner and
837can, but need not be, world-readable.
838.Pp
839.It Pa ~/.ssh/rc
840Contains initialization routines to be run before
841the user's home directory becomes accessible.
842This file should be writable only by the user, and need not be
843readable by anyone else.
844.Pp
845.It Pa /etc/hosts.allow
846.It Pa /etc/hosts.deny
847Access controls that should be enforced by tcp-wrappers are defined here.
848Further details are described in
849.Xr hosts_access 5 .
850.Pp
851.It Pa /etc/hosts.equiv
852This file is for host-based authentication (see
853.Xr ssh 1 ) .
854It should only be writable by root.
855.Pp
856.It Pa /etc/moduli
857Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange"
858key exchange method.
859The file format is described in
860.Xr moduli 5 .
861If no usable groups are found in this file then fixed internal groups will
862be used.
863.Pp
864.It Pa /etc/motd
865See
866.Xr motd 5 .
867.Pp
868.It Pa /etc/nologin
869If this file exists,
870.Nm
871refuses to let anyone except root log in.
872The contents of the file
873are displayed to anyone trying to log in, and non-root connections are
874refused.
875The file should be world-readable.
876.Pp
877.It Pa /etc/shosts.equiv
878This file is used in exactly the same way as
879.Pa hosts.equiv ,
880but allows host-based authentication without permitting login with
881rlogin/rsh.
882.Pp
883.It Pa /etc/ssh/ssh_host_dsa_key
884.It Pa /etc/ssh/ssh_host_ecdsa_key
885.It Pa /etc/ssh/ssh_host_ed25519_key
886.It Pa /etc/ssh/ssh_host_rsa_key
887These files contain the private parts of the host keys.
888These files should only be owned by root, readable only by root, and not
889accessible to others.
890Note that
891.Nm
892does not start if these files are group/world-accessible.
893.Pp
894.It Pa /etc/ssh/ssh_host_dsa_key.pub
895.It Pa /etc/ssh/ssh_host_ecdsa_key.pub
896.It Pa /etc/ssh/ssh_host_ed25519_key.pub
897.It Pa /etc/ssh/ssh_host_rsa_key.pub
898These files contain the public parts of the host keys.
899These files should be world-readable but writable only by
900root.
901Their contents should match the respective private parts.
902These files are not
903really used for anything; they are provided for the convenience of
904the user so their contents can be copied to known hosts files.
905These files are created using
906.Xr ssh-keygen 1 .
907.Pp
908.It Pa /etc/ssh/ssh_known_hosts
909Systemwide list of known host keys.
910This file should be prepared by the
911system administrator to contain the public host keys of all machines in the
912organization.
913The format of this file is described above.
914This file should be writable only by root/the owner and
915should be world-readable.
916.Pp
917.It Pa /etc/ssh/sshd_config
918Contains configuration data for
919.Nm sshd .
920The file format and configuration options are described in
921.Xr sshd_config 5 .
922.Pp
923.It Pa /etc/ssh/sshrc
924Similar to
925.Pa ~/.ssh/rc ,
926it can be used to specify
927machine-specific login-time initializations globally.
928This file should be writable only by root, and should be world-readable.
929.Pp
930.It Pa /var/empty
931.Xr chroot 2
932directory used by
933.Nm
934during privilege separation in the pre-authentication phase.
935The directory should not contain any files and must be owned by root
936and not group or world-writable.
937.Pp
938.It Pa /var/run/sshd.pid
939Contains the process ID of the
940.Nm
941listening for connections (if there are several daemons running
942concurrently for different ports, this contains the process ID of the one
943started last).
944The content of this file is not sensitive; it can be world-readable.
945.El
946.Sh SEE ALSO
947.Xr scp 1 ,
948.Xr sftp 1 ,
949.Xr ssh 1 ,
950.Xr ssh-add 1 ,
951.Xr ssh-agent 1 ,
952.Xr ssh-keygen 1 ,
953.Xr ssh-keyscan 1 ,
954.Xr chroot 2 ,
955.Xr hosts_access 5 ,
956.Xr login.conf 5 ,
957.Xr moduli 5 ,
958.Xr sshd_config 5 ,
959.Xr inetd 8 ,
960.Xr sftp-server 8
961.Sh AUTHORS
962OpenSSH is a derivative of the original and free
963ssh 1.2.12 release by Tatu Ylonen.
964Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
965Theo de Raadt and Dug Song
966removed many bugs, re-added newer features and
967created OpenSSH.
968Markus Friedl contributed the support for SSH
969protocol versions 1.5 and 2.0.
970Niels Provos and Markus Friedl contributed support
971for privilege separation.
972