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