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