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