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