xref: /openbsd-src/usr.bin/ssh/ssh.1 (revision c0dd97bfcad3dab6c31ec12b9de1274fd2d2f993)
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: ssh.1,v 1.388 2017/10/25 06:19:46 jmc Exp $
37.Dd $Mdocdate: October 25 2017 $
38.Dt SSH 1
39.Os
40.Sh NAME
41.Nm ssh
42.Nd OpenSSH SSH client (remote login program)
43.Sh SYNOPSIS
44.Nm ssh
45.Op Fl 46AaCfGgKkMNnqsTtVvXxYy
46.Op Fl b Ar bind_address
47.Op Fl c Ar cipher_spec
48.Op Fl D Oo Ar bind_address : Oc Ns Ar port
49.Op Fl E Ar log_file
50.Op Fl e Ar escape_char
51.Op Fl F Ar configfile
52.Op Fl I Ar pkcs11
53.Op Fl i Ar identity_file
54.Op Fl J Ar destination
55.Op Fl L Ar address
56.Op Fl l Ar login_name
57.Op Fl m Ar mac_spec
58.Op Fl O Ar ctl_cmd
59.Op Fl o Ar option
60.Op Fl p Ar port
61.Op Fl Q Ar query_option
62.Op Fl R Ar address
63.Op Fl S Ar ctl_path
64.Op Fl W Ar host : Ns Ar port
65.Op Fl w Ar local_tun Ns Op : Ns Ar remote_tun
66.Ar destination
67.Op Ar command
68.Sh DESCRIPTION
69.Nm
70(SSH client) is a program for logging into a remote machine and for
71executing commands on a remote machine.
72It is intended to provide secure encrypted communications between
73two untrusted hosts over an insecure network.
74X11 connections, arbitrary TCP ports and
75.Ux Ns -domain
76sockets can also be forwarded over the secure channel.
77.Pp
78.Nm
79connects and logs into the specified
80.Ar destination ,
81which may be specified as either
82.Sm off
83.Oo user @ Oc hostname
84.Sm on
85or a URI of the form
86.Sm off
87.No ssh:// Oo user @ Oc hostname Op : port .
88.Sm on
89The user must prove
90his/her identity to the remote machine using one of several methods
91(see below).
92.Pp
93If a
94.Ar command
95is specified,
96it is executed on the remote host instead of a login shell.
97.Pp
98The options are as follows:
99.Pp
100.Bl -tag -width Ds -compact
101.It Fl 4
102Forces
103.Nm
104to use IPv4 addresses only.
105.Pp
106.It Fl 6
107Forces
108.Nm
109to use IPv6 addresses only.
110.Pp
111.It Fl A
112Enables forwarding of the authentication agent connection.
113This can also be specified on a per-host basis in a configuration file.
114.Pp
115Agent forwarding should be enabled with caution.
116Users with the ability to bypass file permissions on the remote host
117(for the agent's
118.Ux Ns -domain
119socket) can access the local agent through the forwarded connection.
120An attacker cannot obtain key material from the agent,
121however they can perform operations on the keys that enable them to
122authenticate using the identities loaded into the agent.
123.Pp
124.It Fl a
125Disables forwarding of the authentication agent connection.
126.Pp
127.It Fl b Ar bind_address
128Use
129.Ar bind_address
130on the local machine as the source address
131of the connection.
132Only useful on systems with more than one address.
133.Pp
134.It Fl C
135Requests compression of all data (including stdin, stdout, stderr, and
136data for forwarded X11, TCP and
137.Ux Ns -domain
138connections).
139The compression algorithm is the same used by
140.Xr gzip 1 .
141Compression is desirable on modem lines and other
142slow connections, but will only slow down things on fast networks.
143The default value can be set on a host-by-host basis in the
144configuration files; see the
145.Cm Compression
146option.
147.Pp
148.It Fl c Ar cipher_spec
149Selects the cipher specification for encrypting the session.
150.Ar cipher_spec
151is a comma-separated list of ciphers
152listed in order of preference.
153See the
154.Cm Ciphers
155keyword in
156.Xr ssh_config 5
157for more information.
158.Pp
159.It Fl D Xo
160.Sm off
161.Oo Ar bind_address : Oc
162.Ar port
163.Sm on
164.Xc
165Specifies a local
166.Dq dynamic
167application-level port forwarding.
168This works by allocating a socket to listen to
169.Ar port
170on the local side, optionally bound to the specified
171.Ar bind_address .
172Whenever a connection is made to this port, the
173connection is forwarded over the secure channel, and the application
174protocol is then used to determine where to connect to from the
175remote machine.
176Currently the SOCKS4 and SOCKS5 protocols are supported, and
177.Nm
178will act as a SOCKS server.
179Only root can forward privileged ports.
180Dynamic port forwardings can also be specified in the configuration file.
181.Pp
182IPv6 addresses can be specified by enclosing the address in square brackets.
183Only the superuser can forward privileged ports.
184By default, the local port is bound in accordance with the
185.Cm GatewayPorts
186setting.
187However, an explicit
188.Ar bind_address
189may be used to bind the connection to a specific address.
190The
191.Ar bind_address
192of
193.Dq localhost
194indicates that the listening port be bound for local use only, while an
195empty address or
196.Sq *
197indicates that the port should be available from all interfaces.
198.Pp
199.It Fl E Ar log_file
200Append debug logs to
201.Ar log_file
202instead of standard error.
203.Pp
204.It Fl e Ar escape_char
205Sets the escape character for sessions with a pty (default:
206.Ql ~ ) .
207The escape character is only recognized at the beginning of a line.
208The escape character followed by a dot
209.Pq Ql \&.
210closes the connection;
211followed by control-Z suspends the connection;
212and followed by itself sends the escape character once.
213Setting the character to
214.Dq none
215disables any escapes and makes the session fully transparent.
216.Pp
217.It Fl F Ar configfile
218Specifies an alternative per-user configuration file.
219If a configuration file is given on the command line,
220the system-wide configuration file
221.Pq Pa /etc/ssh/ssh_config
222will be ignored.
223The default for the per-user configuration file is
224.Pa ~/.ssh/config .
225.Pp
226.It Fl f
227Requests
228.Nm
229to go to background just before command execution.
230This is useful if
231.Nm
232is going to ask for passwords or passphrases, but the user
233wants it in the background.
234This implies
235.Fl n .
236The recommended way to start X11 programs at a remote site is with
237something like
238.Ic ssh -f host xterm .
239.Pp
240If the
241.Cm ExitOnForwardFailure
242configuration option is set to
243.Dq yes ,
244then a client started with
245.Fl f
246will wait for all remote port forwards to be successfully established
247before placing itself in the background.
248.Pp
249.It Fl G
250Causes
251.Nm
252to print its configuration after evaluating
253.Cm Host
254and
255.Cm Match
256blocks and exit.
257.Pp
258.It Fl g
259Allows remote hosts to connect to local forwarded ports.
260If used on a multiplexed connection, then this option must be specified
261on the master process.
262.Pp
263.It Fl I Ar pkcs11
264Specify the PKCS#11 shared library
265.Nm
266should use to communicate with a PKCS#11 token providing the user's
267private RSA key.
268.Pp
269.It Fl i Ar identity_file
270Selects a file from which the identity (private key) for
271public key authentication is read.
272The default is
273.Pa ~/.ssh/id_dsa ,
274.Pa ~/.ssh/id_ecdsa ,
275.Pa ~/.ssh/id_ed25519
276and
277.Pa ~/.ssh/id_rsa .
278Identity files may also be specified on
279a per-host basis in the configuration file.
280It is possible to have multiple
281.Fl i
282options (and multiple identities specified in
283configuration files).
284If no certificates have been explicitly specified by the
285.Cm CertificateFile
286directive,
287.Nm
288will also try to load certificate information from the filename obtained
289by appending
290.Pa -cert.pub
291to identity filenames.
292.Pp
293.It Fl J Ar destination
294Connect to the target host by first making a
295.Nm
296connection to the jump host described by
297.Ar destination
298and then establishing a TCP forwarding to the ultimate destination from
299there.
300Multiple jump hops may be specified separated by comma characters.
301This is a shortcut to specify a
302.Cm ProxyJump
303configuration directive.
304.Pp
305.It Fl K
306Enables GSSAPI-based authentication and forwarding (delegation) of GSSAPI
307credentials to the server.
308.Pp
309.It Fl k
310Disables forwarding (delegation) of GSSAPI credentials to the server.
311.Pp
312.It Fl L Xo
313.Sm off
314.Oo Ar bind_address : Oc
315.Ar port : host : hostport
316.Sm on
317.Xc
318.It Fl L Xo
319.Sm off
320.Oo Ar bind_address : Oc
321.Ar port : remote_socket
322.Sm on
323.Xc
324.It Fl L Xo
325.Sm off
326.Ar local_socket : host : hostport
327.Sm on
328.Xc
329.It Fl L Xo
330.Sm off
331.Ar local_socket : remote_socket
332.Sm on
333.Xc
334Specifies that connections to the given TCP port or Unix socket on the local
335(client) host are to be forwarded to the given host and port, or Unix socket,
336on the remote side.
337This works by allocating a socket to listen to either a TCP
338.Ar port
339on the local side, optionally bound to the specified
340.Ar bind_address ,
341or to a Unix socket.
342Whenever a connection is made to the local port or socket, the
343connection is forwarded over the secure channel, and a connection is
344made to either
345.Ar host
346port
347.Ar hostport ,
348or the Unix socket
349.Ar remote_socket ,
350from the remote machine.
351.Pp
352Port forwardings can also be specified in the configuration file.
353Only the superuser can forward privileged ports.
354IPv6 addresses can be specified by enclosing the address in square brackets.
355.Pp
356By default, the local port is bound in accordance with the
357.Cm GatewayPorts
358setting.
359However, an explicit
360.Ar bind_address
361may be used to bind the connection to a specific address.
362The
363.Ar bind_address
364of
365.Dq localhost
366indicates that the listening port be bound for local use only, while an
367empty address or
368.Sq *
369indicates that the port should be available from all interfaces.
370.Pp
371.It Fl l Ar login_name
372Specifies the user to log in as on the remote machine.
373This also may be specified on a per-host basis in the configuration file.
374.Pp
375.It Fl M
376Places the
377.Nm
378client into
379.Dq master
380mode for connection sharing.
381Multiple
382.Fl M
383options places
384.Nm
385into
386.Dq master
387mode with confirmation required before slave connections are accepted.
388Refer to the description of
389.Cm ControlMaster
390in
391.Xr ssh_config 5
392for details.
393.Pp
394.It Fl m Ar mac_spec
395A comma-separated list of MAC (message authentication code) algorithms,
396specified in order of preference.
397See the
398.Cm MACs
399keyword for more information.
400.Pp
401.It Fl N
402Do not execute a remote command.
403This is useful for just forwarding ports.
404.Pp
405.It Fl n
406Redirects stdin from
407.Pa /dev/null
408(actually, prevents reading from stdin).
409This must be used when
410.Nm
411is run in the background.
412A common trick is to use this to run X11 programs on a remote machine.
413For example,
414.Ic ssh -n shadows.cs.hut.fi emacs &
415will start an emacs on shadows.cs.hut.fi, and the X11
416connection will be automatically forwarded over an encrypted channel.
417The
418.Nm
419program will be put in the background.
420(This does not work if
421.Nm
422needs to ask for a password or passphrase; see also the
423.Fl f
424option.)
425.Pp
426.It Fl O Ar ctl_cmd
427Control an active connection multiplexing master process.
428When the
429.Fl O
430option is specified, the
431.Ar ctl_cmd
432argument is interpreted and passed to the master process.
433Valid commands are:
434.Dq check
435(check that the master process is running),
436.Dq forward
437(request forwardings without command execution),
438.Dq cancel
439(cancel forwardings),
440.Dq exit
441(request the master to exit), and
442.Dq stop
443(request the master to stop accepting further multiplexing requests).
444.Pp
445.It Fl o Ar option
446Can be used to give options in the format used in the configuration file.
447This is useful for specifying options for which there is no separate
448command-line flag.
449For full details of the options listed below, and their possible values, see
450.Xr ssh_config 5 .
451.Pp
452.Bl -tag -width Ds -offset indent -compact
453.It AddKeysToAgent
454.It AddressFamily
455.It BatchMode
456.It BindAddress
457.It CanonicalDomains
458.It CanonicalizeFallbackLocal
459.It CanonicalizeHostname
460.It CanonicalizeMaxDots
461.It CanonicalizePermittedCNAMEs
462.It CertificateFile
463.It ChallengeResponseAuthentication
464.It CheckHostIP
465.It Ciphers
466.It ClearAllForwardings
467.It Compression
468.It ConnectionAttempts
469.It ConnectTimeout
470.It ControlMaster
471.It ControlPath
472.It ControlPersist
473.It DynamicForward
474.It EscapeChar
475.It ExitOnForwardFailure
476.It FingerprintHash
477.It ForwardAgent
478.It ForwardX11
479.It ForwardX11Timeout
480.It ForwardX11Trusted
481.It GatewayPorts
482.It GlobalKnownHostsFile
483.It GSSAPIAuthentication
484.It GSSAPIDelegateCredentials
485.It HashKnownHosts
486.It Host
487.It HostbasedAuthentication
488.It HostbasedKeyTypes
489.It HostKeyAlgorithms
490.It HostKeyAlias
491.It HostName
492.It IdentitiesOnly
493.It IdentityAgent
494.It IdentityFile
495.It Include
496.It IPQoS
497.It KbdInteractiveAuthentication
498.It KbdInteractiveDevices
499.It KexAlgorithms
500.It LocalCommand
501.It LocalForward
502.It LogLevel
503.It MACs
504.It Match
505.It NoHostAuthenticationForLocalhost
506.It NumberOfPasswordPrompts
507.It PasswordAuthentication
508.It PermitLocalCommand
509.It PKCS11Provider
510.It Port
511.It PreferredAuthentications
512.It ProxyCommand
513.It ProxyJump
514.It ProxyUseFdpass
515.It PubkeyAcceptedKeyTypes
516.It PubkeyAuthentication
517.It RekeyLimit
518.It RemoteCommand
519.It RemoteForward
520.It RequestTTY
521.It SendEnv
522.It ServerAliveInterval
523.It ServerAliveCountMax
524.It StreamLocalBindMask
525.It StreamLocalBindUnlink
526.It StrictHostKeyChecking
527.It TCPKeepAlive
528.It Tunnel
529.It TunnelDevice
530.It UpdateHostKeys
531.It UsePrivilegedPort
532.It User
533.It UserKnownHostsFile
534.It VerifyHostKeyDNS
535.It VisualHostKey
536.It XAuthLocation
537.El
538.Pp
539.It Fl p Ar port
540Port to connect to on the remote host.
541This can be specified on a
542per-host basis in the configuration file.
543.Pp
544.It Fl Q Ar query_option
545Queries
546.Nm
547for the algorithms supported for the specified version 2.
548The available features are:
549.Ar cipher
550(supported symmetric ciphers),
551.Ar cipher-auth
552(supported symmetric ciphers that support authenticated encryption),
553.Ar mac
554(supported message integrity codes),
555.Ar kex
556(key exchange algorithms),
557.Ar key
558(key types),
559.Ar key-cert
560(certificate key types),
561.Ar key-plain
562(non-certificate key types), and
563.Ar protocol-version
564(supported SSH protocol versions).
565.Pp
566.It Fl q
567Quiet mode.
568Causes most warning and diagnostic messages to be suppressed.
569.Pp
570.It Fl R Xo
571.Sm off
572.Oo Ar bind_address : Oc
573.Ar port : host : hostport
574.Sm on
575.Xc
576.It Fl R Xo
577.Sm off
578.Oo Ar bind_address : Oc
579.Ar port : local_socket
580.Sm on
581.Xc
582.It Fl R Xo
583.Sm off
584.Ar remote_socket : host : hostport
585.Sm on
586.Xc
587.It Fl R Xo
588.Sm off
589.Ar remote_socket : local_socket
590.Sm on
591.Xc
592.It Fl R Xo
593.Sm off
594.Oo Ar bind_address : Oc
595.Ar port
596.Sm on
597.Xc
598Specifies that connections to the given TCP port or Unix socket on the remote
599(server) host are to be forwarded to the local side.
600.Pp
601This works by allocating a socket to listen to either a TCP
602.Ar port
603or to a Unix socket on the remote side.
604Whenever a connection is made to this port or Unix socket, the
605connection is forwarded over the secure channel, and a connection
606is made from the local machine to either an explicit destination specified by
607.Ar host
608port
609.Ar hostport ,
610or
611.Ar local_socket ,
612or, if no explicit destination was specified,
613.Nm
614will act as a SOCKS 4/5 proxy and forward connections to the destinations
615requested by the remote SOCKS client.
616.Pp
617Port forwardings can also be specified in the configuration file.
618Privileged ports can be forwarded only when
619logging in as root on the remote machine.
620IPv6 addresses can be specified by enclosing the address in square brackets.
621.Pp
622By default, TCP listening sockets on the server will be bound to the loopback
623interface only.
624This may be overridden by specifying a
625.Ar bind_address .
626An empty
627.Ar bind_address ,
628or the address
629.Ql * ,
630indicates that the remote socket should listen on all interfaces.
631Specifying a remote
632.Ar bind_address
633will only succeed if the server's
634.Cm GatewayPorts
635option is enabled (see
636.Xr sshd_config 5 ) .
637.Pp
638If the
639.Ar port
640argument is
641.Ql 0 ,
642the listen port will be dynamically allocated on the server and reported
643to the client at run time.
644When used together with
645.Ic -O forward
646the allocated port will be printed to the standard output.
647.Pp
648.It Fl S Ar ctl_path
649Specifies the location of a control socket for connection sharing,
650or the string
651.Dq none
652to disable connection sharing.
653Refer to the description of
654.Cm ControlPath
655and
656.Cm ControlMaster
657in
658.Xr ssh_config 5
659for details.
660.Pp
661.It Fl s
662May be used to request invocation of a subsystem on the remote system.
663Subsystems facilitate the use of SSH
664as a secure transport for other applications (e.g.\&
665.Xr sftp 1 ) .
666The subsystem is specified as the remote command.
667.Pp
668.It Fl T
669Disable pseudo-terminal allocation.
670.Pp
671.It Fl t
672Force pseudo-terminal allocation.
673This can be used to execute arbitrary
674screen-based programs on a remote machine, which can be very useful,
675e.g. when implementing menu services.
676Multiple
677.Fl t
678options force tty allocation, even if
679.Nm
680has no local tty.
681.Pp
682.It Fl V
683Display the version number and exit.
684.Pp
685.It Fl v
686Verbose mode.
687Causes
688.Nm
689to print debugging messages about its progress.
690This is helpful in
691debugging connection, authentication, and configuration problems.
692Multiple
693.Fl v
694options increase the verbosity.
695The maximum is 3.
696.Pp
697.It Fl W Ar host : Ns Ar port
698Requests that standard input and output on the client be forwarded to
699.Ar host
700on
701.Ar port
702over the secure channel.
703Implies
704.Fl N ,
705.Fl T ,
706.Cm ExitOnForwardFailure
707and
708.Cm ClearAllForwardings ,
709though these can be overridden in the configuration file or using
710.Fl o
711command line options.
712.Pp
713.It Fl w Xo
714.Ar local_tun Ns Op : Ns Ar remote_tun
715.Xc
716Requests
717tunnel
718device forwarding with the specified
719.Xr tun 4
720devices between the client
721.Pq Ar local_tun
722and the server
723.Pq Ar remote_tun .
724.Pp
725The devices may be specified by numerical ID or the keyword
726.Dq any ,
727which uses the next available tunnel device.
728If
729.Ar remote_tun
730is not specified, it defaults to
731.Dq any .
732See also the
733.Cm Tunnel
734and
735.Cm TunnelDevice
736directives in
737.Xr ssh_config 5 .
738If the
739.Cm Tunnel
740directive is unset, it is set to the default tunnel mode, which is
741.Dq point-to-point .
742.Pp
743.It Fl X
744Enables X11 forwarding.
745This can also be specified on a per-host basis in a configuration file.
746.Pp
747X11 forwarding should be enabled with caution.
748Users with the ability to bypass file permissions on the remote host
749(for the user's X authorization database)
750can access the local X11 display through the forwarded connection.
751An attacker may then be able to perform activities such as keystroke monitoring.
752.Pp
753For this reason, X11 forwarding is subjected to X11 SECURITY extension
754restrictions by default.
755Please refer to the
756.Nm
757.Fl Y
758option and the
759.Cm ForwardX11Trusted
760directive in
761.Xr ssh_config 5
762for more information.
763.Pp
764.It Fl x
765Disables X11 forwarding.
766.Pp
767.It Fl Y
768Enables trusted X11 forwarding.
769Trusted X11 forwardings are not subjected to the X11 SECURITY extension
770controls.
771.Pp
772.It Fl y
773Send log information using the
774.Xr syslog 3
775system module.
776By default this information is sent to stderr.
777.El
778.Pp
779.Nm
780may additionally obtain configuration data from
781a per-user configuration file and a system-wide configuration file.
782The file format and configuration options are described in
783.Xr ssh_config 5 .
784.Sh AUTHENTICATION
785The OpenSSH SSH client supports SSH protocol 2.
786.Pp
787The methods available for authentication are:
788GSSAPI-based authentication,
789host-based authentication,
790public key authentication,
791challenge-response authentication,
792and password authentication.
793Authentication methods are tried in the order specified above,
794though
795.Cm PreferredAuthentications
796can be used to change the default order.
797.Pp
798Host-based authentication works as follows:
799If the machine the user logs in from is listed in
800.Pa /etc/hosts.equiv
801or
802.Pa /etc/shosts.equiv
803on the remote machine, and the user names are
804the same on both sides, or if the files
805.Pa ~/.rhosts
806or
807.Pa ~/.shosts
808exist in the user's home directory on the
809remote machine and contain a line containing the name of the client
810machine and the name of the user on that machine, the user is
811considered for login.
812Additionally, the server
813.Em must
814be able to verify the client's
815host key (see the description of
816.Pa /etc/ssh/ssh_known_hosts
817and
818.Pa ~/.ssh/known_hosts ,
819below)
820for login to be permitted.
821This authentication method closes security holes due to IP
822spoofing, DNS spoofing, and routing spoofing.
823[Note to the administrator:
824.Pa /etc/hosts.equiv ,
825.Pa ~/.rhosts ,
826and the rlogin/rsh protocol in general, are inherently insecure and should be
827disabled if security is desired.]
828.Pp
829Public key authentication works as follows:
830The scheme is based on public-key cryptography,
831using cryptosystems
832where encryption and decryption are done using separate keys,
833and it is unfeasible to derive the decryption key from the encryption key.
834The idea is that each user creates a public/private
835key pair for authentication purposes.
836The server knows the public key, and only the user knows the private key.
837.Nm
838implements public key authentication protocol automatically,
839using one of the DSA, ECDSA, Ed25519 or RSA algorithms.
840The HISTORY section of
841.Xr ssl 8
842contains a brief discussion of the DSA and RSA algorithms.
843.Pp
844The file
845.Pa ~/.ssh/authorized_keys
846lists the public keys that are permitted for logging in.
847When the user logs in, the
848.Nm
849program tells the server which key pair it would like to use for
850authentication.
851The client proves that it has access to the private key
852and the server checks that the corresponding public key
853is authorized to accept the account.
854.Pp
855The server may inform the client of errors that prevented public key
856authentication from succeeding after authentication completes using a
857different method.
858These may be viewed by increasing the
859.Cm LogLevel
860to
861.Cm DEBUG
862or higher (e.g. by using the
863.Fl v
864flag).
865.Pp
866The user creates his/her key pair by running
867.Xr ssh-keygen 1 .
868This stores the private key in
869.Pa ~/.ssh/id_dsa
870(DSA),
871.Pa ~/.ssh/id_ecdsa
872(ECDSA),
873.Pa ~/.ssh/id_ed25519
874(Ed25519),
875or
876.Pa ~/.ssh/id_rsa
877(RSA)
878and stores the public key in
879.Pa ~/.ssh/id_dsa.pub
880(DSA),
881.Pa ~/.ssh/id_ecdsa.pub
882(ECDSA),
883.Pa ~/.ssh/id_ed25519.pub
884(Ed25519),
885or
886.Pa ~/.ssh/id_rsa.pub
887(RSA)
888in the user's home directory.
889The user should then copy the public key
890to
891.Pa ~/.ssh/authorized_keys
892in his/her home directory on the remote machine.
893The
894.Pa authorized_keys
895file corresponds to the conventional
896.Pa ~/.rhosts
897file, and has one key
898per line, though the lines can be very long.
899After this, the user can log in without giving the password.
900.Pp
901A variation on public key authentication
902is available in the form of certificate authentication:
903instead of a set of public/private keys,
904signed certificates are used.
905This has the advantage that a single trusted certification authority
906can be used in place of many public/private keys.
907See the CERTIFICATES section of
908.Xr ssh-keygen 1
909for more information.
910.Pp
911The most convenient way to use public key or certificate authentication
912may be with an authentication agent.
913See
914.Xr ssh-agent 1
915and (optionally) the
916.Cm AddKeysToAgent
917directive in
918.Xr ssh_config 5
919for more information.
920.Pp
921Challenge-response authentication works as follows:
922The server sends an arbitrary
923.Qq challenge
924text, and prompts for a response.
925Examples of challenge-response authentication include
926.Bx
927Authentication (see
928.Xr login.conf 5 )
929and PAM (some
930.Pf non- Ox
931systems).
932.Pp
933Finally, if other authentication methods fail,
934.Nm
935prompts the user for a password.
936The password is sent to the remote
937host for checking; however, since all communications are encrypted,
938the password cannot be seen by someone listening on the network.
939.Pp
940.Nm
941automatically maintains and checks a database containing
942identification for all hosts it has ever been used with.
943Host keys are stored in
944.Pa ~/.ssh/known_hosts
945in the user's home directory.
946Additionally, the file
947.Pa /etc/ssh/ssh_known_hosts
948is automatically checked for known hosts.
949Any new hosts are automatically added to the user's file.
950If a host's identification ever changes,
951.Nm
952warns about this and disables password authentication to prevent
953server spoofing or man-in-the-middle attacks,
954which could otherwise be used to circumvent the encryption.
955The
956.Cm StrictHostKeyChecking
957option can be used to control logins to machines whose
958host key is not known or has changed.
959.Pp
960When the user's identity has been accepted by the server, the server
961either executes the given command in a non-interactive session or,
962if no command has been specified, logs into the machine and gives
963the user a normal shell as an interactive session.
964All communication with
965the remote command or shell will be automatically encrypted.
966.Pp
967If an interactive session is requested
968.Nm
969by default will only request a pseudo-terminal (pty) for interactive
970sessions when the client has one.
971The flags
972.Fl T
973and
974.Fl t
975can be used to override this behaviour.
976.Pp
977If a pseudo-terminal has been allocated the
978user may use the escape characters noted below.
979.Pp
980If no pseudo-terminal has been allocated,
981the session is transparent and can be used to reliably transfer binary data.
982On most systems, setting the escape character to
983.Dq none
984will also make the session transparent even if a tty is used.
985.Pp
986The session terminates when the command or shell on the remote
987machine exits and all X11 and TCP connections have been closed.
988.Sh ESCAPE CHARACTERS
989When a pseudo-terminal has been requested,
990.Nm
991supports a number of functions through the use of an escape character.
992.Pp
993A single tilde character can be sent as
994.Ic ~~
995or by following the tilde by a character other than those described below.
996The escape character must always follow a newline to be interpreted as
997special.
998The escape character can be changed in configuration files using the
999.Cm EscapeChar
1000configuration directive or on the command line by the
1001.Fl e
1002option.
1003.Pp
1004The supported escapes (assuming the default
1005.Ql ~ )
1006are:
1007.Bl -tag -width Ds
1008.It Cm ~.
1009Disconnect.
1010.It Cm ~^Z
1011Background
1012.Nm .
1013.It Cm ~#
1014List forwarded connections.
1015.It Cm ~&
1016Background
1017.Nm
1018at logout when waiting for forwarded connection / X11 sessions to terminate.
1019.It Cm ~?
1020Display a list of escape characters.
1021.It Cm ~B
1022Send a BREAK to the remote system
1023(only useful if the peer supports it).
1024.It Cm ~C
1025Open command line.
1026Currently this allows the addition of port forwardings using the
1027.Fl L ,
1028.Fl R
1029and
1030.Fl D
1031options (see above).
1032It also allows the cancellation of existing port-forwardings
1033with
1034.Sm off
1035.Fl KL Oo Ar bind_address : Oc Ar port
1036.Sm on
1037for local,
1038.Sm off
1039.Fl KR Oo Ar bind_address : Oc Ar port
1040.Sm on
1041for remote and
1042.Sm off
1043.Fl KD Oo Ar bind_address : Oc Ar port
1044.Sm on
1045for dynamic port-forwardings.
1046.Ic !\& Ns Ar command
1047allows the user to execute a local command if the
1048.Ic PermitLocalCommand
1049option is enabled in
1050.Xr ssh_config 5 .
1051Basic help is available, using the
1052.Fl h
1053option.
1054.It Cm ~R
1055Request rekeying of the connection
1056(only useful if the peer supports it).
1057.It Cm ~V
1058Decrease the verbosity
1059.Pq Ic LogLevel
1060when errors are being written to stderr.
1061.It Cm ~v
1062Increase the verbosity
1063.Pq Ic LogLevel
1064when errors are being written to stderr.
1065.El
1066.Sh TCP FORWARDING
1067Forwarding of arbitrary TCP connections over the secure channel can
1068be specified either on the command line or in a configuration file.
1069One possible application of TCP forwarding is a secure connection to a
1070mail server; another is going through firewalls.
1071.Pp
1072In the example below, we look at encrypting communication between
1073an IRC client and server, even though the IRC server does not directly
1074support encrypted communications.
1075This works as follows:
1076the user connects to the remote host using
1077.Nm ,
1078specifying a port to be used to forward connections
1079to the remote server.
1080After that it is possible to start the service which is to be encrypted
1081on the client machine,
1082connecting to the same local port,
1083and
1084.Nm
1085will encrypt and forward the connection.
1086.Pp
1087The following example tunnels an IRC session from client machine
1088.Dq 127.0.0.1
1089(localhost)
1090to remote server
1091.Dq server.example.com :
1092.Bd -literal -offset 4n
1093$ ssh -f -L 1234:localhost:6667 server.example.com sleep 10
1094$ irc -c '#users' -p 1234 pinky 127.0.0.1
1095.Ed
1096.Pp
1097This tunnels a connection to IRC server
1098.Dq server.example.com ,
1099joining channel
1100.Dq #users ,
1101nickname
1102.Dq pinky ,
1103using port 1234.
1104It doesn't matter which port is used,
1105as long as it's greater than 1023
1106(remember, only root can open sockets on privileged ports)
1107and doesn't conflict with any ports already in use.
1108The connection is forwarded to port 6667 on the remote server,
1109since that's the standard port for IRC services.
1110.Pp
1111The
1112.Fl f
1113option backgrounds
1114.Nm
1115and the remote command
1116.Dq sleep 10
1117is specified to allow an amount of time
1118(10 seconds, in the example)
1119to start the service which is to be tunnelled.
1120If no connections are made within the time specified,
1121.Nm
1122will exit.
1123.Sh X11 FORWARDING
1124If the
1125.Cm ForwardX11
1126variable is set to
1127.Dq yes
1128(or see the description of the
1129.Fl X ,
1130.Fl x ,
1131and
1132.Fl Y
1133options above)
1134and the user is using X11 (the
1135.Ev DISPLAY
1136environment variable is set), the connection to the X11 display is
1137automatically forwarded to the remote side in such a way that any X11
1138programs started from the shell (or command) will go through the
1139encrypted channel, and the connection to the real X server will be made
1140from the local machine.
1141The user should not manually set
1142.Ev DISPLAY .
1143Forwarding of X11 connections can be
1144configured on the command line or in configuration files.
1145.Pp
1146The
1147.Ev DISPLAY
1148value set by
1149.Nm
1150will point to the server machine, but with a display number greater than zero.
1151This is normal, and happens because
1152.Nm
1153creates a
1154.Dq proxy
1155X server on the server machine for forwarding the
1156connections over the encrypted channel.
1157.Pp
1158.Nm
1159will also automatically set up Xauthority data on the server machine.
1160For this purpose, it will generate a random authorization cookie,
1161store it in Xauthority on the server, and verify that any forwarded
1162connections carry this cookie and replace it by the real cookie when
1163the connection is opened.
1164The real authentication cookie is never
1165sent to the server machine (and no cookies are sent in the plain).
1166.Pp
1167If the
1168.Cm ForwardAgent
1169variable is set to
1170.Dq yes
1171(or see the description of the
1172.Fl A
1173and
1174.Fl a
1175options above) and
1176the user is using an authentication agent, the connection to the agent
1177is automatically forwarded to the remote side.
1178.Sh VERIFYING HOST KEYS
1179When connecting to a server for the first time,
1180a fingerprint of the server's public key is presented to the user
1181(unless the option
1182.Cm StrictHostKeyChecking
1183has been disabled).
1184Fingerprints can be determined using
1185.Xr ssh-keygen 1 :
1186.Pp
1187.Dl $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
1188.Pp
1189If the fingerprint is already known, it can be matched
1190and the key can be accepted or rejected.
1191If only legacy (MD5) fingerprints for the server are available, the
1192.Xr ssh-keygen 1
1193.Fl E
1194option may be used to downgrade the fingerprint algorithm to match.
1195.Pp
1196Because of the difficulty of comparing host keys
1197just by looking at fingerprint strings,
1198there is also support to compare host keys visually,
1199using
1200.Em random art .
1201By setting the
1202.Cm VisualHostKey
1203option to
1204.Dq yes ,
1205a small ASCII graphic gets displayed on every login to a server, no matter
1206if the session itself is interactive or not.
1207By learning the pattern a known server produces, a user can easily
1208find out that the host key has changed when a completely different pattern
1209is displayed.
1210Because these patterns are not unambiguous however, a pattern that looks
1211similar to the pattern remembered only gives a good probability that the
1212host key is the same, not guaranteed proof.
1213.Pp
1214To get a listing of the fingerprints along with their random art for
1215all known hosts, the following command line can be used:
1216.Pp
1217.Dl $ ssh-keygen -lv -f ~/.ssh/known_hosts
1218.Pp
1219If the fingerprint is unknown,
1220an alternative method of verification is available:
1221SSH fingerprints verified by DNS.
1222An additional resource record (RR),
1223SSHFP,
1224is added to a zonefile
1225and the connecting client is able to match the fingerprint
1226with that of the key presented.
1227.Pp
1228In this example, we are connecting a client to a server,
1229.Dq host.example.com .
1230The SSHFP resource records should first be added to the zonefile for
1231host.example.com:
1232.Bd -literal -offset indent
1233$ ssh-keygen -r host.example.com.
1234.Ed
1235.Pp
1236The output lines will have to be added to the zonefile.
1237To check that the zone is answering fingerprint queries:
1238.Pp
1239.Dl $ dig -t SSHFP host.example.com
1240.Pp
1241Finally the client connects:
1242.Bd -literal -offset indent
1243$ ssh -o "VerifyHostKeyDNS ask" host.example.com
1244[...]
1245Matching host key fingerprint found in DNS.
1246Are you sure you want to continue connecting (yes/no)?
1247.Ed
1248.Pp
1249See the
1250.Cm VerifyHostKeyDNS
1251option in
1252.Xr ssh_config 5
1253for more information.
1254.Sh SSH-BASED VIRTUAL PRIVATE NETWORKS
1255.Nm
1256contains support for Virtual Private Network (VPN) tunnelling
1257using the
1258.Xr tun 4
1259network pseudo-device,
1260allowing two networks to be joined securely.
1261The
1262.Xr sshd_config 5
1263configuration option
1264.Cm PermitTunnel
1265controls whether the server supports this,
1266and at what level (layer 2 or 3 traffic).
1267.Pp
1268The following example would connect client network 10.0.50.0/24
1269with remote network 10.0.99.0/24 using a point-to-point connection
1270from 10.1.1.1 to 10.1.1.2,
1271provided that the SSH server running on the gateway to the remote network,
1272at 192.168.1.15, allows it.
1273.Pp
1274On the client:
1275.Bd -literal -offset indent
1276# ssh -f -w 0:1 192.168.1.15 true
1277# ifconfig tun0 10.1.1.1 10.1.1.2 netmask 255.255.255.252
1278# route add 10.0.99.0/24 10.1.1.2
1279.Ed
1280.Pp
1281On the server:
1282.Bd -literal -offset indent
1283# ifconfig tun1 10.1.1.2 10.1.1.1 netmask 255.255.255.252
1284# route add 10.0.50.0/24 10.1.1.1
1285.Ed
1286.Pp
1287Client access may be more finely tuned via the
1288.Pa /root/.ssh/authorized_keys
1289file (see below) and the
1290.Cm PermitRootLogin
1291server option.
1292The following entry would permit connections on
1293.Xr tun 4
1294device 1 from user
1295.Dq jane
1296and on tun device 2 from user
1297.Dq john ,
1298if
1299.Cm PermitRootLogin
1300is set to
1301.Dq forced-commands-only :
1302.Bd -literal -offset 2n
1303tunnel="1",command="sh /etc/netstart tun1" ssh-rsa ... jane
1304tunnel="2",command="sh /etc/netstart tun2" ssh-rsa ... john
1305.Ed
1306.Pp
1307Since an SSH-based setup entails a fair amount of overhead,
1308it may be more suited to temporary setups,
1309such as for wireless VPNs.
1310More permanent VPNs are better provided by tools such as
1311.Xr ipsecctl 8
1312and
1313.Xr isakmpd 8 .
1314.Sh ENVIRONMENT
1315.Nm
1316will normally set the following environment variables:
1317.Bl -tag -width "SSH_ORIGINAL_COMMAND"
1318.It Ev DISPLAY
1319The
1320.Ev DISPLAY
1321variable indicates the location of the X11 server.
1322It is automatically set by
1323.Nm
1324to point to a value of the form
1325.Dq hostname:n ,
1326where
1327.Dq hostname
1328indicates the host where the shell runs, and
1329.Sq n
1330is an integer \*(Ge 1.
1331.Nm
1332uses this special value to forward X11 connections over the secure
1333channel.
1334The user should normally not set
1335.Ev DISPLAY
1336explicitly, as that
1337will render the X11 connection insecure (and will require the user to
1338manually copy any required authorization cookies).
1339.It Ev HOME
1340Set to the path of the user's home directory.
1341.It Ev LOGNAME
1342Synonym for
1343.Ev USER ;
1344set for compatibility with systems that use this variable.
1345.It Ev MAIL
1346Set to the path of the user's mailbox.
1347.It Ev PATH
1348Set to the default
1349.Ev PATH ,
1350as specified when compiling
1351.Nm .
1352.It Ev SSH_ASKPASS
1353If
1354.Nm
1355needs a passphrase, it will read the passphrase from the current
1356terminal if it was run from a terminal.
1357If
1358.Nm
1359does not have a terminal associated with it but
1360.Ev DISPLAY
1361and
1362.Ev SSH_ASKPASS
1363are set, it will execute the program specified by
1364.Ev SSH_ASKPASS
1365and open an X11 window to read the passphrase.
1366This is particularly useful when calling
1367.Nm
1368from a
1369.Pa .xsession
1370or related script.
1371(Note that on some machines it
1372may be necessary to redirect the input from
1373.Pa /dev/null
1374to make this work.)
1375.It Ev SSH_AUTH_SOCK
1376Identifies the path of a
1377.Ux Ns -domain
1378socket used to communicate with the agent.
1379.It Ev SSH_CONNECTION
1380Identifies the client and server ends of the connection.
1381The variable contains
1382four space-separated values: client IP address, client port number,
1383server IP address, and server port number.
1384.It Ev SSH_ORIGINAL_COMMAND
1385This variable contains the original command line if a forced command
1386is executed.
1387It can be used to extract the original arguments.
1388.It Ev SSH_TTY
1389This is set to the name of the tty (path to the device) associated
1390with the current shell or command.
1391If the current session has no tty,
1392this variable is not set.
1393.It Ev SSH_TUNNEL
1394Optionally set by
1395.Xr sshd 8
1396to contain the interface names assigned if tunnel forwarding was
1397requested by the client.
1398.It Ev SSH_USER_AUTH
1399Optionally set by
1400.Xr sshd 8 ,
1401this variable may contain a pathname to a file that lists the authentication
1402methods successfully used when the session was established, including any
1403public keys that were used.
1404.It Ev TZ
1405This variable is set to indicate the present time zone if it
1406was set when the daemon was started (i.e. the daemon passes the value
1407on to new connections).
1408.It Ev USER
1409Set to the name of the user logging in.
1410.El
1411.Pp
1412Additionally,
1413.Nm
1414reads
1415.Pa ~/.ssh/environment ,
1416and adds lines of the format
1417.Dq VARNAME=value
1418to the environment if the file exists and users are allowed to
1419change their environment.
1420For more information, see the
1421.Cm PermitUserEnvironment
1422option in
1423.Xr sshd_config 5 .
1424.Sh FILES
1425.Bl -tag -width Ds -compact
1426.It Pa ~/.rhosts
1427This file is used for host-based authentication (see above).
1428On some machines this file may need to be
1429world-readable if the user's home directory is on an NFS partition,
1430because
1431.Xr sshd 8
1432reads it as root.
1433Additionally, this file must be owned by the user,
1434and must not have write permissions for anyone else.
1435The recommended
1436permission for most machines is read/write for the user, and not
1437accessible by others.
1438.Pp
1439.It Pa ~/.shosts
1440This file is used in exactly the same way as
1441.Pa .rhosts ,
1442but allows host-based authentication without permitting login with
1443rlogin/rsh.
1444.Pp
1445.It Pa ~/.ssh/
1446This directory is the default location for all user-specific configuration
1447and authentication information.
1448There is no general requirement to keep the entire contents of this directory
1449secret, but the recommended permissions are read/write/execute for the user,
1450and not accessible by others.
1451.Pp
1452.It Pa ~/.ssh/authorized_keys
1453Lists the public keys (DSA, ECDSA, Ed25519, RSA)
1454that can be used for logging in as this user.
1455The format of this file is described in the
1456.Xr sshd 8
1457manual page.
1458This file is not highly sensitive, but the recommended
1459permissions are read/write for the user, and not accessible by others.
1460.Pp
1461.It Pa ~/.ssh/config
1462This is the per-user configuration file.
1463The file format and configuration options are described in
1464.Xr ssh_config 5 .
1465Because of the potential for abuse, this file must have strict permissions:
1466read/write for the user, and not writable by others.
1467.Pp
1468.It Pa ~/.ssh/environment
1469Contains additional definitions for environment variables; see
1470.Sx ENVIRONMENT ,
1471above.
1472.Pp
1473.It Pa ~/.ssh/id_dsa
1474.It Pa ~/.ssh/id_ecdsa
1475.It Pa ~/.ssh/id_ed25519
1476.It Pa ~/.ssh/id_rsa
1477Contains the private key for authentication.
1478These files
1479contain sensitive data and should be readable by the user but not
1480accessible by others (read/write/execute).
1481.Nm
1482will simply ignore a private key file if it is accessible by others.
1483It is possible to specify a passphrase when
1484generating the key which will be used to encrypt the
1485sensitive part of this file using 3DES.
1486.Pp
1487.It Pa ~/.ssh/id_dsa.pub
1488.It Pa ~/.ssh/id_ecdsa.pub
1489.It Pa ~/.ssh/id_ed25519.pub
1490.It Pa ~/.ssh/id_rsa.pub
1491Contains the public key for authentication.
1492These files are not
1493sensitive and can (but need not) be readable by anyone.
1494.Pp
1495.It Pa ~/.ssh/known_hosts
1496Contains a list of host keys for all hosts the user has logged into
1497that are not already in the systemwide list of known host keys.
1498See
1499.Xr sshd 8
1500for further details of the format of this file.
1501.Pp
1502.It Pa ~/.ssh/rc
1503Commands in this file are executed by
1504.Nm
1505when the user logs in, just before the user's shell (or command) is
1506started.
1507See the
1508.Xr sshd 8
1509manual page for more information.
1510.Pp
1511.It Pa /etc/hosts.equiv
1512This file is for host-based authentication (see above).
1513It should only be writable by root.
1514.Pp
1515.It Pa /etc/shosts.equiv
1516This file is used in exactly the same way as
1517.Pa hosts.equiv ,
1518but allows host-based authentication without permitting login with
1519rlogin/rsh.
1520.Pp
1521.It Pa /etc/ssh/ssh_config
1522Systemwide configuration file.
1523The file format and configuration options are described in
1524.Xr ssh_config 5 .
1525.Pp
1526.It Pa /etc/ssh/ssh_host_key
1527.It Pa /etc/ssh/ssh_host_dsa_key
1528.It Pa /etc/ssh/ssh_host_ecdsa_key
1529.It Pa /etc/ssh/ssh_host_ed25519_key
1530.It Pa /etc/ssh/ssh_host_rsa_key
1531These files contain the private parts of the host keys
1532and are used for host-based authentication.
1533.Pp
1534.It Pa /etc/ssh/ssh_known_hosts
1535Systemwide list of known host keys.
1536This file should be prepared by the
1537system administrator to contain the public host keys of all machines in the
1538organization.
1539It should be world-readable.
1540See
1541.Xr sshd 8
1542for further details of the format of this file.
1543.Pp
1544.It Pa /etc/ssh/sshrc
1545Commands in this file are executed by
1546.Nm
1547when the user logs in, just before the user's shell (or command) is started.
1548See the
1549.Xr sshd 8
1550manual page for more information.
1551.El
1552.Sh EXIT STATUS
1553.Nm
1554exits with the exit status of the remote command or with 255
1555if an error occurred.
1556.Sh SEE ALSO
1557.Xr scp 1 ,
1558.Xr sftp 1 ,
1559.Xr ssh-add 1 ,
1560.Xr ssh-agent 1 ,
1561.Xr ssh-keygen 1 ,
1562.Xr ssh-keyscan 1 ,
1563.Xr tun 4 ,
1564.Xr ssh_config 5 ,
1565.Xr ssh-keysign 8 ,
1566.Xr sshd 8
1567.Sh STANDARDS
1568.Rs
1569.%A S. Lehtinen
1570.%A C. Lonvick
1571.%D January 2006
1572.%R RFC 4250
1573.%T The Secure Shell (SSH) Protocol Assigned Numbers
1574.Re
1575.Pp
1576.Rs
1577.%A T. Ylonen
1578.%A C. Lonvick
1579.%D January 2006
1580.%R RFC 4251
1581.%T The Secure Shell (SSH) Protocol Architecture
1582.Re
1583.Pp
1584.Rs
1585.%A T. Ylonen
1586.%A C. Lonvick
1587.%D January 2006
1588.%R RFC 4252
1589.%T The Secure Shell (SSH) Authentication Protocol
1590.Re
1591.Pp
1592.Rs
1593.%A T. Ylonen
1594.%A C. Lonvick
1595.%D January 2006
1596.%R RFC 4253
1597.%T The Secure Shell (SSH) Transport Layer Protocol
1598.Re
1599.Pp
1600.Rs
1601.%A T. Ylonen
1602.%A C. Lonvick
1603.%D January 2006
1604.%R RFC 4254
1605.%T The Secure Shell (SSH) Connection Protocol
1606.Re
1607.Pp
1608.Rs
1609.%A J. Schlyter
1610.%A W. Griffin
1611.%D January 2006
1612.%R RFC 4255
1613.%T Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints
1614.Re
1615.Pp
1616.Rs
1617.%A F. Cusack
1618.%A M. Forssen
1619.%D January 2006
1620.%R RFC 4256
1621.%T Generic Message Exchange Authentication for the Secure Shell Protocol (SSH)
1622.Re
1623.Pp
1624.Rs
1625.%A J. Galbraith
1626.%A P. Remaker
1627.%D January 2006
1628.%R RFC 4335
1629.%T The Secure Shell (SSH) Session Channel Break Extension
1630.Re
1631.Pp
1632.Rs
1633.%A M. Bellare
1634.%A T. Kohno
1635.%A C. Namprempre
1636.%D January 2006
1637.%R RFC 4344
1638.%T The Secure Shell (SSH) Transport Layer Encryption Modes
1639.Re
1640.Pp
1641.Rs
1642.%A B. Harris
1643.%D January 2006
1644.%R RFC 4345
1645.%T Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol
1646.Re
1647.Pp
1648.Rs
1649.%A M. Friedl
1650.%A N. Provos
1651.%A W. Simpson
1652.%D March 2006
1653.%R RFC 4419
1654.%T Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol
1655.Re
1656.Pp
1657.Rs
1658.%A J. Galbraith
1659.%A R. Thayer
1660.%D November 2006
1661.%R RFC 4716
1662.%T The Secure Shell (SSH) Public Key File Format
1663.Re
1664.Pp
1665.Rs
1666.%A D. Stebila
1667.%A J. Green
1668.%D December 2009
1669.%R RFC 5656
1670.%T Elliptic Curve Algorithm Integration in the Secure Shell Transport Layer
1671.Re
1672.Pp
1673.Rs
1674.%A A. Perrig
1675.%A D. Song
1676.%D 1999
1677.%O International Workshop on Cryptographic Techniques and E-Commerce (CrypTEC '99)
1678.%T Hash Visualization: a New Technique to improve Real-World Security
1679.Re
1680.Sh AUTHORS
1681OpenSSH is a derivative of the original and free
1682ssh 1.2.12 release by Tatu Ylonen.
1683Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
1684Theo de Raadt and Dug Song
1685removed many bugs, re-added newer features and
1686created OpenSSH.
1687Markus Friedl contributed the support for SSH
1688protocol versions 1.5 and 2.0.
1689