

                                                                              


(Secure Shell) is a  program  for  logging  into  a  remote  machine  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.  connects and logs  into  the  specified
The  user  must  prove  his/her  identity  to  the remote machine using one of
several methods depending on the protocol version used:  First, if the machine
the  user  logs  in  from  is listed in or on the remote machine, and the user
names are the same on both sides, the user is immediately permitted to log in.
Second,  if  or  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  (and  primary)  authentication  method is the or method
combined with RSA-based host authentication.  It means that if the login would
be permitted by or and if additionally the server can verify the client's host
key  (see  and  in  the  section),  only  then  login  is   permitted.    This
authentication  method  closes security holes due to IP spoofing, DNS spoofing
and routing  spoofing.   [Note  to  the  administrator:   and  the  rlogin/rsh
protocol  in  general,  are  inherently  insecure  and  should  be disabled if
security is desired.]  As a third authentication method,  supports  RSA  based
authentication.   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 encryption 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 lists the public keys that  are
permitted for logging in.  When the user logs in, the 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 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 decrypts the challenge using the private  key,  proving
that  he/she  knows  the  private key but without disclosing it to the server.
implements the RSA authentication protocol automatically.   The  user  creates
his/her  RSA key pair by running This stores the private key in and the public
key in in the user's home directory.  The user should  then  copy  the  to  in
his/her  home  directory  on  the  remote machine (the file corresponds to the
conventional 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  authentication.   The  most
convenient  way to use RSA authentication may be with an authentication agent.
See for more information.  If other authentication methods fail,  prompts  the
user  for  a  password.  The password is sent to the remote host for checking;
however, since all communications are encrypted, the password cannot  be  seen
by  someone listening on the network.  When a user connects using the protocol
version 2 different authentication  methods  are  available:   At  first,  the
client  attempts  to authenticate using the public key method.  If this method
fails password authentication is tried.  The public key method is  similar  to
RSA  authentication  described  in  the  previous  section except that the DSA


                                                                              



                                                                              


algorithm is used instead of the patented RSA algorithm.  The client uses  his
private  DSA  key  to  sign the session identifier and sends the result to the
server.  The server checks whether the matching public key is  listed  in  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.   This  protocol  2 implementation does not yet support
Kerberos or S/Key authentication.  Protocol 2 provides  additional  mechanisms
for confidentiality (the traffic is encrypted using 3DES, Blowfish, CAST128 or
Arcfour) and integrity (hmac-sha1, hmac-md5).  Note that protocol  1  lacks  a
strong  mechanism  for  ensuring  the  integrity  of the connection.  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 communication with the  remote  command  or  shell
will  be  automatically  encrypted.   If  a pseudo-terminal has been allocated
(normal login session), the user can disconnect  with  and  suspend  with  All
forwarded connections can be listed with and if the session blocks waiting for
forwarded X11 or TCP/IP connections to terminate, it can be backgrounded  with
(this  should  not be used while the user shell is active, as it can cause the
shell to hang).  All available escapes can  be  listed  with  A  single  tilde
character  can be sent as (or by following the tilde by a character other than
those described above).  The escape character must always follow a newline  to
be   interpreted   as  special.   The  escape  character  can  be  changed  in
configuration files or on the  command  line.   If  no  pseudo  tty  has  been
allocated,  the  session  is  transparent and can be used to reliably transfer
binary data.  On most systems, setting the escape character to will also  make
the  session  transparent  even if a tty is used.  The session terminates when
the command or shell in on the remote machine exists and all  X11  and  TCP/IP
connections  have  been  closed.   The  exit  status  of the remote program is
returned as the exit status of If the  user  is  using  X11  (the  environment
variable is set), the connection to the X11 display is automatically forwarded
to the remote side in such a way that any X11 programs started from the  shell
(or  command) will go through the encrypted channel, and the connection to the
real X server will be made from  the  local  machine.   The  user  should  not
manually  set  Forwarding  of X11 connections can be configured on the command
line or in configuration files.  The value set by will  point  to  the  server
machine,  but  with  a  display number greater than zero.  This is normal, and
happens because creates a X server on the server machine  for  forwarding  the
connections  over  the  encrypted  channel.   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 forwarded 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 disabled on command line  or
in  a configuration file.  Forwarding of arbitrary TCP/IP connections over the
secure channel can be specified either on command line or in  a  configuration
file.  One possible application of TCP/IP forwarding is a secure connection to


                                                                              



                                                                              


an  electronic  purse;  another  is  going  trough  firewalls.   automatically
maintains  and  checks  a database containing identifications for all hosts it
has ever been used with.  RSA host keys are stored in and DSA  host  keys  are
stored  in  in  the  user's  home  directory.  Additionally, the files and are
automatically checked for known hosts.  Any new hosts are automatically  added
to the user's file.  If a host's identification ever changes, warns about this
and disables password authentication to prevent a trojan  horse  from  getting
the  user's password.  Another purpose of this mechanism is to prevent man-in-
the-middle attacks which could otherwise be used to circumvent the encryption.
The  option  (see  below) can be used to prevent logins to machines whose host
key is not known or has changed.  Disables forwarding  of  the  authentication
agent  connection.  Enables forwarding of the authentication agent connection.
This can also be specified on  a  per-host  basis  in  a  configuration  file.
Selects the cipher to use for encrypting the session.  is used by default.  It
is believed to be secure.  (triple-des) is an  encrypt-decrypt-encrypt  triple
with three different keys.  It is presumably more secure than the cipher which
is no longer supported in is a fast block cipher, it appears very  secure  and
is  much  faster  than  Additionally, for protocol version 2 a comma-separated
list of ciphers can be specified in order of preference.  Protocol  version  2
supports  3DES, Blowfish and CAST128 in CBC mode and Arcfour.  Sets the escape
character for sessions with a pty (default:   The  escape  character  is  only
recognized at the beginning of a line.  The escape character followed by a dot
closes the connection, followed by  control-Z  suspends  the  connection,  and
followed  by itself sends the escape character once.  Setting the character to
disables any escapes and makes the session fully transparent.  Requests to  go
to  background  just  before command execution.  This is useful if is going to
ask for passwords or passphrases, but the user wants  it  in  the  background.
This  implies  The  recommended  way to start X11 programs at a remote site is
with something like Allows remote hosts to connect to local  forwarded  ports.
Selects  the file from which the identity (private key) for RSA authentication
is read.  Default is in the user's home directory.  Identity files may also be
specified  on  a  per-host basis in the configuration file.  It is possible to
have multiple options (and  multiple  identities  specified  in  configuration
files).   Disables  forwarding  of  Kerberos tickets and AFS tokens.  This may
also be specified on a per-host basis in the  configuration  file.   Specifies
the  user to log in as on the remote machine.  This also may be specified on a
per-host basis in the configuration file.   Redirects  stdin  from  (actually,
prevents  reading  from  stdin).   This  must  be  used  when  is  run  in the
background.  A common trick is to use this to run X11  programs  on  a  remote
machine.   For  example, will start an emacs on shadows.cs.hut.fi, and the X11
connection will be automatically forwarded over  an  encrypted  channel.   The
program  will  be  put in the background.  (This does not work if needs to ask
for a password or passphrase; see also the option.)  Do not execute  a  remote
command.   This is usefull if you just want to forward ports (protocol version
2 only).  Can be used to give options in the format used in the  config  file.
This  is useful for specifying options for which there is no separate command-
line flag.  The option has the same format as  a  line  in  the  configuration
file.  Port to connect to on the remote host.  This can be specified on a per-
host basis in the configuration file.  Use a non-privileged port for  outgoing
connections.   This  can  be used if your firewall does not permit connections


                                                                              



                                                                              


from privileged ports.  Note that  this  option  turns  off  and  Quiet  mode.
Causes  all  warning  and  diagnostic  messages  to be suppressed.  Only fatal
errors are displayed.  Force pseudo-tty  allocation.   This  can  be  used  to
execute arbitrary screen-based programs on a remote machine, which can be very
useful, e.g., when implementing menu services.  Disable pseudo-tty  allocation
(protocol  version 2 only).  Verbose mode.  Causes to print debugging messages
about its progress.  This is helpful in debugging connection,  authentication,
and  configuration  problems.   The  verbose  mode  is  also  used  to display
challenges, if the user entered "s/key" as password.  Disables X11 forwarding.
Enables  X11  forwarding.  This can also be specified on a per-host basis in a
configuration file.   Requests  compression  of  all  data  (including  stdin,
stdout,  stderr,  and  data  for  forwarded  X11 and TCP/IP connections).  The
compression algorithm is the same used by and the can  be  controlled  by  the
option  (see  below).   Compression is desirable on modem lines and other slow
connections, but will only slow down things on  fast  networks.   The  default
value  can  be set on a host-by-host basis in the configuration files; see the
option below.  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 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 port from the remote machine.   Port  forwardings  can
also be specified in the configuration file.  Only root can forward privileged
ports.  IPv6 addresses can be specified with an alternative syntax:  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 on the remote side, and whenever a connection is made to this port,
the connection is forwarded over the secure channel, and a connection is  made
to port from the local machine.  Port forwardings can also be specified in the
configuration file.  Privileged ports can be forwarded only when logging in as
root on the remote machine.  Forces to try protocol version 2 only.  Forces to
use IPv4  addresses  only.   Forces  to  use  IPv6  addresses  only.   obtains
configuration  data  from the following sources (in this order):  command line
options, user's configuration file and system-wide configuration file For each
parameter,  the  first  obtained  value will be used.  The configuration files
contain sections bracketed by specifications, and that section is only applied
for  hosts  that  match  one  of the patterns given in the specification.  The
matched host name is the one given on  the  command  line.   Since  the  first
obtained  value  for  each  parameter is used, more host-specific declarations
should be given near the beginning of the file, and general  defaults  at  the
end.   The configuration file has the following format:  Empty lines and lines
starting with are comments.  Otherwise a line is of the  format  The  possible
keywords  and their meanings are as follows (note that the configuration files
are case-sensitive):  Restricts the following declarations  (up  to  the  next
keyword) to be only for those hosts that match one of the patterns given after
the keyword.  and can be used as wildcards in the patterns.   A  single  as  a
pattern can be used to provide global defaults for all hosts.  The host is the
argument given on the command line (i.e., the  name  is  not  converted  to  a
canonicalized  host  name  before  matching).   Specifies  whether to pass AFS
tokens to remote host.  The argument to this keyword must  be  or  If  set  to
passphrase/password  querying  will  be  disabled.   This  option is useful in


                                                                              



                                                                              


scripts and other batch jobs where you have no user to  supply  the  password.
The argument must be or If this flag is set to ssh will additionally check the
host ip address in the file.  This allows ssh to detect if a host key  changed
due  to DNS spoofing.  If the option is set to the check will not be executed.
Specifies the cipher to use for encrypting the session.   Currently,  and  are
supported.   The default is Specifies the ciphers allowed for protocol version
2 in order of preference.  Multiple  ciphers  must  be  comma-separated.   The
default  is  Specifies  whether  to  use compression.  The argument must be or
Specifies the compression level to use if compression is enable.  The argument
must  be  an integer from 1 (fast) to 9 (slow, best).  The default level is 6,
which is good for most applications.  The meaning of the values is the same as
in  Specifies the number of tries (one per second) to make before falling back
to rsh or exiting.  The argument must be an integer.  This may  be  useful  in
scripts  if  the  connection  sometimes  fails.   Specifies whether to try DSA
authentication.  The argument to this keyword must be  or  DSA  authentication
will  only  be attempted if a DSA identity file exists.  Note that this option
applies to protocol version 2 only.  Sets the escape character (default:   The
escape  character can also be set on the command line.  The argument should be
a single character, followed by a letter, or to disable the  escape  character
entirely  (making the connection transparent for binary data).  Specifies that
if connecting via fails due  to  a  connection  refused  error  (there  is  no
listening  on  the remote host), should automatically be used instead (after a
suitable warning about the session being unencrypted).  The argument  must  be
or  Specifies whether the connection to the authentication agent (if any) will
be forwarded to the remote machine.  The argument must be or  The  default  is
Specifies  whether  X11  connections will be automatically redirected over the
secure channel and set.  The argument must be  or  The  default  is  Specifies
whether  remote  hosts  are  allowed to connect to local forwarded ports.  The
argument must be or The  default  is  Specifies  a  file  to  use  instead  of
Specifies  the  real  host  name  to  log  into.   This can be used to specify
nicknames or abbreviations for hosts.   Default  is  the  name  given  on  the
command  line.   Numeric  IP addresses are also permitted (both on the command
line and in specifications).  Specifies the file from  which  the  user's  RSA
authentication  identity  is  read  (default  in  the  user's home directory).
Additionally, any identities represented by the authentication agent  will  be
used for authentication.  The file name may use the tilde syntax to refer to a
user's home directory.   It  is  possible  to  have  multiple  identity  files
specified  in  configuration  files;  all  these  identities  will be tried in
sequence.  Specifies  the  file  from  which  the  user's  DSA  authentication
identity  is  read  (default in the user's home directory).  The file name may
use the tilde syntax to refer to a user's home directory.  It is  possible  to
have  multiple  identity  files  specified  in  configuration files; all these
identities will be tried in sequence.  Specifies  whether  the  system  should
send  keepalive  messages  to  the other side.  If they are sent, death of the
connection or crash of one of the machines will be properly noticed.  However,
this  means  that  connections  will die if the route is down temporarily, and
some people find it annoying.  The default is (to send  keepalives),  and  the
client  will notice if the network goes down or the remote host dies.  This is
important in scripts, and many users want it too.  To disable keepalives,  the
value  should be set to in both the server and the client configuration files.


                                                                              



                                                                              


Specifies whether Kerberos authentication will be used.  The argument to  this
keyword  must  be or Specifies whether a Kerberos TGT will be forwarded to the
server.  This will only work  if  the  Kerberos  server  is  actually  an  AFS
kaserver.   The  argument  to  this keyword must be or Specifies that a TCP/IP
port on the local machine be  forwarded  over  the  secure  channel  to  given
host:port  from the remote machine.  The first argument must be a port number,
and the second must be host:port.  Multiple forwardings may be specified,  and
additional  forwardings  can be given on the command line.  Only the superuser
can forward privileged ports.  Gives the verbosity level  that  is  used  when
logging  messages  from  The  possible values are:  QUIET, FATAL, ERROR, INFO,
VERBOSE and DEBUG.  The default is INFO.  Specifies  the  number  of  password
prompts  before  giving  up.  The argument to this keyword must be an integer.
Default is 3.  Specifies whether to use password authentication.  The argument
to  this  keyword  must  be  or Note that this option applies to both protocol
version 1 and 2.  Specifies the port number to connect  on  the  remote  host.
Default  is  22.   Specifies  the protocol versions should support in order of
preference.  The possible values are and  Multiple  versions  must  be  comma-
separated.   The  default is This means that tries version 1 and falls back to
version 2 if version 1 is not available.  Specifies  the  command  to  use  to
connect to the server.  The command string extends to the end of the line, and
is executed with In the command string, will be substituted by the  host  name
to connect and by the port.  The command can be basically anything, and should
read from its standard input and write to  its  standard  output.   It  should
eventually  connect  an  server running on some machine, or execute somewhere.
Host key management will  be  done  using  the  HostName  of  the  host  being
connected  (defaulting  to  the  name  typed  by  the user).  Note that is not
available for connects with a proxy command.  Specifies that a TCP/IP port  on
the  remote  machine  be  forwarded over the secure channel to given host:port
from the local machine.  The first argument must be a  port  number,  and  the
second  must  be  host:port.   Multiple  forwardings  may  be  specified,  and
additional forwardings can be given on the command line.  Only  the  superuser
can   forward  privileged  ports.   Specifies  whether  to  try  rhosts  based
authentication.  Note that this declaration only affects the client  side  and
has  no  effect  whatsoever  on security.  Disabling rhosts authentication may
reduce authentication time on slow connections when rhosts  authentication  is
not  used.   Most servers do not permit RhostsAuthentication because it is not
secure (see RhostsRSAAuthentication).  The argument to this keyword must be or
Specifies   whether   to   try  rhosts  based  authentication  with  RSA  host
authentication.  This is the primary authentication  method  for  most  sites.
The  argument  must  be  or  Specifies whether to try RSA authentication.  The
argument to this keyword must be or RSA authentication will only be  attempted
if the identity file exists, or an authentication agent is running.  Note that
this option applies to protocol version 1  only.   Specifies  whether  to  use
authentication.   The  argument  to  this keyword must be or The default is If
this flag is set to ssh will never automatically add  host  keys  to  the  and
files, and refuses to connect hosts whose host key has changed.  This provides
maximum protection against trojan horse attacks.  However, it can be  somewhat
annoying if you don't have good and files installed and frequently connect new
hosts.  Basically this option forces the user to manually add any  new  hosts.
Normally this option is disabled, and new hosts will automatically be added to


                                                                              



                                                                              


the known host  files.   The  host  keys  of  known  hosts  will  be  verified
automatically  in  either  case.  The argument must be or Specifies whether to
use a privileged port for outgoing connections.  The argument must be  or  The
default  is  Note that setting this option to turns off and Specifies the user
to log in as.  This can be useful  if  you  have  a  different  user  name  on
different  machines.  This saves the trouble of having to remember to give the
user name on the command line.  Specifies a file to use instead  of  Specifies
that  rlogin/rsh  should  be used for this host.  It is possible that the host
does not at all support the protocol.  This causes to immediately execute  All
other  options  (except  are ignored if this has been specified.  The argument
must be or Specifies the  location  of  the  program.   The  default  is  will
normally  set the following environment variables:  The variable indicates the
location of the X11 server.  It is automatically set by to point to a value of
the  form  where hostname indicates the host where the shell runs, and n is an
integer >= 1.  uses this special 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).  Set to the path of the user's home
directory.  Synonym for set for  compatibility  with  systems  that  use  this
variable.   Set  to point the user's mailbox.  Set to the default as specified
when compiling indicates the path of a unix-domain socket used to  communicate
with  the  agent.   Identifies the client end of the connection.  The variable
contains three space-separated values: client ip-address, client port  number,
and  server  port  number.   This  is  set to the name of the tty (path to the
device) associated with the current shell or command.  If the current  session
has  no  tty,  this  variable  is  not  set.   The timezone variable is set to
indicate the present timezone if it was set when the daemon was started (e.i.,
the  daemon  passes  the value on to new connections).  Set to the name of the
user logging in.  Additionally, reads and adds lines  of  the  format  to  the
environment.   Records  host keys for all hosts the user has logged into (that
are not in See Contains the RSA and the DSA  authentication  identity  of  the
user.   These  files contain sensitive data and should be readable by the user
but not accessible  by  others  (read/write/execute).   Note  that  ignores  a
private  key  file if it is accessible by others.  It is possible to specify a
passphrase when generating the key; the passphrase will be used to encrypt the
sensitive  part  of  this  file  using  3DES.   Contains  the  public  key for
authentication (public part of the identity file in human-readable form).  The
contents  of the file should be added to on all machines where you wish to log
in using RSA authentication.  The contents of the file should be added  to  on
all  machines  where you wish to log in using DSA authentication.  These files
are not sensitive and can (but need not) be readable by anyone.   These  files
are  never used automatically and are not necessary; they is only provided for
the convenience of the user.  This is the per-user  configuration  file.   The
format  of  this  file  is  described above.  This file is used by the client.
This file  does  not  usually  contain  any  sensitive  information,  but  the
recommended  permissions  are  read/write  for the user, and not accessible by
others.  Lists the RSA keys that can be used for logging in as this user.  The
format of this file is described in the manual page.  In the simplest form the
format is the same as the .pub identity files (that is, each line contains the
number  of  bits  in  modulus,  public  exponent, modulus, and comment fields,


                                                                              



                                                                              


separated by spaces).  This file is not highly sensitive, but the  recommended
permissions  are read/write for the user, and not accessible by others.  Lists
the DSA keys that can be used for logging in as this user.  This file  is  not
highly sensitive, but the recommended permissions are read/write for the user,
and not accessible by others.  Systemwide list of known host  keys.   contains
RSA  and  contains  DSA  keys.   These  files 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):
system name, number of bits in modulus, public exponent, modulus, and optional
comment field.  When different names are used for the same machine,  all  such
names  should  be listed, separated by commas.  The format is described on the
manual page.  The canonical system name (as returned by name servers) is  used
by  to  verify the client host when logging in; other names are needed because
does not convert the user-supplied name to a canonical  name  before  checking
the key, because someone with access to the name servers would then be able to
fool host authentication.  Systemwide configuration file.  This file  provides
defaults  for  those values that are not specified in the user's configuration
file, and for those users who do not have a  configuration  file.   This  file
must  be  world-readable.   This  file  is  used in 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.  One some
machines this file may need to be world-readable if the user's home  directory
is on a NFS partition, because reads it as root.  Additionally, 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 others.  Note that by default will be installed so  that  it
requires   successful   RSA  host  authentication  before  permitting  .rhosts
authentication.  If your server machine does not have the client's host key in
you  can  store  it  in  The  easiest way to do this is to connect back to the
client from the server machine using ssh; this will automatically add the host
key  to  This file is used exactly the same way as The purpose for having this
file is to be able to use rhosts authentication with without permitting  login
with  or  This  file is used during It contains canonical hosts names, one per
line (the full format is described on the 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.  This file is processed exactly as This file may  be  useful  to  permit
logins  using but not using rsh/rlogin.  Commands in this file are executed by
when the user logs in just before the user's shell (or  command)  is  started.
See  the manual page for more information.  Commands in this file are executed
by when the user logs in just before the user's shell (or command) is started.
See the manual page for more information.  Contains additional definitions for
environment variables, see section above.  A version  of  this  library  which
includes  support  for  the  RSA  algorithm  is required for proper operation.
OpenSSH is a derivative of the original (free)  ssh  1.2.12  release  by  Tatu
Ylonen,  but with bugs removed and newer features re-added.  Rapidly after the


                                                                              



                                                                              


1.2.12 release, newer versions of the  original  ssh  bore  successively  more
restrictive  licenses,  and  thus  demand  for  a free version was born.  This
version of OpenSSH has all components of a restrictive nature (i.e.,  patents)
directly removed from the source code; any licensed or patented components are
chosen from external libraries.  has been updated to support SSH protocol  1.5
and  2, making it compatible with all other SSH clients and servers.  contains
added support  for  authentication  and  ticket  passing.   supports  one-time
password  authentication  with OpenSSH has been created by Aaron Campbell, Bob
Beck, Markus Friedl, Niels Provos, Theo de Raadt, and Dug Song.   The  support
for SSH protocol 2 was written by Markus Friedl.










































                                                                              

