summaryrefslogtreecommitdiff
path: root/ssh.1
diff options
context:
space:
mode:
Diffstat (limited to 'ssh.1')
-rw-r--r--ssh.11185
1 files changed, 677 insertions, 508 deletions
diff --git a/ssh.1 b/ssh.1
index b0749763b..f4c677628 100644
--- a/ssh.1
+++ b/ssh.1
@@ -34,7 +34,7 @@
34.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 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. 35.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36.\" 36.\"
37.\" $OpenBSD: ssh.1,v 1.209 2005/07/06 09:33:05 dtucker Exp $ 37.\" $OpenBSD: ssh.1,v 1.253 2006/01/30 13:37:49 jmc Exp $
38.Dd September 25, 1999 38.Dd September 25, 1999
39.Dt SSH 1 39.Dt SSH 1
40.Os 40.Os
@@ -43,21 +43,29 @@
43.Nd OpenSSH SSH client (remote login program) 43.Nd OpenSSH SSH client (remote login program)
44.Sh SYNOPSIS 44.Sh SYNOPSIS
45.Nm ssh 45.Nm ssh
46.Bk -words
47.Op Fl 1246AaCfgkMNnqsTtVvXxY 46.Op Fl 1246AaCfgkMNnqsTtVvXxY
48.Op Fl b Ar bind_address 47.Op Fl b Ar bind_address
49.Op Fl c Ar cipher_spec 48.Op Fl c Ar cipher_spec
50.Op Fl D Ar port 49.Oo Fl D\ \&
50.Sm off
51.Oo Ar bind_address : Oc
52.Ar port
53.Sm on
54.Oc
51.Op Fl e Ar escape_char 55.Op Fl e Ar escape_char
52.Op Fl F Ar configfile 56.Op Fl F Ar configfile
57.Bk -words
53.Op Fl i Ar identity_file 58.Op Fl i Ar identity_file
59.Ek
54.Oo Fl L\ \& 60.Oo Fl L\ \&
55.Sm off 61.Sm off
56.Oo Ar bind_address : Oc 62.Oo Ar bind_address : Oc
57.Ar port : host : hostport 63.Ar port : host : hostport
58.Sm on 64.Sm on
59.Oc 65.Oc
66.Bk -words
60.Op Fl l Ar login_name 67.Op Fl l Ar login_name
68.Ek
61.Op Fl m Ar mac_spec 69.Op Fl m Ar mac_spec
62.Op Fl O Ar ctl_cmd 70.Op Fl O Ar ctl_cmd
63.Op Fl o Ar option 71.Op Fl o Ar option
@@ -69,6 +77,8 @@
69.Sm on 77.Sm on
70.Oc 78.Oc
71.Op Fl S Ar ctl_path 79.Op Fl S Ar ctl_path
80.Bk -words
81.Op Fl w Ar tunnel : Ns Ar tunnel
72.Oo Ar user Ns @ Oc Ns Ar hostname 82.Oo Ar user Ns @ Oc Ns Ar hostname
73.Op Ar command 83.Op Ar command
74.Ek 84.Ek
@@ -79,7 +89,7 @@ executing commands on a remote machine.
79It is intended to replace rlogin and rsh, 89It is intended to replace rlogin and rsh,
80and provide secure encrypted communications between 90and provide secure encrypted communications between
81two untrusted hosts over an insecure network. 91two untrusted hosts over an insecure network.
82X11 connections and arbitrary TCP/IP ports 92X11 connections and arbitrary TCP ports
83can also be forwarded over the secure channel. 93can also be forwarded over the secure channel.
84.Pp 94.Pp
85.Nm 95.Nm
@@ -90,306 +100,12 @@ connects and logs into the specified
90name). 100name).
91The user must prove 101The user must prove
92his/her identity to the remote machine using one of several methods 102his/her identity to the remote machine using one of several methods
93depending on the protocol version used. 103depending on the protocol version used (see below).
94.Pp 104.Pp
95If 105If
96.Ar command 106.Ar command
97is specified, 107is specified,
98.Ar command 108it is executed on the remote host instead of a login shell.
99is executed on the remote host instead of a login shell.
100.Ss SSH protocol version 1
101The first authentication method is the
102.Em rhosts
103or
104.Em hosts.equiv
105method combined with RSA-based host authentication.
106If the machine the user logs in from is listed in
107.Pa /etc/hosts.equiv
108or
109.Pa /etc/shosts.equiv
110on the remote machine, and the user names are
111the same on both sides, or if the files
112.Pa ~/.rhosts
113or
114.Pa ~/.shosts
115exist in the user's home directory on the
116remote machine and contain a line containing the name of the client
117machine and the name of the user on that machine, the user is
118considered for log in.
119Additionally, if the server can verify the client's
120host key (see
121.Pa /etc/ssh/ssh_known_hosts
122and
123.Pa ~/.ssh/known_hosts
124in the
125.Sx FILES
126section), only then is login permitted.
127This authentication method closes security holes due to IP
128spoofing, DNS spoofing and routing spoofing.
129[Note to the administrator:
130.Pa /etc/hosts.equiv ,
131.Pa ~/.rhosts ,
132and the rlogin/rsh protocol in general, are inherently insecure and should be
133disabled if security is desired.]
134.Pp
135As a second authentication method,
136.Nm
137supports RSA based authentication.
138The scheme is based on public-key cryptography: there are cryptosystems
139where encryption and decryption are done using separate keys, and it
140is not possible to derive the decryption key from the encryption key.
141RSA is one such system.
142The idea is that each user creates a public/private
143key pair for authentication purposes.
144The server knows the public key, and only the user knows the private key.
145.Pp
146The file
147.Pa ~/.ssh/authorized_keys
148lists the public keys that are permitted for logging in.
149When the user logs in, the
150.Nm
151program tells the server which key pair it would like to use for
152authentication.
153The server checks if this key is permitted, and if so,
154sends the user (actually the
155.Nm
156program running on behalf of the user) a challenge, a random number,
157encrypted by the user's public key.
158The challenge can only be decrypted using the proper private key.
159The user's client then decrypts the challenge using the private key,
160proving that he/she knows the private key
161but without disclosing it to the server.
162.Pp
163.Nm
164implements the RSA authentication protocol automatically.
165The user creates his/her RSA key pair by running
166.Xr ssh-keygen 1 .
167This stores the private key in
168.Pa ~/.ssh/identity
169and stores the public key in
170.Pa ~/.ssh/identity.pub
171in the user's home directory.
172The user should then copy the
173.Pa identity.pub
174to
175.Pa ~/.ssh/authorized_keys
176in his/her home directory on the remote machine (the
177.Pa authorized_keys
178file corresponds to the conventional
179.Pa ~/.rhosts
180file, and has one key
181per line, though the lines can be very long).
182After this, the user can log in without giving the password.
183.Pp
184The most convenient way to use RSA authentication may be with an
185authentication agent.
186See
187.Xr ssh-agent 1
188for more information.
189.Pp
190If other authentication methods fail,
191.Nm
192prompts the user for a password.
193The password is sent to the remote
194host for checking; however, since all communications are encrypted,
195the password cannot be seen by someone listening on the network.
196.Ss SSH protocol version 2
197When a user connects using protocol version 2,
198similar authentication methods are available.
199Using the default values for
200.Cm PreferredAuthentications ,
201the client will try to authenticate first using the hostbased method;
202if this method fails, public key authentication is attempted,
203and finally if this method fails, keyboard-interactive and
204password authentication are tried.
205.Pp
206The public key method is similar to RSA authentication described
207in the previous section and allows the RSA or DSA algorithm to be used:
208The client uses his private key,
209.Pa ~/.ssh/id_dsa
210or
211.Pa ~/.ssh/id_rsa ,
212to sign the session identifier and sends the result to the server.
213The server checks whether the matching public key is listed in
214.Pa ~/.ssh/authorized_keys
215and grants access if both the key is found and the signature is correct.
216The session identifier is derived from a shared Diffie-Hellman value
217and is only known to the client and the server.
218.Pp
219If public key authentication fails or is not available, a password
220can be sent encrypted to the remote host to prove the user's identity.
221.Pp
222Additionally,
223.Nm
224supports hostbased or challenge response authentication.
225.Pp
226Protocol 2 provides additional mechanisms for confidentiality
227(the traffic is encrypted using AES, 3DES, Blowfish, CAST128 or Arcfour)
228and integrity (hmac-md5, hmac-sha1, hmac-ripemd160).
229Note that protocol 1 lacks a strong mechanism for ensuring the
230integrity of the connection.
231.Ss Login session and remote execution
232When the user's identity has been accepted by the server, the server
233either executes the given command, or logs into the machine and gives
234the user a normal shell on the remote machine.
235All communication with
236the remote command or shell will be automatically encrypted.
237.Pp
238If a pseudo-terminal has been allocated (normal login session), the
239user may use the escape characters noted below.
240.Pp
241If no pseudo-tty has been allocated,
242the session is transparent and can be used to reliably transfer binary data.
243On most systems, setting the escape character to
244.Dq none
245will also make the session transparent even if a tty is used.
246.Pp
247The session terminates when the command or shell on the remote
248machine exits and all X11 and TCP/IP connections have been closed.
249The exit status of the remote program is returned as the exit status of
250.Nm ssh .
251.Ss Escape Characters
252When a pseudo-terminal has been requested,
253.Nm
254supports a number of functions through the use of an escape character.
255.Pp
256A single tilde character can be sent as
257.Ic ~~
258or by following the tilde by a character other than those described below.
259The escape character must always follow a newline to be interpreted as
260special.
261The escape character can be changed in configuration files using the
262.Cm EscapeChar
263configuration directive or on the command line by the
264.Fl e
265option.
266.Pp
267The supported escapes (assuming the default
268.Ql ~ )
269are:
270.Bl -tag -width Ds
271.It Cm ~.
272Disconnect.
273.It Cm ~^Z
274Background
275.Nm ssh .
276.It Cm ~#
277List forwarded connections.
278.It Cm ~&
279Background
280.Nm
281at logout when waiting for forwarded connection / X11 sessions to terminate.
282.It Cm ~?
283Display a list of escape characters.
284.It Cm ~B
285Send a BREAK to the remote system
286(only useful for SSH protocol version 2 and if the peer supports it).
287.It Cm ~C
288Open command line.
289Currently this allows the addition of port forwardings using the
290.Fl L
291and
292.Fl R
293options (see below).
294It also allows the cancellation of existing remote port-forwardings
295using
296.Fl KR Ar hostport .
297Basic help is available, using the
298.Fl h
299option.
300.It Cm ~R
301Request rekeying of the connection
302(only useful for SSH protocol version 2 and if the peer supports it).
303.El
304.Ss X11 and TCP forwarding
305If the
306.Cm ForwardX11
307variable is set to
308.Dq yes
309(or see the description of the
310.Fl X
311and
312.Fl x
313options described later)
314and the user is using X11 (the
315.Ev DISPLAY
316environment variable is set), the connection to the X11 display is
317automatically forwarded to the remote side in such a way that any X11
318programs started from the shell (or command) will go through the
319encrypted channel, and the connection to the real X server will be made
320from the local machine.
321The user should not manually set
322.Ev DISPLAY .
323Forwarding of X11 connections can be
324configured on the command line or in configuration files.
325.Pp
326The
327.Ev DISPLAY
328value set by
329.Nm
330will point to the server machine, but with a display number greater than zero.
331This is normal, and happens because
332.Nm
333creates a
334.Dq proxy
335X server on the server machine for forwarding the
336connections over the encrypted channel.
337.Pp
338.Nm
339will also automatically set up Xauthority data on the server machine.
340For this purpose, it will generate a random authorization cookie,
341store it in Xauthority on the server, and verify that any forwarded
342connections carry this cookie and replace it by the real cookie when
343the connection is opened.
344The real authentication cookie is never
345sent to the server machine (and no cookies are sent in the plain).
346.Pp
347If the
348.Cm ForwardAgent
349variable is set to
350.Dq yes
351(or see the description of the
352.Fl A
353and
354.Fl a
355options described later) and
356the user is using an authentication agent, the connection to the agent
357is automatically forwarded to the remote side.
358.Pp
359Forwarding of arbitrary TCP/IP connections over the secure channel can
360be specified either on the command line or in a configuration file.
361One possible application of TCP/IP forwarding is a secure connection to an
362electronic purse; another is going through firewalls.
363.Ss Server authentication
364.Nm
365automatically maintains and checks a database containing
366identifications for all hosts it has ever been used with.
367Host keys are stored in
368.Pa ~/.ssh/known_hosts
369in the user's home directory.
370Additionally, the file
371.Pa /etc/ssh/ssh_known_hosts
372is automatically checked for known hosts.
373Any new hosts are automatically added to the user's file.
374If a host's identification ever changes,
375.Nm
376warns about this and disables password authentication to prevent a
377trojan horse from getting the user's password.
378Another purpose of this mechanism is to prevent man-in-the-middle attacks
379which could otherwise be used to circumvent the encryption.
380The
381.Cm StrictHostKeyChecking
382option can be used to prevent logins to machines whose
383host key is not known or has changed.
384.Pp
385.Nm
386can be configured to verify host identification using fingerprint resource
387records (SSHFP) published in DNS.
388The
389.Cm VerifyHostKeyDNS
390option can be used to control how DNS lookups are performed.
391SSHFP resource records can be generated using
392.Xr ssh-keygen 1 .
393.Pp 109.Pp
394The options are as follows: 110The options are as follows:
395.Bl -tag -width Ds 111.Bl -tag -width Ds
@@ -430,7 +146,7 @@ of the connection.
430Only useful on systems with more than one address. 146Only useful on systems with more than one address.
431.It Fl C 147.It Fl C
432Requests compression of all data (including stdin, stdout, stderr, and 148Requests compression of all data (including stdin, stdout, stderr, and
433data for forwarded X11 and TCP/IP connections). 149data for forwarded X11 and TCP connections).
434The compression algorithm is the same used by 150The compression algorithm is the same used by
435.Xr gzip 1 , 151.Xr gzip 1 ,
436and the 152and the
@@ -448,9 +164,9 @@ option.
448Selects the cipher specification for encrypting the session. 164Selects the cipher specification for encrypting the session.
449.Pp 165.Pp
450Protocol version 1 allows specification of a single cipher. 166Protocol version 1 allows specification of a single cipher.
451The suported values are 167The supported values are
452.Dq 3des , 168.Dq 3des ,
453.Dq blowfish 169.Dq blowfish ,
454and 170and
455.Dq des . 171.Dq des .
456.Ar 3des 172.Ar 3des
@@ -470,37 +186,44 @@ Its use is strongly discouraged due to cryptographic weaknesses.
470The default is 186The default is
471.Dq 3des . 187.Dq 3des .
472.Pp 188.Pp
473For protocol version 2 189For protocol version 2,
474.Ar cipher_spec 190.Ar cipher_spec
475is a comma-separated list of ciphers 191is a comma-separated list of ciphers
476listed in order of preference. 192listed in order of preference.
477The supported ciphers are 193The supported ciphers are:
478.Dq 3des-cbc , 1943des-cbc,
479.Dq aes128-cbc , 195aes128-cbc,
480.Dq aes192-cbc , 196aes192-cbc,
481.Dq aes256-cbc , 197aes256-cbc,
482.Dq aes128-ctr , 198aes128-ctr,
483.Dq aes192-ctr , 199aes192-ctr,
484.Dq aes256-ctr , 200aes256-ctr,
485.Dq arcfour128 , 201arcfour128,
486.Dq arcfour256 , 202arcfour256,
487.Dq arcfour , 203arcfour,
488.Dq blowfish-cbc , 204blowfish-cbc,
489and 205and
490.Dq cast128-cbc . 206cast128-cbc.
491The default is 207The default is:
492.Bd -literal 208.Bd -literal -offset indent
493 ``aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128, 209aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,
494 arcfour256,arcfour,aes192-cbc,aes256-cbc,aes128-ctr, 210arcfour256,arcfour,aes192-cbc,aes256-cbc,aes128-ctr,
495 aes192-ctr,aes256-ctr'' 211aes192-ctr,aes256-ctr
496.Ed 212.Ed
497.It Fl D Ar port 213.It Fl D Xo
214.Sm off
215.Oo Ar bind_address : Oc
216.Ar port
217.Sm on
218.Xc
498Specifies a local 219Specifies a local
499.Dq dynamic 220.Dq dynamic
500application-level port forwarding. 221application-level port forwarding.
501This works by allocating a socket to listen to 222This works by allocating a socket to listen to
502.Ar port 223.Ar port
503on the local side, and whenever a connection is made to this port, the 224on the local side, optionally bound to the specified
225.Ar bind_address .
226Whenever a connection is made to this port, the
504connection is forwarded over the secure channel, and the application 227connection is forwarded over the secure channel, and the application
505protocol is then used to determine where to connect to from the 228protocol is then used to determine where to connect to from the
506remote machine. 229remote machine.
@@ -509,7 +232,31 @@ Currently the SOCKS4 and SOCKS5 protocols are supported, and
509will act as a SOCKS server. 232will act as a SOCKS server.
510Only root can forward privileged ports. 233Only root can forward privileged ports.
511Dynamic port forwardings can also be specified in the configuration file. 234Dynamic port forwardings can also be specified in the configuration file.
512.It Fl e Ar ch | ^ch | none 235.Pp
236IPv6 addresses can be specified with an alternative syntax:
237.Sm off
238.Xo
239.Op Ar bind_address No /
240.Ar port
241.Xc
242.Sm on
243or by enclosing the address in square brackets.
244Only the superuser can forward privileged ports.
245By default, the local port is bound in accordance with the
246.Cm GatewayPorts
247setting.
248However, an explicit
249.Ar bind_address
250may be used to bind the connection to a specific address.
251The
252.Ar bind_address
253of
254.Dq localhost
255indicates that the listening port be bound for local use only, while an
256empty address or
257.Sq *
258indicates that the port should be available from all interfaces.
259.It Fl e Ar escape_char
513Sets the escape character for sessions with a pty (default: 260Sets the escape character for sessions with a pty (default:
514.Ql ~ ) . 261.Ql ~ ) .
515The escape character is only recognized at the beginning of a line. 262The escape character is only recognized at the beginning of a line.
@@ -545,11 +292,12 @@ something like
545.It Fl g 292.It Fl g
546Allows remote hosts to connect to local forwarded ports. 293Allows remote hosts to connect to local forwarded ports.
547.It Fl I Ar smartcard_device 294.It Fl I Ar smartcard_device
548Specifies which smartcard device to use. 295Specify the device
549The argument is the device
550.Nm 296.Nm
551should use to communicate with a smartcard used for storing the user's 297should use to communicate with a smartcard used for storing the user's
552private RSA key. 298private RSA key.
299This option is only available if support for smartcard devices
300is compiled in (default is no support).
553.It Fl i Ar identity_file 301.It Fl i Ar identity_file
554Selects a file from which the identity (private key) for 302Selects a file from which the identity (private key) for
555RSA or DSA authentication is read. 303RSA or DSA authentication is read.
@@ -621,6 +369,13 @@ Places the
621client into 369client into
622.Dq master 370.Dq master
623mode for connection sharing. 371mode for connection sharing.
372Multiple
373.Fl M
374options places
375.Nm
376into
377.Dq master
378mode with confirmation required before slave connections are accepted.
624Refer to the description of 379Refer to the description of
625.Cm ControlMaster 380.Cm ControlMaster
626in 381in
@@ -709,17 +464,20 @@ For full details of the options listed below, and their possible values, see
709.It IdentityFile 464.It IdentityFile
710.It IdentitiesOnly 465.It IdentitiesOnly
711.It KbdInteractiveDevices 466.It KbdInteractiveDevices
467.It LocalCommand
712.It LocalForward 468.It LocalForward
713.It LogLevel 469.It LogLevel
714.It MACs 470.It MACs
715.It NoHostAuthenticationForLocalhost 471.It NoHostAuthenticationForLocalhost
716.It NumberOfPasswordPrompts 472.It NumberOfPasswordPrompts
717.It PasswordAuthentication 473.It PasswordAuthentication
474.It PermitLocalCommand
718.It Port 475.It Port
719.It PreferredAuthentications 476.It PreferredAuthentications
720.It Protocol 477.It Protocol
721.It ProxyCommand 478.It ProxyCommand
722.It PubkeyAuthentication 479.It PubkeyAuthentication
480.It RekeyLimit
723.It RemoteForward 481.It RemoteForward
724.It RhostsRSAAuthentication 482.It RhostsRSAAuthentication
725.It RSAAuthentication 483.It RSAAuthentication
@@ -729,6 +487,8 @@ For full details of the options listed below, and their possible values, see
729.It SmartcardDevice 487.It SmartcardDevice
730.It StrictHostKeyChecking 488.It StrictHostKeyChecking
731.It TCPKeepAlive 489.It TCPKeepAlive
490.It Tunnel
491.It TunnelDevice
732.It UsePrivilegedPort 492.It UsePrivilegedPort
733.It User 493.It User
734.It UserKnownHostsFile 494.It UserKnownHostsFile
@@ -828,6 +588,24 @@ Multiple
828.Fl v 588.Fl v
829options increase the verbosity. 589options increase the verbosity.
830The maximum is 3. 590The maximum is 3.
591.It Fl w Ar tunnel : Ns Ar tunnel
592Requests a
593.Xr tun 4
594device on the client
595(first
596.Ar tunnel
597arg)
598and server
599(second
600.Ar tunnel
601arg).
602The devices may be specified by numerical ID or the keyword
603.Dq any ,
604which uses the next available tunnel device.
605See also the
606.Cm Tunnel
607directive in
608.Xr ssh_config 5 .
831.It Fl X 609.It Fl X
832Enables X11 forwarding. 610Enables X11 forwarding.
833This can also be specified on a per-host basis in a configuration file. 611This can also be specified on a per-host basis in a configuration file.
@@ -855,16 +633,474 @@ Enables trusted X11 forwarding.
855Trusted X11 forwardings are not subjected to the X11 SECURITY extension 633Trusted X11 forwardings are not subjected to the X11 SECURITY extension
856controls. 634controls.
857.El 635.El
858.Sh CONFIGURATION FILES 636.Pp
859.Nm 637.Nm
860may additionally obtain configuration data from 638may additionally obtain configuration data from
861a per-user configuration file and a system-wide configuration file. 639a per-user configuration file and a system-wide configuration file.
862The file format and configuration options are described in 640The file format and configuration options are described in
863.Xr ssh_config 5 . 641.Xr ssh_config 5 .
642.Pp
643.Nm
644exits with the exit status of the remote command or with 255
645if an error occurred.
646.Sh AUTHENTICATION
647The OpenSSH SSH client supports SSH protocols 1 and 2.
648Protocol 2 is the default, with
649.Nm
650falling back to protocol 1 if it detects protocol 2 is unsupported.
651These settings may be altered using the
652.Cm Protocol
653option in
654.Xr ssh_config 5 ,
655or enforced using the
656.Fl 1
657and
658.Fl 2
659options (see above).
660Both protocols support similar authentication methods,
661but protocol 2 is preferred since
662it provides additional mechanisms for confidentiality
663(the traffic is encrypted using AES, 3DES, Blowfish, CAST128, or Arcfour)
664and integrity (hmac-md5, hmac-sha1, hmac-ripemd160).
665Protocol 1 lacks a strong mechanism for ensuring the
666integrity of the connection.
667.Pp
668The methods available for authentication are:
669host-based authentication,
670public key authentication,
671challenge-response authentication,
672and password authentication.
673Authentication methods are tried in the order specified above,
674though protocol 2 has a configuration option to change the default order:
675.Cm PreferredAuthentications .
676.Pp
677Host-based authentication works as follows:
678If the machine the user logs in from is listed in
679.Pa /etc/hosts.equiv
680or
681.Pa /etc/shosts.equiv
682on the remote machine, and the user names are
683the same on both sides, or if the files
684.Pa ~/.rhosts
685or
686.Pa ~/.shosts
687exist in the user's home directory on the
688remote machine and contain a line containing the name of the client
689machine and the name of the user on that machine, the user is
690considered for login.
691Additionally, the server
692.Em must
693be able to verify the client's
694host key (see the description of
695.Pa /etc/ssh/ssh_known_hosts
696and
697.Pa ~/.ssh/known_hosts ,
698below)
699for login to be permitted.
700This authentication method closes security holes due to IP
701spoofing, DNS spoofing, and routing spoofing.
702[Note to the administrator:
703.Pa /etc/hosts.equiv ,
704.Pa ~/.rhosts ,
705and the rlogin/rsh protocol in general, are inherently insecure and should be
706disabled if security is desired.]
707.Pp
708Public key authentication works as follows:
709The scheme is based on public-key cryptography,
710using cryptosystems
711where encryption and decryption are done using separate keys,
712and it is unfeasible to derive the decryption key from the encryption key.
713The idea is that each user creates a public/private
714key pair for authentication purposes.
715The server knows the public key, and only the user knows the private key.
716.Nm
717implements public key authentication protocol automatically,
718using either the RSA or DSA algorithms.
719Protocol 1 is restricted to using only RSA keys,
720but protocol 2 may use either.
721The
722.Sx HISTORY
723section of
724.Xr ssl 8
725contains a brief discussion of the two algorithms.
726.Pp
727The file
728.Pa ~/.ssh/authorized_keys
729lists the public keys that are permitted for logging in.
730When the user logs in, the
731.Nm
732program tells the server which key pair it would like to use for
733authentication.
734The client proves that it has access to the private key
735and the server checks that the corresponding public key
736is authorized to accept the account.
737.Pp
738The user creates his/her key pair by running
739.Xr ssh-keygen 1 .
740This stores the private key in
741.Pa ~/.ssh/identity
742(protocol 1),
743.Pa ~/.ssh/id_dsa
744(protocol 2 DSA),
745or
746.Pa ~/.ssh/id_rsa
747(protocol 2 RSA)
748and stores the public key in
749.Pa ~/.ssh/identity.pub
750(protocol 1),
751.Pa ~/.ssh/id_dsa.pub
752(protocol 2 DSA),
753or
754.Pa ~/.ssh/id_rsa.pub
755(protocol 2 RSA)
756in the user's home directory.
757The user should then copy the public key
758to
759.Pa ~/.ssh/authorized_keys
760in his/her home directory on the remote machine.
761The
762.Pa authorized_keys
763file corresponds to the conventional
764.Pa ~/.rhosts
765file, and has one key
766per line, though the lines can be very long.
767After this, the user can log in without giving the password.
768.Pp
769The most convenient way to use public key authentication may be with an
770authentication agent.
771See
772.Xr ssh-agent 1
773for more information.
774.Pp
775Challenge-response authentication works as follows:
776The server sends an arbitrary
777.Qq challenge
778text, and prompts for a response.
779Protocol 2 allows multiple challenges and responses;
780protocol 1 is restricted to just one challenge/response.
781Examples of challenge-response authentication include
782BSD Authentication (see
783.Xr login.conf 5 )
784and PAM (some non-OpenBSD systems).
785.Pp
786Finally, if other authentication methods fail,
787.Nm
788prompts the user for a password.
789The password is sent to the remote
790host for checking; however, since all communications are encrypted,
791the password cannot be seen by someone listening on the network.
792.Pp
793.Nm
794automatically maintains and checks a database containing
795identification for all hosts it has ever been used with.
796Host keys are stored in
797.Pa ~/.ssh/known_hosts
798in the user's home directory.
799Additionally, the file
800.Pa /etc/ssh/ssh_known_hosts
801is automatically checked for known hosts.
802Any new hosts are automatically added to the user's file.
803If a host's identification ever changes,
804.Nm
805warns about this and disables password authentication to prevent
806server spoofing or man-in-the-middle attacks,
807which could otherwise be used to circumvent the encryption.
808The
809.Cm StrictHostKeyChecking
810option can be used to control logins to machines whose
811host key is not known or has changed.
812.Pp
813When the user's identity has been accepted by the server, the server
814either executes the given command, or logs into the machine and gives
815the user a normal shell on the remote machine.
816All communication with
817the remote command or shell will be automatically encrypted.
818.Pp
819If a pseudo-terminal has been allocated (normal login session), the
820user may use the escape characters noted below.
821.Pp
822If no pseudo-tty has been allocated,
823the session is transparent and can be used to reliably transfer binary data.
824On most systems, setting the escape character to
825.Dq none
826will also make the session transparent even if a tty is used.
827.Pp
828The session terminates when the command or shell on the remote
829machine exits and all X11 and TCP connections have been closed.
830.Sh ESCAPE CHARACTERS
831When a pseudo-terminal has been requested,
832.Nm
833supports a number of functions through the use of an escape character.
834.Pp
835A single tilde character can be sent as
836.Ic ~~
837or by following the tilde by a character other than those described below.
838The escape character must always follow a newline to be interpreted as
839special.
840The escape character can be changed in configuration files using the
841.Cm EscapeChar
842configuration directive or on the command line by the
843.Fl e
844option.
845.Pp
846The supported escapes (assuming the default
847.Ql ~ )
848are:
849.Bl -tag -width Ds
850.It Cm ~.
851Disconnect.
852.It Cm ~^Z
853Background
854.Nm .
855.It Cm ~#
856List forwarded connections.
857.It Cm ~&
858Background
859.Nm
860at logout when waiting for forwarded connection / X11 sessions to terminate.
861.It Cm ~?
862Display a list of escape characters.
863.It Cm ~B
864Send a BREAK to the remote system
865(only useful for SSH protocol version 2 and if the peer supports it).
866.It Cm ~C
867Open command line.
868Currently this allows the addition of port forwardings using the
869.Fl L
870and
871.Fl R
872options (see above).
873It also allows the cancellation of existing remote port-forwardings
874using
875.Fl KR Ar hostport .
876.Ic !\& Ns Ar command
877allows the user to execute a local command if the
878.Ic PermitLocalCommand
879option is enabled in
880.Xr ssh_config 5 .
881Basic help is available, using the
882.Fl h
883option.
884.It Cm ~R
885Request rekeying of the connection
886(only useful for SSH protocol version 2 and if the peer supports it).
887.El
888.Sh TCP FORWARDING
889Forwarding of arbitrary TCP connections over the secure channel can
890be specified either on the command line or in a configuration file.
891One possible application of TCP forwarding is a secure connection to a
892mail server; another is going through firewalls.
893.Pp
894In the example below, we look at encrypting communication between
895an IRC client and server, even though the IRC server does not directly
896support encrypted communications.
897This works as follows:
898the user connects to the remote host using
899.Nm ,
900specifying a port to be used to forward connections
901to the remote server.
902After that it is possible to start the service which is to be encrypted
903on the client machine,
904connecting to the same local port,
905and
906.Nm
907will encrypt and forward the connection.
908.Pp
909The following example tunnels an IRC session from client machine
910.Dq 127.0.0.1
911(localhost)
912to remote server
913.Dq server.example.com :
914.Bd -literal -offset 4n
915$ ssh -f -L 1234:localhost:6667 server.example.com sleep 10
916$ irc -c '#users' -p 1234 pinky 127.0.0.1
917.Ed
918.Pp
919This tunnels a connection to IRC server
920.Dq server.example.com ,
921joining channel
922.Dq #users ,
923nickname
924.Dq pinky ,
925using port 1234.
926It doesn't matter which port is used,
927as long as it's greater than 1023
928(remember, only root can open sockets on privileged ports)
929and doesn't conflict with any ports already in use.
930The connection is forwarded to port 6667 on the remote server,
931since that's the standard port for IRC services.
932.Pp
933The
934.Fl f
935option backgrounds
936.Nm
937and the remote command
938.Dq sleep 10
939is specified to allow an amount of time
940(10 seconds, in the example)
941to start the service which is to be tunnelled.
942If no connections are made within the time specified,
943.Nm
944will exit.
945.Sh X11 FORWARDING
946If the
947.Cm ForwardX11
948variable is set to
949.Dq yes
950(or see the description of the
951.Fl X ,
952.Fl x ,
953and
954.Fl Y
955options above)
956and the user is using X11 (the
957.Ev DISPLAY
958environment variable is set), the connection to the X11 display is
959automatically forwarded to the remote side in such a way that any X11
960programs started from the shell (or command) will go through the
961encrypted channel, and the connection to the real X server will be made
962from the local machine.
963The user should not manually set
964.Ev DISPLAY .
965Forwarding of X11 connections can be
966configured on the command line or in configuration files.
967.Pp
968The
969.Ev DISPLAY
970value set by
971.Nm
972will point to the server machine, but with a display number greater than zero.
973This is normal, and happens because
974.Nm
975creates a
976.Dq proxy
977X server on the server machine for forwarding the
978connections over the encrypted channel.
979.Pp
980.Nm
981will also automatically set up Xauthority data on the server machine.
982For this purpose, it will generate a random authorization cookie,
983store it in Xauthority on the server, and verify that any forwarded
984connections carry this cookie and replace it by the real cookie when
985the connection is opened.
986The real authentication cookie is never
987sent to the server machine (and no cookies are sent in the plain).
988.Pp
989If the
990.Cm ForwardAgent
991variable is set to
992.Dq yes
993(or see the description of the
994.Fl A
995and
996.Fl a
997options above) and
998the user is using an authentication agent, the connection to the agent
999is automatically forwarded to the remote side.
1000.Sh VERIFYING HOST KEYS
1001When connecting to a server for the first time,
1002a fingerprint of the server's public key is presented to the user
1003(unless the option
1004.Cm StrictHostKeyChecking
1005has been disabled).
1006Fingerprints can be determined using
1007.Xr ssh-keygen 1 :
1008.Pp
1009.Dl $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
1010.Pp
1011If the fingerprint is already known,
1012it can be matched and verified,
1013and the key can be accepted.
1014If the fingerprint is unknown,
1015an alternative method of verification is available:
1016SSH fingerprints verified by DNS.
1017An additional resource record (RR),
1018SSHFP,
1019is added to a zonefile
1020and the connecting client is able to match the fingerprint
1021with that of the key presented.
1022.Pp
1023In this example, we are connecting a client to a server,
1024.Dq host.example.com .
1025The SSHFP resource records should first be added to the zonefile for
1026host.example.com:
1027.Bd -literal -offset indent
1028$ ssh-keygen -f /etc/ssh/ssh_host_rsa_key.pub -r host.example.com.
1029$ ssh-keygen -f /etc/ssh/ssh_host_dsa_key.pub -r host.example.com.
1030.Ed
1031.Pp
1032The output lines will have to be added to the zonefile.
1033To check that the zone is answering fingerprint queries:
1034.Pp
1035.Dl $ dig -t SSHFP host.example.com
1036.Pp
1037Finally the client connects:
1038.Bd -literal -offset indent
1039$ ssh -o "VerifyHostKeyDNS ask" host.example.com
1040[...]
1041Matching host key fingerprint found in DNS.
1042Are you sure you want to continue connecting (yes/no)?
1043.Ed
1044.Pp
1045See the
1046.Cm VerifyHostKeyDNS
1047option in
1048.Xr ssh_config 5
1049for more information.
1050.Sh SSH-BASED VIRTUAL PRIVATE NETWORKS
1051.Nm
1052contains support for Virtual Private Network (VPN) tunnelling
1053using the
1054.Xr tun 4
1055network pseudo-device,
1056allowing two networks to be joined securely.
1057The
1058.Xr sshd_config 5
1059configuration option
1060.Cm PermitTunnel
1061controls whether the server supports this,
1062and at what level (layer 2 or 3 traffic).
1063.Pp
1064The following example would connect client network 10.0.50.0/24
1065with remote network 10.0.99.0/24, provided that the SSH server
1066running on the gateway to the remote network,
1067at 192.168.1.15, allows it:
1068.Bd -literal -offset indent
1069# ssh -f -w 0:1 192.168.1.15 true
1070# ifconfig tun0 10.0.50.1 10.0.99.1 netmask 255.255.255.252
1071.Ed
1072.Pp
1073Client access may be more finely tuned via the
1074.Pa /root/.ssh/authorized_keys
1075file (see below) and the
1076.Cm PermitRootLogin
1077server option.
1078The following entry would permit connections on the first
1079.Xr tun 4
1080device from user
1081.Dq jane
1082and on the second device from user
1083.Dq john ,
1084if
1085.Cm PermitRootLogin
1086is set to
1087.Dq forced-commands-only :
1088.Bd -literal -offset 2n
1089tunnel="1",command="sh /etc/netstart tun1" ssh-rsa ... jane
1090tunnel="2",command="sh /etc/netstart tun1" ssh-rsa ... john
1091.Ed
1092.Pp
1093Since a SSH-based setup entails a fair amount of overhead,
1094it may be more suited to temporary setups,
1095such as for wireless VPNs.
1096More permanent VPNs are better provided by tools such as
1097.Xr ipsecctl 8
1098and
1099.Xr isakmpd 8 .
864.Sh ENVIRONMENT 1100.Sh ENVIRONMENT
865.Nm 1101.Nm
866will normally set the following environment variables: 1102will normally set the following environment variables:
867.Bl -tag -width LOGNAME 1103.Bl -tag -width "SSH_ORIGINAL_COMMAND"
868.It Ev DISPLAY 1104.It Ev DISPLAY
869The 1105The
870.Ev DISPLAY 1106.Ev DISPLAY
@@ -872,9 +1108,12 @@ variable indicates the location of the X11 server.
872It is automatically set by 1108It is automatically set by
873.Nm 1109.Nm
874to point to a value of the form 1110to point to a value of the form
875.Dq hostname:n 1111.Dq hostname:n ,
876where hostname indicates 1112where
877the host where the shell runs, and n is an integer \*(Ge 1. 1113.Dq hostname
1114indicates the host where the shell runs, and
1115.Sq n
1116is an integer \*(Ge 1.
878.Nm 1117.Nm
879uses this special value to forward X11 connections over the secure 1118uses this special value to forward X11 connections over the secure
880channel. 1119channel.
@@ -895,7 +1134,7 @@ Set to the path of the user's mailbox.
895Set to the default 1134Set to the default
896.Ev PATH , 1135.Ev PATH ,
897as specified when compiling 1136as specified when compiling
898.Nm ssh . 1137.Nm .
899.It Ev SSH_ASKPASS 1138.It Ev SSH_ASKPASS
900If 1139If
901.Nm 1140.Nm
@@ -920,15 +1159,16 @@ may be necessary to redirect the input from
920.Pa /dev/null 1159.Pa /dev/null
921to make this work.) 1160to make this work.)
922.It Ev SSH_AUTH_SOCK 1161.It Ev SSH_AUTH_SOCK
923Identifies the path of a unix-domain socket used to communicate with the 1162Identifies the path of a
924agent. 1163.Ux Ns -domain
1164socket used to communicate with the agent.
925.It Ev SSH_CONNECTION 1165.It Ev SSH_CONNECTION
926Identifies the client and server ends of the connection. 1166Identifies the client and server ends of the connection.
927The variable contains 1167The variable contains
928four space-separated values: client ip-address, client port number, 1168four space-separated values: client IP address, client port number,
929server ip-address and server port number. 1169server IP address, and server port number.
930.It Ev SSH_ORIGINAL_COMMAND 1170.It Ev SSH_ORIGINAL_COMMAND
931The variable contains the original command line if a forced command 1171This variable contains the original command line if a forced command
932is executed. 1172is executed.
933It can be used to extract the original arguments. 1173It can be used to extract the original arguments.
934.It Ev SSH_TTY 1174.It Ev SSH_TTY
@@ -937,7 +1177,7 @@ with the current shell or command.
937If the current session has no tty, 1177If the current session has no tty,
938this variable is not set. 1178this variable is not set.
939.It Ev TZ 1179.It Ev TZ
940The timezone variable is set to indicate the present timezone if it 1180This variable is set to indicate the present time zone if it
941was set when the daemon was started (i.e., the daemon passes the value 1181was set when the daemon was started (i.e., the daemon passes the value
942on to new connections). 1182on to new connections).
943.It Ev USER 1183.It Ev USER
@@ -950,221 +1190,150 @@ reads
950.Pa ~/.ssh/environment , 1190.Pa ~/.ssh/environment ,
951and adds lines of the format 1191and adds lines of the format
952.Dq VARNAME=value 1192.Dq VARNAME=value
953to the environment if the file exists and if users are allowed to 1193to the environment if the file exists and users are allowed to
954change their environment. 1194change their environment.
955For more information, see the 1195For more information, see the
956.Cm PermitUserEnvironment 1196.Cm PermitUserEnvironment
957option in 1197option in
958.Xr sshd_config 5 . 1198.Xr sshd_config 5 .
959.Sh FILES 1199.Sh FILES
960.Bl -tag -width Ds 1200.Bl -tag -width Ds -compact
961.It Pa ~/.ssh/known_hosts 1201.It ~/.rhosts
962Records host keys for all hosts the user has logged into that are not 1202This file is used for host-based authentication (see above).
963in 1203On some machines this file may need to be
964.Pa /etc/ssh/ssh_known_hosts . 1204world-readable if the user's home directory is on an NFS partition,
965See 1205because
966.Xr sshd 8 . 1206.Xr sshd 8
967.It Pa ~/.ssh/identity, ~/.ssh/id_dsa, ~/.ssh/id_rsa 1207reads it as root.
968Contains the authentication identity of the user. 1208Additionally, this file must be owned by the user,
969They are for protocol 1 RSA, protocol 2 DSA, and protocol 2 RSA, respectively. 1209and must not have write permissions for anyone else.
1210The recommended
1211permission for most machines is read/write for the user, and not
1212accessible by others.
1213.Pp
1214.It ~/.shosts
1215This file is used in exactly the same way as
1216.Pa .rhosts ,
1217but allows host-based authentication without permitting login with
1218rlogin/rsh.
1219.Pp
1220.It ~/.ssh/authorized_keys
1221Lists the public keys (RSA/DSA) that can be used for logging in as this user.
1222The format of this file is described in the
1223.Xr sshd 8
1224manual page.
1225This file is not highly sensitive, but the recommended
1226permissions are read/write for the user, and not accessible by others.
1227.Pp
1228.It ~/.ssh/config
1229This is the per-user configuration file.
1230The file format and configuration options are described in
1231.Xr ssh_config 5 .
1232Because of the potential for abuse, this file must have strict permissions:
1233read/write for the user, and not accessible by others.
1234.Pp
1235.It ~/.ssh/environment
1236Contains additional definitions for environment variables; see
1237.Sx ENVIRONMENT ,
1238above.
1239.Pp
1240.It ~/.ssh/identity
1241.It ~/.ssh/id_dsa
1242.It ~/.ssh/id_rsa
1243Contains the private key for authentication.
970These files 1244These files
971contain sensitive data and should be readable by the user but not 1245contain sensitive data and should be readable by the user but not
972accessible by others (read/write/execute). 1246accessible by others (read/write/execute).
973Note that
974.Nm 1247.Nm
975ignores a private key file if it is accessible by others. 1248will simply ignore a private key file if it is accessible by others.
976It is possible to specify a passphrase when 1249It is possible to specify a passphrase when
977generating the key; the passphrase will be used to encrypt the 1250generating the key which will be used to encrypt the
978sensitive part of this file using 3DES. 1251sensitive part of this file using 3DES.
979.It Pa ~/.ssh/identity.pub, ~/.ssh/id_dsa.pub, ~/.ssh/id_rsa.pub 1252.Pp
980Contains the public key for authentication (public part of the 1253.It ~/.ssh/identity.pub
981identity file in human-readable form). 1254.It ~/.ssh/id_dsa.pub
982The contents of the 1255.It ~/.ssh/id_rsa.pub
983.Pa ~/.ssh/identity.pub 1256Contains the public key for authentication.
984file should be added to the file
985.Pa ~/.ssh/authorized_keys
986on all machines
987where the user wishes to log in using protocol version 1 RSA authentication.
988The contents of the
989.Pa ~/.ssh/id_dsa.pub
990and
991.Pa ~/.ssh/id_rsa.pub
992file should be added to
993.Pa ~/.ssh/authorized_keys
994on all machines
995where the user wishes to log in using protocol version 2 DSA/RSA authentication.
996These files are not 1257These files are not
997sensitive and can (but need not) be readable by anyone. 1258sensitive and can (but need not) be readable by anyone.
998These files are
999never used automatically and are not necessary; they are only provided for
1000the convenience of the user.
1001.It Pa ~/.ssh/config
1002This is the per-user configuration file.
1003The file format and configuration options are described in
1004.Xr ssh_config 5 .
1005Because of the potential for abuse, this file must have strict permissions:
1006read/write for the user, and not accessible by others.
1007.It Pa ~/.ssh/authorized_keys
1008Lists the public keys (RSA/DSA) that can be used for logging in as this user.
1009The format of this file is described in the
1010.Xr sshd 8
1011manual page.
1012In the simplest form the format is the same as the
1013.Pa .pub
1014identity files.
1015This file is not highly sensitive, but the recommended
1016permissions are read/write for the user, and not accessible by others.
1017.It Pa /etc/ssh/ssh_known_hosts
1018Systemwide list of known host keys.
1019This file should be prepared by the
1020system administrator to contain the public host keys of all machines in the
1021organization.
1022This file should be world-readable.
1023This file contains
1024public keys, one per line, in the following format (fields separated
1025by spaces): system name, public key and optional comment field.
1026When different names are used
1027for the same machine, all such names should be listed, separated by
1028commas.
1029The format is described in the
1030.Xr sshd 8
1031manual page.
1032.Pp 1259.Pp
1033The canonical system name (as returned by name servers) is used by 1260.It ~/.ssh/known_hosts
1261Contains a list of host keys for all hosts the user has logged into
1262that are not already in the systemwide list of known host keys.
1263See
1034.Xr sshd 8 1264.Xr sshd 8
1035to verify the client host when logging in; other names are needed because 1265for further details of the format of this file.
1266.Pp
1267.It ~/.ssh/rc
1268Commands in this file are executed by
1036.Nm 1269.Nm
1037does not convert the user-supplied name to a canonical name before 1270when the user logs in, just before the user's shell (or command) is
1038checking the key, because someone with access to the name servers 1271started.
1039would then be able to fool host authentication. 1272See the
1273.Xr sshd 8
1274manual page for more information.
1275.Pp
1276.It /etc/hosts.equiv
1277This file is for host-based authentication (see above).
1278It should only be writable by root.
1279.Pp
1280.It /etc/shosts.equiv
1281This file is used in exactly the same way as
1282.Pa hosts.equiv ,
1283but allows host-based authentication without permitting login with
1284rlogin/rsh.
1285.Pp
1040.It Pa /etc/ssh/ssh_config 1286.It Pa /etc/ssh/ssh_config
1041Systemwide configuration file. 1287Systemwide configuration file.
1042The file format and configuration options are described in 1288The file format and configuration options are described in
1043.Xr ssh_config 5 . 1289.Xr ssh_config 5 .
1044.It Pa /etc/ssh/ssh_host_key, /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_rsa_key 1290.Pp
1291.It /etc/ssh/ssh_host_key
1292.It /etc/ssh/ssh_host_dsa_key
1293.It /etc/ssh/ssh_host_rsa_key
1045These three files contain the private parts of the host keys 1294These three files contain the private parts of the host keys
1046and are used for 1295and are used for host-based authentication.
1047.Cm RhostsRSAAuthentication 1296If protocol version 1 is used,
1048and
1049.Cm HostbasedAuthentication .
1050If the protocol version 1
1051.Cm RhostsRSAAuthentication
1052method is used,
1053.Nm 1297.Nm
1054must be setuid root, since the host key is readable only by root. 1298must be setuid root, since the host key is readable only by root.
1055For protocol version 2, 1299For protocol version 2,
1056.Nm 1300.Nm
1057uses 1301uses
1058.Xr ssh-keysign 8 1302.Xr ssh-keysign 8
1059to access the host keys for 1303to access the host keys,
1060.Cm HostbasedAuthentication . 1304eliminating the requirement that
1061This eliminates the requirement that
1062.Nm 1305.Nm
1063be setuid root when that authentication method is used. 1306be setuid root when host-based authentication is used.
1064By default 1307By default
1065.Nm 1308.Nm
1066is not setuid root. 1309is not setuid root.
1067.It Pa ~/.rhosts
1068This file is used in
1069.Cm RhostsRSAAuthentication
1070and
1071.Cm HostbasedAuthentication
1072authentication to list the
1073host/user pairs that are permitted to log in.
1074(Note that this file is
1075also used by rlogin and rsh, which makes using this file insecure.)
1076Each line of the file contains a host name (in the canonical form
1077returned by name servers), and then a user name on that host,
1078separated by a space.
1079On some machines this file may need to be
1080world-readable if the user's home directory is on a NFS partition,
1081because
1082.Xr sshd 8
1083reads it as root.
1084Additionally, this file must be owned by the user,
1085and must not have write permissions for anyone else.
1086The recommended
1087permission for most machines is read/write for the user, and not
1088accessible by others.
1089.Pp 1310.Pp
1090Note that 1311.It /etc/ssh/ssh_known_hosts
1091.Xr sshd 8 1312Systemwide list of known host keys.
1092allows authentication only in combination with client host key 1313This file should be prepared by the
1093authentication before permitting log in. 1314system administrator to contain the public host keys of all machines in the
1094If the server machine does not have the client's host key in 1315organization.
1095.Pa /etc/ssh/ssh_known_hosts , 1316It should be world-readable.
1096it can be stored in 1317See
1097.Pa ~/.ssh/known_hosts .
1098The easiest way to do this is to
1099connect back to the client from the server machine using ssh; this
1100will automatically add the host key to
1101.Pa ~/.ssh/known_hosts .
1102.It Pa ~/.shosts
1103This file is used exactly the same way as
1104.Pa .rhosts .
1105The purpose for
1106having this file is to be able to use
1107.Cm RhostsRSAAuthentication
1108and
1109.Cm HostbasedAuthentication
1110authentication without permitting login with
1111.Xr rlogin
1112or
1113.Xr rsh 1 .
1114.It Pa /etc/hosts.equiv
1115This file is used during
1116.Cm RhostsRSAAuthentication
1117and
1118.Cm HostbasedAuthentication
1119authentication.
1120It contains
1121canonical hosts names, one per line (the full format is described in the
1122.Xr sshd 8
1123manual page).
1124If the client host is found in this file, login is
1125automatically permitted provided client and server user names are the
1126same.
1127Additionally, successful client host key authentication is required.
1128This file should only be writable by root.
1129.It Pa /etc/shosts.equiv
1130This file is processed exactly as
1131.Pa /etc/hosts.equiv .
1132This file may be useful to permit logins using
1133.Nm
1134but not using rsh/rlogin.
1135.It Pa /etc/ssh/sshrc
1136Commands in this file are executed by
1137.Nm
1138when the user logs in just before the user's shell (or command) is started.
1139See the
1140.Xr sshd 8 1318.Xr sshd 8
1141manual page for more information. 1319for further details of the format of this file.
1142.It Pa ~/.ssh/rc 1320.Pp
1321.It /etc/ssh/sshrc
1143Commands in this file are executed by 1322Commands in this file are executed by
1144.Nm 1323.Nm
1145when the user logs in just before the user's shell (or command) is 1324when the user logs in, just before the user's shell (or command) is started.
1146started.
1147See the 1325See the
1148.Xr sshd 8 1326.Xr sshd 8
1149manual page for more information. 1327manual page for more information.
1150.It Pa ~/.ssh/environment
1151Contains additional definitions for environment variables, see section
1152.Sx ENVIRONMENT
1153above.
1154.El 1328.El
1155.Sh DIAGNOSTICS
1156.Nm
1157exits with the exit status of the remote command or with 255
1158if an error occurred.
1159.Sh SEE ALSO 1329.Sh SEE ALSO
1160.Xr gzip 1 ,
1161.Xr rsh 1 ,
1162.Xr scp 1 , 1330.Xr scp 1 ,
1163.Xr sftp 1 , 1331.Xr sftp 1 ,
1164.Xr ssh-add 1 , 1332.Xr ssh-add 1 ,
1165.Xr ssh-agent 1 , 1333.Xr ssh-agent 1 ,
1166.Xr ssh-keygen 1 , 1334.Xr ssh-keygen 1 ,
1167.Xr telnet 1 , 1335.Xr ssh-keyscan 1 ,
1336.Xr tun 4 ,
1168.Xr hosts.equiv 5 , 1337.Xr hosts.equiv 5 ,
1169.Xr ssh_config 5 , 1338.Xr ssh_config 5 ,
1170.Xr ssh-keysign 8 , 1339.Xr ssh-keysign 8 ,