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