Google


     ssh [-l login_name] hostname | user@hostname [command]

     ssh  [-afgknqstvxACNPTX1246]  [-b  bind_address]   [-c   ci-
pher_spec]
         [-e  escape_char] [-i identity_file] [-l login_name] [-m
mac_spec]
         [-o   option]   [-p   port]    [-F    configfile]    [-L
port:host:hostport] [-R
         port:host:hostport]  [-D  port] hostname | user@hostname
[command]

DESCRIPTION
     ssh (SSH client) is a program for logging into a remote  ma-
chine and for
     executing  commands  on a remote machine.  It is intended to
replace rlogin
     and rsh, and provide secure encrypted communications between
two
     untrusted  hosts  over an insecure network.  X11 connections
and arbitrary
     TCP/IP ports can also be forwarded over the secure  channel.

     ssh connects and logs into the specified hostname.  The user
must prove
     his/her identity to the remote machine using one of  several
methods
     depending on the protocol version used:

   SSH protocol version 1

     First,  if  the  machine  the user logs in from is listed in
/etc/hosts.equiv
     or /etc/shosts.equiv on the remote  machine,  and  the  user
names are the
     same on both sides, the user is immediately permitted to log
in.  Second,
     if .rhosts or .shosts exists in the user's home directory on
the remote
     machine  and  contains  a  line  containing  the name of the
client machine and
     the name of the user on that machine, the user is  permitted
to log in.
     This form of authentication alone is normally not allowed by
the server
     because it is not secure.

     The  second  authentication  method   is   the   rhosts   or
hosts.equiv method comM--
     bined  with RSA-based host authentication.  It means that if
the login
     would  be   permitted   by   $HOME/.rhosts,   $HOME/.shosts,
/etc/hosts.equiv, or
     As a third authentication method, ssh supports RSA based au-
thentication.
     The scheme is based on public-key  cryptography:  there  are
cryptosystems
     where  encryption  and  decryption  are  done using separate
keys, and it is
     not possible to derive the decryption key from  the  encryp-
tion key.  RSA
     is  one  such  system.  The idea is that each user creates a
public/private
     key pair for authentication purposes.  The server knows  the
public key,
     and only the user knows the private key.  The file
     $HOME/.ssh/authorized_keys  lists  the  public keys that are
permitted for
     logging in.  When the user logs in, the  ssh  program  tells
the server
     which key pair it would like to use for authentication.  The
server
     checks if this key is permitted, and if so, sends  the  user
(actually the
     ssh  program  running  on behalf of the user) a challenge, a
random number,
     encrypted by the user's public key.  The challenge can  only
be decrypted
     using  the  proper  private key.  The user's client then de-
crypts the chalM--
     lenge using the private key, proving that he/she  knows  the
private key
     but without disclosing it to the server.

     ssh  implements the RSA authentication protocol automatical-
ly.  The user
     creates his/her RSA key pair by running ssh-keygen(1).  This
stores the
     private key in $HOME/.ssh/identity and the public key in
     $HOME/.ssh/identity.pub  in  the user's home directory.  The
user should
     then copy the identity.pub to $HOME/.ssh/authorized_keys  in
his/her home
     directory  on  the  remote machine (the authorized_keys file
corresponds to
     the conventional $HOME/.rhosts file, and  has  one  key  per
line, though the
     lines  can  be  very long).  After this, the user can log in
without giving
     the password.  RSA authentication is much more  secure  than
rhosts authenM--
     tication.

     The  most  convenient  way  to use RSA authentication may be
with an authenM--
     methods are available.  Using the default values for
     PreferredAuthentications, the client will try  to  authenti-
cate first using
     the  hostbased  method;  if this method fails public key au-
thentication is
     attempted, and finally if this method fails  keyboard-inter-
active and
     password authentication are tried.

     The  public  key method is similar to RSA authentication de-
scribed in the
     previous section and allows the RSA or DSA algorithm  to  be
used: The
     client   uses   his   private   key,   $HOME/.ssh/id_dsa  or
$HOME/.ssh/id_rsa, to
     sign the session identifier and  sends  the  result  to  the
server.  The
     server checks whether the matching public key is listed in
     $HOME/.ssh/authorized_keys and grants access if both the key
is found and
     the signature is correct.  The session identifier is derived
from a
     shared  Diffie-Hellman value and is only known to the client
and the
     server.

     If public key authentication fails or  is  not  available  a
