Other patches and addons for OpenSSH. Please send submissions to
djm@mindrot.org

Externally maintained
---------------------

SSH Proxy Command -- connect.c

Shun-ichi GOTO <gotoh@imasy.or.jp> has written a very useful ProxyCommand
which allows the use of outbound SSH from behind a SOCKS4, SOCKS5 or
https CONNECT style proxy server. His page for connect.c has extensive
documentation on its use as well as compiled versions for Win32.

http://www.taiyo.co.jp/~gotoh/ssh/connect.html


X11 SSH Askpass:

Jim Knoble <jmknoble@pobox.com> has written an excellent X11
passphrase requester. This is highly recommended:

http://www.jmknoble.net/software/x11-ssh-askpass/


In this directory
-----------------

ssh-copy-id:

Phil Hands' <phil@hands.com> shell script to automate the process of adding
your public key to a remote machine's ~/.ssh/authorized_keys file.

gnome-ssh-askpass[12]:

A GNOME and Gtk2 passphrase requesters. Use "make gnome-ssh-askpass1" or
"make gnome-ssh-askpass2" to build.

sshd.pam.generic:

A generic PAM config file which may be useful on your system. YMMV

sshd.pam.freebsd:

A PAM config file which works with FreeBSD's PAM port. Contributed by
Dominik Brettnacher <domi@saargate.de>

findssl.sh:

Search for all instances of OpenSSL headers and libraries and print their 
versions.  This is intended to help diagnose OpenSSH's "OpenSSL headers do not
match your library" errors. 

aix:
    Files to build an AIX native (installp or SMIT installable) package.

caldera:
    RPM spec file and scripts for building Caldera OpenLinuix packages

cygwin:
    Support files for Cygwin

hpux:
    Support files for HP-UX

redhat:
    RPM spec file and scripts for building Redhat packages

suse:
    RPM spec file and scripts for building SuSE packages

