This is the Unix port of OpenBSD's excellent OpenSSH.

OpenSSH is based on the last free version of Tatu Ylonen's SSH with
all patent-encumbered algorithms removed, all known security bugs
fixed, new features reintroduced and many other clean-ups.

This port consists of the re-introduction of autoconf support, PAM
support (for Linux and Solaris), EGD[1] support, and replacements for
OpenBSD library functions that are (regrettably) absent from most
other unices. The only well tested platform currently is Linux, though
some Solaris support is beginning to filter in. This version actively
tracks changes in the OpenBSD CVS repository.

The PAM support is now more functional than the popular packages of
commercial ssh-1.2.x. It checks "account" and "session" modules for
all logins, not just when using password authentication. This code is
very new and needs further testing.

All new code is released under a XFree style license, which is very
liberal. Please refer to the source files for details. The code in
strlcpy.c and mktemp.c is from the OpenBSD project and has its own
license (again, see source file for details).

OpenSSH depends on Zlib[2], OpenSSL[3] and optionally PAM[4]. To build
the GNOME[5] passphrase requestor (--with-gnome-askpass), you will
need the GNOME libraries installed. If you are building OpenSSH on a
Unix which lacks a kernel random number pool (/dev/random), you will
need to install EGD[1].

To build OpenSSH, use the configure script provided. For example:

./configure --prefix=/opt/openssh
make
make install

Will install the OpenSSH binaries in /opt/openssh/bin, the 
configuration files in /opt/openssh/etc, and so forth.

Damien Miller <djm@ibs.com.au>
Internet Business Solutions

Credits - 

The OpenBSD team
'jonchen' - the original author of PAM support of SSH
Dan Brosemer <odin@linuxfreak.com> - Autoconf and build fixes & Debian scripts
Niels Kristian Bech Jensen <nkbj@image.dk> - Makefile patch
Nalin Dahyabhai <nalin.dahyabhai@pobox.com> - PAM environment patch
Phil Hands <phil@hands.com> - Debian scripts, assorted patches
Niels Kristian Bech Jensen <nkbj@image.dk> - Makefile patches
Marc G. Fournier" <marc.fournier@acadiau.ca> - Solaris patches

Miscellania - 

This version of SSH is based upon code retrieved from the OpenBSD CVS
repository on 1999-11-09 which in turn was based on the last free 
version of SSH released by Tatu Ylonen.

Code in helper.[ch] and gnome-ssh-askpass.c is Copyright 1999 
Internet Business Solutions and is released under a X11-style 
license (see source files for details).

(A)RC4 code in rc4.[ch] is Copyright 1999 Damien Miller. It too is
under a X11-style license (see source file for details).

References -

[1] http://www.lothar.com/tech/crypto/
[2] http://www.cdrom.com/pub/infozip/zlib/
[3] http://www.openssl.org/
[4] http://www.kernel.org/pub/linux/libs/pam/ (PAM is standard on Solaris)
[5] http://www.gnome.org/