password can be
     sent  encrypted  to  the  remote host for proving the user's
identity.

     Additionally, ssh supports hostbased or  challenge  response
authenticaM--
     tion.

     Protocol 2 provides additional mechanisms for confidentiali-
ty (the trafM--
     fic is encrypted using 3DES, Blowfish, CAST128  or  Arcfour)
and integrity
     (hmac-md5,  hmac-sha1).  Note that protocol 1 lacks a strong
mechanism for
     ensuring the integrity of the connection.

   Login session and remote execution

     When the user's identity has been accepted  by  the  server,
the server
     either  executes the given command, or logs into the machine
and gives the
     user a normal shell on the remote machine.   All  communica-
tion with the
     remote command or shell will be automatically encrypted.

mote machine
     exits and all X11 and TCP/IP connections have  been  closed.
The exit staM--
     tus  of the remote program is returned as the exit status of
ssh.

   Escape Characters

     When a pseudo terminal has been requested,  ssh  supports  a
number of funcM--
     tions through the use of an escape character.

     A  single  tilde character can be sent as ~~ or by following
the tilde by a
     character other than  those  described  below.   The  escape
character must
     always  follow  a newline to be interpreted as special.  The
escape characM--
     ter can be changed in  configuration  files  using  the  Es-
capeChar configuraM--
     tion directive or on the command line by the -e option.

     The supported escapes (assuming the default `~') are:

     ~.      Disconnect

     ~^Z     Background ssh

     ~#      List forwarded connections

     ~&       Background ssh at logout when waiting for forwarded
connection /
             X11 sessions to terminate

     ~?      Display a list of escape characters

     ~C      Open command line (only useful for adding port  for-
wardings using
             the -L and -R options)

     ~R       Request rekeying of the connection (only useful for
SSH protocol
             version 2 and if the peer supports it)

   X11 and TCP forwarding

     If the ForwardX11 variable is set to ``yes''  (or,  see  the
description of
     the -X and -x options described later) and the user is using
X11 (the
     DISPLAY environment variable is set), the connection to  the
X11 display
     display  number greater than zero.  This is normal, and hap-
pens because
     ssh creates a ``proxy'' X server on the server  machine  for
forwarding the
     connections over the encrypted channel.

     ssh  will  also  automatically set up Xauthority data on the
server machine.
     For this purpose, it will generate  a  random  authorization
cookie, store
     it in Xauthority on the server, and verify that any forward-
ed connections
     carry this cookie and replace it by the real cookie when the
connection
     is  opened.  The real authentication cookie is never sent to
the server
     machine (and no cookies are sent in the plain).

     If the user is using an authentication agent, the connection
to the agent
     is  automatically  forwarded  to the remote side unless dis-
abled on the comM--
     mand line or in a configuration file.

     Forwarding of arbitrary TCP/IP connections over  the  secure
channel can be
     specified  either  on the command line or in a configuration
file.  One
     possible application of TCP/IP forwarding is a  secure  con-
nection to an
     electronic purse; another is going through firewalls.

   Server authentication

     ssh automatically maintains and checks a database containing
identificaM--
     tions for all hosts it has ever been used with.   Host  keys
are stored in
     $HOME/.ssh/known_hosts  in the user's home directory.  Addi-
tionally, the
     file /etc/ssh/ssh_known_hosts is automatically  checked  for
known hosts.
     Any  new  hosts  are automatically added to the user's file.
If a host's
     identification ever changes, ssh warns about this  and  dis-
ables password
     authentication  to  prevent  a trojan horse from getting the
user's passM--
     word.  Another purpose of this mechanism is to prevent  man-
in-the-middle
     attacks  which could otherwise be used to circumvent the en-
cryption.  The

     -b bind_address
             Specify the interface to transmit from  on  machines
with multiple
             interfaces or aliased addresses.

     -c blowfish|3des|des
             Selects  the  cipher  to use for encrypting the ses-
sion.  3des is
             used by default.  It is believed to be secure.  3des
(triple-des)
             is an encrypt-decrypt-encrypt triple with three dif-
ferent keys.
             blowfish is a fast block cipher, it appears very se-
cure and is
             much faster than 3des.  des is only supported in the
ssh client
             for interoperability with legacy protocol  1  imple-
mentations that
             do not support the 3des cipher.  Its use is strongly
discouraged
             due to cryptographic weaknesses.

     -c cipher_spec
             Additionally, for protocol version 2  a  comma-sepa-
rated list of
             ciphers  can  be  specified  in order of preference.
See Ciphers for
             more information.

     -e ch|^ch|none
             Sets the escape character for sessions  with  a  pty
(default: `~').
             The  escape  character is only recognized at the be-
ginning of a
             line.  The escape character followed by a dot  (`.')
closes the
             connection,  followed by control-Z suspends the con-
nection, and
             followed by itself sends the escape character  once.
Setting the
             character to ``none'' disables any escapes and makes
the session
             fully transparent.

     -f      Requests ssh to go to background just before command
execution.
             This  is useful if ssh is going to ask for passwords
or
             passphrases, but the user  wants  it  in  the  back-
ground.  This
             implies  -n.   The recommended way to start X11 pro-

files may
             also be specified on a per-host basis in the config-
uration file.
             It is possible to have multiple -i options (and mul-
tiple identiM--
             ties specified in configuration files).

     -I smartcard_device
             Specifies  which  smartcard device to use. The argu-
ment is the
             device ssh should use to communicate with  a  smart-
card used for
             storing the user's private RSA key.

     -k       Disables forwarding of Kerberos tickets and AFS to-
kens.  This may
             also be specified on a per-host basis in the config-
uration file.

     -l login_name
             Specifies  the  user  to log in as on the remote ma-
chine.  This also
             may be specified on a per-host basis in the configu-
ration file.

     -m mac_spec
             Additionally,  for  protocol version 2 a comma-sepa-
rated list of
             MAC (message authentication code) algorithms can  be
specified in
             order  of preference.  See the MACs keyword for more
information.

     -n      Redirects stdin from /dev/null  (actually,  prevents
reading from
             stdin).   This  must  be used when ssh is run in the
background.  A
             common trick is to use this to run X11 programs on a
remote
             machine.   For  example,  ssh  -n  shadows.cs.hut.fi
emacs & will
             start an emacs on  shadows.cs.hut.fi,  and  the  X11
connection will
             be  automatically  forwarded over an encrypted chan-
nel.  The ssh
             program will be put in the background.   (This  does
not work if
             ssh  needs  to ask for a password or passphrase; see
also the -f
             option.)

     -N      Do not execute a remote command.  This is useful for

     -P      Use a non-privileged port for outgoing  connections.
This can be
             used  if a firewall does not permit connections from
privileged
             ports.  Note  that  this  option  turns  off  Rhost-
sAuthentication and
             RhostsRSAAuthentication for older servers.

     -q       Quiet mode.  Causes all warning and diagnostic mes-
sages to be
             suppressed.

     -s      May be used to request invocation of a subsystem  on
the remote
             system.  Subsystems are a feature of the SSH2 proto-
col which
             facilitate the use of SSH as a secure transport  for
other appliM--
             cations  (eg.  sftp).  The subsystem is specified as
the remote comM--
             mand.

     -t      Force pseudo-tty allocation.  This can  be  used  to
execute arbiM--
             trary  screen-based  programs  on  a remote machine,
which can be
             very useful, e.g., when implementing menu  services.
Multiple -t
             options force tty allocation, even if ssh has no lo-
cal tty.

     -T      Disable pseudo-tty allocation.

     -v      Verbose mode.  Causes ssh to  print  debugging  mes-
sages about its
             progress.   This is helpful in debugging connection,
authenticaM--
             tion, and configuration problems.  Multiple  -v  op-
tions increases
             the verbosity.  Maximum is 3.

     -x      Disables X11 forwarding.

     -X       Enables X11 forwarding.  This can also be specified
on a per-host
             basis in a configuration file.

     -C      Requests compression of all data  (including  stdin,
stdout,
             stderr,  and  data for forwarded X11 and TCP/IP con-
nections).  The
file.  If a conM--
             figuration file is given on the  command  line,  the
system-wide
             configuration file (/etc/ssh/ssh_config) will be ig-
nored.  The
             default  for  the  per-user  configuration  file  is
$HOME/.ssh/config.

     -L port:host:hostport
             Specifies  that the given port on the local (client)
host is to be
             forwarded to the given host and port on  the  remote
side.  This
             works  by  allocating  a socket to listen to port on
the local side,
             and whenever a connection is made to this port,  the
connection is
             forwarded  over the secure channel, and a connection
is made to
             host port hostport from the  remote  machine.   Port
forwardings can
             also  be  specified in the configuration file.  Only
root can forM--
             ward privileged ports.  IPv6 addresses can be speci-
fied with an
             alternative syntax: port/host/hostport

     -R port:host:hostport
             Specifies that the given port on the remote (server)
host is to
             be forwarded to the given host and port on the local
side.  This
             works  by  allocating  a socket to listen to port on
the remote
             side, and whenever a  connection  is  made  to  this
port, the connecM--
             tion  is  forwarded  over  the secure channel, and a
connection is
             made to host port hostport from the  local  machine.
Port forwardM--
             ings  can  also  be  specified  in the configuration
file.  Privileged
             ports can be forwarded only when logging in as  root
on the remote
             machine.   IPv6  addresses  can be specified with an
alternative
             syntax: port/host/hostport

     -D port
             Specifies a local ``dynamic'' application-level port
forwarding.
             This  works by allocating a socket to listen to port

     -1      Forces ssh to try protocol version 1 only.

     -2      Forces ssh to try protocol version 2 only.

     -4      Forces ssh to use IPv4 addresses only.

     -6      Forces ssh to use IPv6 addresses only.

CONFIGURATION FILES
     ssh may additionally obtain configuration data from  a  per-
user configuraM--
     tion  file  and  a system-wide configuration file.  The file
format and conM--
     figuration options are described in ssh_config(5).

ENVIRONMENT
     ssh will normally set the following environment variables:

     DISPLAY
             The DISPLAY variable indicates the location  of  the
X11 server.
             It  is  automatically set by ssh to point to a value
of the form
             ``hostname:n'' where  hostname  indicates  the  host
where the shell
             runs,  and n is an integer >= 1.  ssh uses this spe-
cial value to
             forward X11 connections  over  the  secure  channel.
The user should
             normally  not  set  DISPLAY explicitly, as that will
render the X11
             connection insecure (and will require  the  user  to
manually copy
             any required authorization cookies).

     HOME    Set to the path of the user's home directory.

     LOGNAME
             Synonym for USER; set for compatibility with systems
that use
             this variable.

     MAIL    Set to the path of the user's mailbox.

     PATH    Set to the default PATH, as specified when compiling
ssh.

     SSH_ASKPASS
             If   ssh  needs  a  passphrase,  it  will  read  the
passphrase from the
             current terminal if it was run from a terminal.   If
             Identifies the path of a unix-domain socket used  to
communicate
             with the agent.

     SSH_CLIENT
             Identifies  the  client  end of the connection.  The
variable conM--
             tains three space-separated  values:  client  ip-ad-
dress, client
             port number, and server port number.

     SSH_ORIGINAL_COMMAND
             The variable contains the original command line if a
forced comM--
             mand is executed.  It can be  used  to  extract  the
original arguM--
             ments.

     SSH_TTY
             This  is set to the name of the tty (path to the de-
vice) associM--
             ated with the current shell or command.  If the cur-
rent session
             has no tty, this variable is not set.

     TZ      The timezone variable is set to indicate the present
timezone if
             it was set when the daemon was  started  (i.e.,  the
daemon passes
             the value on to new connections).

     USER    Set to the name of the user logging in.

     Additionally,  ssh  reads  $HOME/.ssh/environment,  and adds
lines of the
     format ``VARNAME=value'' to the environment.

FILES
     $HOME/.ssh/known_hosts
             Records host keys for all hosts the user has  logged
into that are
             not in /etc/ssh/ssh_known_hosts.  See sshd(8).

     $HOME/.ssh/identity, $HOME/.ssh/id_dsa, $HOME/.ssh/id_rsa
             Contains  the  authentication  identity of the user.
They are for
             protocol 1 RSA, protocol 2 DSA, and protocol 2  RSA,
respectively.
             These  files  contain  sensitive  data and should be
readable by the
             user but not accessible by  others  (read/write/exe-
cute).  Note
             $HOME/.ssh/identity.pub file should be added to
             $HOME/.ssh/authorized_keys on all machines where the
user wishes
             to log in using protocol version 1  RSA  authentica-
tion.  The conM--
             tents     of     the    $HOME/.ssh/id_dsa.pub    and
$HOME/.ssh/id_rsa.pub file
             should be added to $HOME/.ssh/authorized_keys on all
machines
             where  the user wishes to log in using protocol ver-
sion 2 DSA/RSA
             authentication.  These files are not  sensitive  and
can (but need
             not)  be  readable by anyone.  These files are never
used automatiM--
             cally and are not necessary; they are only  provided
for the conM--
             venience of the user.

     $HOME/.ssh/config
             This  is  the per-user configuration file.  The file
format and
             configuration  options  are  described  in  ssh_con-
fig(5).

     $HOME/.ssh/authorized_keys
             Lists the public keys (RSA/DSA) that can be used for
logging in
             as this user.  The format of this file is  described
in the
             sshd(8)  manual page.  In the simplest form the for-
mat is the same
             as the .pub identity files.  This file is not highly
sensitive,
             but  the  recommended permissions are read/write for
the user, and
             not accessible by others.

     /etc/ssh/ssh_known_hosts
             Systemwide list  of  known  host  keys.   This  file
should be prepared
             by  the  system  administrator to contain the public
host keys of
             all machines in the organization.  This file  should
be world-
             readable.   This  file contains public keys, one per
line, in the
             following format (fields separated by spaces):  sys-
tem name, pubM--
             lic  key and optional comment field.  When different
names are
             used for the same machine, all such names should  be

fool host
             authentication.

     /etc/ssh/ssh_config
             Systemwide  configuration file.  The file format and
configuration
             options are described in ssh_config(5).

     /etc/ssh/ssh_host_key, /etc/ssh/ssh_host_dsa_key,
             /etc/ssh/ssh_host_rsa_key
             These three files contain the private parts  of  the
host keys and
             are   used  for  RhostsRSAAuthentication  and  Host-
basedAuthentication.
             If the protocol  version  1  RhostsRSAAuthentication
method is used,
             ssh must be setuid root, since the host key is read-
able only by
             root.   For  protocol  version  2,  ssh  uses   ssh-
keysign(8) to access
             the  host  keys  for  HostbasedAuthentication.  This
eliminates the
             requirement that ssh be setuid root  when  that  au-
thentication
             method  is used.  By default ssh is not setuid root.

     $HOME/.rhosts
             This file is used in .rhosts authentication to  list
the host/user
             pairs that are permitted to log in.  (Note that this
file is also
             used by rlogin and rsh, which makes using this  file
insecure.)
             Each  line  of the file contains a host name (in the
canonical form
             returned by name servers), and then a user  name  on
that host,
             separated  by  a  space.  On some machines this file
may need to be
             world-readable if the user's home directory is on  a
NFS partiM--
             tion, because sshd(8) reads it as root.  Additional-
ly, this file
             must be owned by the user, and must not  have  write
permissions
             for  anyone  else.   The  recommended permission for
most machines is
             read/write for the user, and not accessible by  oth-
ers.

             Note  that  by  default sshd(8) will be installed so
that it
             This file is used exactly the same way  as  .rhosts.
The purpose
             for having this file is to be able to use rhosts au-
thentication
             with ssh without permitting  login  with  rlogin  or
rsh(1).

     /etc/hosts.equiv
             This  file is used during .rhosts authentication. It
contains
             canonical hosts names, one per line (the full format
is described
             on  the sshd(8) manual page).  If the client host is
found in this
             file,  login  is  automatically  permitted  provided
client and server
             user  names  are the same.  Additionally, successful
RSA host
             authentication  is  normally  required.   This  file
should only be
             writable by root.

     /etc/shosts.equiv
             This  file is processed exactly as /etc/hosts.equiv.
This file
             may be useful to permit logins using ssh but not us-
ing
             rsh/rlogin.

     /etc/ssh/sshrc
             Commands  in  this file are executed by ssh when the
user logs in
             just before the user's shell (or command) is  start-
ed.  See the
             sshd(8) manual page for more information.

     $HOME/.ssh/rc
             Commands  in  this file are executed by ssh when the
user logs in
             just before the user's shell (or command) is  start-
ed.  See the
             sshd(8) manual page for more information.

     $HOME/.ssh/environment
             Contains   additional  definitions  for  environment
variables, see
             section ENVIRONMENT above.

DIAGNOSTICS
     ssh exits with the exit status of the remote command or with
255 if an
     error occurred.

gen(1),
     telnet(1), ssh_config(5), ssh-keysign(8), sshd(8)

     T. Ylonen, T. Kivinen, M. Saarinen, T. Rinne, and S.  Lehti-
nen, SSH
     Protocol Architecture, draft-ietf-secsh-architecture-12.txt,
January
     2002, work in progress material.

BSD                                September       25,       1999
BSD










































Man(1) output converted with man2html