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