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