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