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.

https://bitbucket.org/gotoh/connect/wiki/Home


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

