183d2307dSDag-Erling Smørgrav---------------- 283d2307dSDag-Erling Smørgrav 3*ca86bcf2SDag-Erling SmørgravA C compiler. Any C89 or better compiler should work. Where supported, 4*ca86bcf2SDag-Erling Smørgravconfigure will attempt to enable the compiler's run-time integrity checking 5*ca86bcf2SDag-Erling Smørgravoptions. Some notes about specific compilers: 6*ca86bcf2SDag-Erling Smørgrav - clang: -ftrapv and -sanitize=integer require the compiler-rt runtime 7*ca86bcf2SDag-Erling Smørgrav (CC=clang LDFLAGS=--rtlib=compiler-rt ./configure) 8*ca86bcf2SDag-Erling Smørgrav 9a0ee8cc6SDag-Erling SmørgravYou will need working installations of Zlib and libcrypto (LibreSSL / 10a0ee8cc6SDag-Erling SmørgravOpenSSL) 1183d2307dSDag-Erling Smørgrav 12*ca86bcf2SDag-Erling SmørgravZlib 1.1.4 or 1.2.1.2 or greater (earlier 1.2.x versions have problems): 1383d2307dSDag-Erling Smørgravhttp://www.gzip.org/zlib/ 1483d2307dSDag-Erling Smørgrav 15076ad2f8SDag-Erling Smørgravlibcrypto (LibreSSL or OpenSSL >= 0.9.8f < 1.1.0) 16a0ee8cc6SDag-Erling SmørgravLibreSSL http://www.libressl.org/ ; or 17a0ee8cc6SDag-Erling SmørgravOpenSSL http://www.openssl.org/ 1883d2307dSDag-Erling Smørgrav 19a0ee8cc6SDag-Erling SmørgravLibreSSL/OpenSSL should be compiled as a position-independent library 20a0ee8cc6SDag-Erling Smørgrav(i.e. with -fPIC) otherwise OpenSSH will not be able to link with it. 21a0ee8cc6SDag-Erling SmørgravIf you must use a non-position-independent libcrypto, then you may need 22076ad2f8SDag-Erling Smørgravto configure OpenSSH --without-pie. Note that because of API changes, 23076ad2f8SDag-Erling SmørgravOpenSSL 1.1.x is not currently supported. 2483d2307dSDag-Erling Smørgrav 25761efaa7SDag-Erling SmørgravThe remaining items are optional. 26761efaa7SDag-Erling Smørgrav 2783d2307dSDag-Erling SmørgravNB. If you operating system supports /dev/random, you should configure 28a0ee8cc6SDag-Erling Smørgravlibcrypto (LibreSSL/OpenSSL) to use it. OpenSSH relies on libcrypto's 29a0ee8cc6SDag-Erling Smørgravdirect support of /dev/random, or failing that, either prngd or egd 30d4af9e69SDag-Erling Smørgrav 31d4af9e69SDag-Erling SmørgravPRNGD: 32d4af9e69SDag-Erling Smørgrav 33d4af9e69SDag-Erling SmørgravIf your system lacks kernel-based random collection, the use of Lutz 34d4af9e69SDag-Erling SmørgravJaenicke's PRNGd is recommended. 35d4af9e69SDag-Erling Smørgrav 36d4af9e69SDag-Erling Smørgravhttp://prngd.sourceforge.net/ 37d4af9e69SDag-Erling Smørgrav 38d4af9e69SDag-Erling SmørgravEGD: 39d4af9e69SDag-Erling Smørgrav 40a0ee8cc6SDag-Erling SmørgravIf the kernel lacks /dev/random the Entropy Gathering Daemon (EGD) is 41a0ee8cc6SDag-Erling Smørgravsupported only if libcrypto supports it. 42d4af9e69SDag-Erling Smørgrav 43a0ee8cc6SDag-Erling Smørgravhttp://egd.sourceforge.net/ 4483d2307dSDag-Erling Smørgrav 4583d2307dSDag-Erling SmørgravPAM: 46d4af9e69SDag-Erling Smørgrav 47d4af9e69SDag-Erling SmørgravOpenSSH can utilise Pluggable Authentication Modules (PAM) if your 48d4af9e69SDag-Erling Smørgravsystem supports it. PAM is standard most Linux distributions, Solaris, 49d4af9e69SDag-Erling SmørgravHP-UX 11, AIX >= 5.2, FreeBSD and NetBSD. 50d4af9e69SDag-Erling Smørgrav 51d4af9e69SDag-Erling SmørgravInformation about the various PAM implementations are available: 52d4af9e69SDag-Erling Smørgrav 53d4af9e69SDag-Erling SmørgravSolaris PAM: http://www.sun.com/software/solaris/pam/ 54d4af9e69SDag-Erling SmørgravLinux PAM: http://www.kernel.org/pub/linux/libs/pam/ 55d4af9e69SDag-Erling SmørgravOpenPAM: http://www.openpam.org/ 5683d2307dSDag-Erling Smørgrav 5783d2307dSDag-Erling SmørgravIf you wish to build the GNOME passphrase requester, you will need the GNOME 5883d2307dSDag-Erling Smørgravlibraries and headers. 5983d2307dSDag-Erling Smørgrav 6083d2307dSDag-Erling SmørgravGNOME: 6183d2307dSDag-Erling Smørgravhttp://www.gnome.org/ 6283d2307dSDag-Erling Smørgrav 63d74d50a8SDag-Erling SmørgravAlternatively, Jim Knoble <jmknoble@pobox.com> has written an excellent X11 6483d2307dSDag-Erling Smørgravpassphrase requester. This is maintained separately at: 6583d2307dSDag-Erling Smørgrav 66d95e11bfSDag-Erling Smørgravhttp://www.jmknoble.net/software/x11-ssh-askpass/ 6783d2307dSDag-Erling Smørgrav 68d4af9e69SDag-Erling SmørgravTCP Wrappers: 6983d2307dSDag-Erling Smørgrav 70d4af9e69SDag-Erling SmørgravIf you wish to use the TCP wrappers functionality you will need at least 71d4af9e69SDag-Erling Smørgravtcpd.h and libwrap.a, either in the standard include and library paths, 72d4af9e69SDag-Erling Smørgravor in the directory specified by --with-tcp-wrappers. Version 7.6 is 73d4af9e69SDag-Erling Smørgravknown to work. 7483d2307dSDag-Erling Smørgrav 75d4af9e69SDag-Erling Smørgravhttp://ftp.porcupine.org/pub/security/index.html 7683d2307dSDag-Erling Smørgrav 7783d2307dSDag-Erling SmørgravS/Key Libraries: 784518870cSDag-Erling Smørgrav 794518870cSDag-Erling SmørgravIf you wish to use --with-skey then you will need the library below 804518870cSDag-Erling Smørgravinstalled. No other S/Key library is currently known to be supported. 814518870cSDag-Erling Smørgrav 8283d2307dSDag-Erling Smørgravhttp://www.sparc.spb.su/solaris/skey/ 8383d2307dSDag-Erling Smørgrav 845e8dbd04SDag-Erling SmørgravLibEdit: 85761efaa7SDag-Erling Smørgrav 86761efaa7SDag-Erling Smørgravsftp supports command-line editing via NetBSD's libedit. If your platform 87761efaa7SDag-Erling Smørgravhas it available natively you can use that, alternatively you might try 88761efaa7SDag-Erling Smørgravthese multi-platform ports: 894518870cSDag-Erling Smørgrav 905e8dbd04SDag-Erling Smørgravhttp://www.thrysoee.dk/editline/ 915e8dbd04SDag-Erling Smørgravhttp://sourceforge.net/projects/libedit/ 925e8dbd04SDag-Erling Smørgrav 93462c32cbSDag-Erling SmørgravLDNS: 94462c32cbSDag-Erling Smørgrav 95462c32cbSDag-Erling SmørgravLDNS is a DNS BSD-licensed resolver library which supports DNSSEC. 96462c32cbSDag-Erling Smørgrav 97462c32cbSDag-Erling Smørgravhttp://nlnetlabs.nl/projects/ldns/ 98462c32cbSDag-Erling Smørgrav 99761efaa7SDag-Erling SmørgravAutoconf: 100761efaa7SDag-Erling Smørgrav 101761efaa7SDag-Erling SmørgravIf you modify configure.ac or configure doesn't exist (eg if you checked 102*ca86bcf2SDag-Erling Smørgravthe code out of CVS yourself) then you will need autoconf-2.69 to rebuild 103d4af9e69SDag-Erling Smørgravthe automatically generated files by running "autoreconf". Earlier 104d4af9e69SDag-Erling Smørgravversions may also work but this is not guaranteed. 105761efaa7SDag-Erling Smørgrav 106761efaa7SDag-Erling Smørgravhttp://www.gnu.org/software/autoconf/ 107761efaa7SDag-Erling Smørgrav 108761efaa7SDag-Erling SmørgravBasic Security Module (BSM): 109761efaa7SDag-Erling Smørgrav 110761efaa7SDag-Erling SmørgravNative BSM support is know to exist in Solaris from at least 2.5.1, 111761efaa7SDag-Erling SmørgravFreeBSD 6.1 and OS X. Alternatively, you may use the OpenBSM 112761efaa7SDag-Erling Smørgravimplementation (http://www.openbsm.org). 113761efaa7SDag-Erling Smørgrav 114761efaa7SDag-Erling Smørgrav 11583d2307dSDag-Erling Smørgrav2. Building / Installation 11683d2307dSDag-Erling Smørgrav-------------------------- 11783d2307dSDag-Erling Smørgrav 11883d2307dSDag-Erling SmørgravTo install OpenSSH with default options: 11983d2307dSDag-Erling Smørgrav 12083d2307dSDag-Erling Smørgrav./configure 12183d2307dSDag-Erling Smørgravmake 12283d2307dSDag-Erling Smørgravmake install 12383d2307dSDag-Erling Smørgrav 12483d2307dSDag-Erling SmørgravThis will install the OpenSSH binaries in /usr/local/bin, configuration files 12583d2307dSDag-Erling Smørgravin /usr/local/etc, the server in /usr/local/sbin, etc. To specify a different 12683d2307dSDag-Erling Smørgravinstallation prefix, use the --prefix option to configure: 12783d2307dSDag-Erling Smørgrav 12883d2307dSDag-Erling Smørgrav./configure --prefix=/opt 12983d2307dSDag-Erling Smørgravmake 13083d2307dSDag-Erling Smørgravmake install 13183d2307dSDag-Erling Smørgrav 13283d2307dSDag-Erling SmørgravWill install OpenSSH in /opt/{bin,etc,lib,sbin}. You can also override 13383d2307dSDag-Erling Smørgravspecific paths, for example: 13483d2307dSDag-Erling Smørgrav 13583d2307dSDag-Erling Smørgrav./configure --prefix=/opt --sysconfdir=/etc/ssh 13683d2307dSDag-Erling Smørgravmake 13783d2307dSDag-Erling Smørgravmake install 13883d2307dSDag-Erling Smørgrav 13983d2307dSDag-Erling SmørgravThis will install the binaries in /opt/{bin,lib,sbin}, but will place the 14083d2307dSDag-Erling Smørgravconfiguration files in /etc/ssh. 14183d2307dSDag-Erling Smørgrav 1424518870cSDag-Erling SmørgravIf you are using Privilege Separation (which is enabled by default) 1434518870cSDag-Erling Smørgravthen you will also need to create the user, group and directory used by 1444518870cSDag-Erling Smørgravsshd for privilege separation. See README.privsep for details. 1454518870cSDag-Erling Smørgrav 14683d2307dSDag-Erling SmørgravIf you are using PAM, you may need to manually install a PAM control 14783d2307dSDag-Erling Smørgravfile as "/etc/pam.d/sshd" (or wherever your system prefers to keep 14883d2307dSDag-Erling Smørgravthem). Note that the service name used to start PAM is __progname, 14983d2307dSDag-Erling Smørgravwhich is the basename of the path of your sshd (e.g., the service name 15083d2307dSDag-Erling Smørgravfor /usr/sbin/osshd will be osshd). If you have renamed your sshd 15183d2307dSDag-Erling Smørgravexecutable, your PAM configuration may need to be modified. 15283d2307dSDag-Erling Smørgrav 15383d2307dSDag-Erling SmørgravA generic PAM configuration is included as "contrib/sshd.pam.generic", 15483d2307dSDag-Erling Smørgravyou may need to edit it before using it on your system. If you are 15583d2307dSDag-Erling Smørgravusing a recent version of Red Hat Linux, the config file in 15683d2307dSDag-Erling Smørgravcontrib/redhat/sshd.pam should be more useful. Failure to install a 15783d2307dSDag-Erling Smørgravvalid PAM file may result in an inability to use password 15883d2307dSDag-Erling Smørgravauthentication. On HP-UX 11 and Solaris, the standard /etc/pam.conf 15983d2307dSDag-Erling Smørgravconfiguration will work with sshd (sshd will match the other service 16083d2307dSDag-Erling Smørgravname). 16183d2307dSDag-Erling Smørgrav 16283d2307dSDag-Erling SmørgravThere are a few other options to the configure script: 16383d2307dSDag-Erling Smørgrav 164761efaa7SDag-Erling Smørgrav--with-audit=[module] enable additional auditing via the specified module. 165761efaa7SDag-Erling SmørgravCurrently, drivers for "debug" (additional info via syslog) and "bsm" 166761efaa7SDag-Erling Smørgrav(Sun's Basic Security Module) are supported. 167761efaa7SDag-Erling Smørgrav 168d95e11bfSDag-Erling Smørgrav--with-pam enables PAM support. If PAM support is compiled in, it must 169d95e11bfSDag-Erling Smørgravalso be enabled in sshd_config (refer to the UsePAM directive). 17083d2307dSDag-Erling Smørgrav 17183d2307dSDag-Erling Smørgrav--with-prngd-socket=/some/file allows you to enable EGD or PRNGD 17283d2307dSDag-Erling Smørgravsupport and to specify a PRNGd socket. Use this if your Unix lacks 17383d2307dSDag-Erling Smørgrav/dev/random and you don't want to use OpenSSH's builtin entropy 17483d2307dSDag-Erling Smørgravcollection support. 17583d2307dSDag-Erling Smørgrav 17683d2307dSDag-Erling Smørgrav--with-prngd-port=portnum allows you to enable EGD or PRNGD support 17783d2307dSDag-Erling Smørgravand to specify a EGD localhost TCP port. Use this if your Unix lacks 17883d2307dSDag-Erling Smørgrav/dev/random and you don't want to use OpenSSH's builtin entropy 17983d2307dSDag-Erling Smørgravcollection support. 18083d2307dSDag-Erling Smørgrav 18183d2307dSDag-Erling Smørgrav--with-lastlog=FILE will specify the location of the lastlog file. 18283d2307dSDag-Erling Smørgrav./configure searches a few locations for lastlog, but may not find 18383d2307dSDag-Erling Smørgravit if lastlog is installed in a different place. 18483d2307dSDag-Erling Smørgrav 18583d2307dSDag-Erling Smørgrav--without-lastlog will disable lastlog support entirely. 18683d2307dSDag-Erling Smørgrav 187d95e11bfSDag-Erling Smørgrav--with-osfsia, --without-osfsia will enable or disable OSF1's Security 18883d2307dSDag-Erling SmørgravIntegration Architecture. The default for OSF1 machines is enable. 18983d2307dSDag-Erling Smørgrav 19083d2307dSDag-Erling Smørgrav--with-skey=PATH will enable S/Key one time password support. You will 19183d2307dSDag-Erling Smørgravneed the S/Key libraries and header files installed for this to work. 19283d2307dSDag-Erling Smørgrav 19383d2307dSDag-Erling Smørgrav--with-tcp-wrappers will enable TCP Wrappers (/etc/hosts.allow|deny) 194d4af9e69SDag-Erling Smørgravsupport. 19583d2307dSDag-Erling Smørgrav 19683d2307dSDag-Erling Smørgrav--with-md5-passwords will enable the use of MD5 passwords. Enable this 197efcad6b7SDag-Erling Smørgravif your operating system uses MD5 passwords and the system crypt() does 198efcad6b7SDag-Erling Smørgravnot support them directly (see the crypt(3/3c) man page). If enabled, the 199efcad6b7SDag-Erling Smørgravresulting binary will support both MD5 and traditional crypt passwords. 20083d2307dSDag-Erling Smørgrav 20183d2307dSDag-Erling Smørgrav--with-utmpx enables utmpx support. utmpx support is automatic for 20283d2307dSDag-Erling Smørgravsome platforms. 20383d2307dSDag-Erling Smørgrav 20483d2307dSDag-Erling Smørgrav--without-shadow disables shadow password support. 20583d2307dSDag-Erling Smørgrav 20683d2307dSDag-Erling Smørgrav--with-ipaddr-display forces the use of a numeric IP address in the 20783d2307dSDag-Erling Smørgrav$DISPLAY environment variable. Some broken systems need this. 20883d2307dSDag-Erling Smørgrav 20983d2307dSDag-Erling Smørgrav--with-default-path=PATH allows you to specify a default $PATH for sessions 21083d2307dSDag-Erling Smørgravstarted by sshd. This replaces the standard path entirely. 21183d2307dSDag-Erling Smørgrav 212d4af9e69SDag-Erling Smørgrav--with-pid-dir=PATH specifies the directory in which the sshd.pid file is 21383d2307dSDag-Erling Smørgravcreated. 21483d2307dSDag-Erling Smørgrav 21583d2307dSDag-Erling Smørgrav--with-xauth=PATH specifies the location of the xauth binary 21683d2307dSDag-Erling Smørgrav 217a0ee8cc6SDag-Erling Smørgrav--with-ssl-dir=DIR allows you to specify where your Libre/OpenSSL 218a0ee8cc6SDag-Erling Smørgravlibraries 21983d2307dSDag-Erling Smørgravare installed. 22083d2307dSDag-Erling Smørgrav 221a0ee8cc6SDag-Erling Smørgrav--with-ssl-engine enables Libre/OpenSSL's (hardware) ENGINE support 222761efaa7SDag-Erling Smørgrav 22383d2307dSDag-Erling Smørgrav--with-4in6 Check for IPv4 in IPv6 mapped addresses and convert them to 22483d2307dSDag-Erling Smørgravreal (AF_INET) IPv4 addresses. Works around some quirks on Linux. 22583d2307dSDag-Erling Smørgrav 22683d2307dSDag-Erling SmørgravIf you need to pass special options to the compiler or linker, you 22783d2307dSDag-Erling Smørgravcan specify these as environment variables before running ./configure. 22883d2307dSDag-Erling SmørgravFor example: 22983d2307dSDag-Erling Smørgrav 23083d2307dSDag-Erling SmørgravCFLAGS="-O -m486" LDFLAGS="-s" LIBS="-lrubbish" LD="/usr/foo/ld" ./configure 23183d2307dSDag-Erling Smørgrav 23283d2307dSDag-Erling Smørgrav3. Configuration 23383d2307dSDag-Erling Smørgrav---------------- 23483d2307dSDag-Erling Smørgrav 23583d2307dSDag-Erling SmørgravThe runtime configuration files are installed by in ${prefix}/etc or 23683d2307dSDag-Erling Smørgravwhatever you specified as your --sysconfdir (/usr/local/etc by default). 23783d2307dSDag-Erling Smørgrav 23883d2307dSDag-Erling SmørgravThe default configuration should be instantly usable, though you should 23983d2307dSDag-Erling Smørgravreview it to ensure that it matches your security requirements. 24083d2307dSDag-Erling Smørgrav 24183d2307dSDag-Erling SmørgravTo generate a host key, run "make host-key". Alternately you can do so 24283d2307dSDag-Erling Smørgravmanually using the following commands: 24383d2307dSDag-Erling Smørgrav 244*ca86bcf2SDag-Erling Smørgrav ssh-keygen -t [type] -f /etc/ssh/ssh_host_key -N "" 245*ca86bcf2SDag-Erling Smørgrav 246*ca86bcf2SDag-Erling Smørgravfor each of the types you wish to generate (rsa, dsa or ecdsaa) or 247*ca86bcf2SDag-Erling Smørgrav 248*ca86bcf2SDag-Erling Smørgrav ssh-keygen -A 249*ca86bcf2SDag-Erling Smørgrav 250*ca86bcf2SDag-Erling Smørgravto generate keys for all supported types. 25183d2307dSDag-Erling Smørgrav 25283d2307dSDag-Erling SmørgravReplacing /etc/ssh with the correct path to the configuration directory. 25383d2307dSDag-Erling Smørgrav(${prefix}/etc or whatever you specified with --sysconfdir during 25483d2307dSDag-Erling Smørgravconfiguration) 25583d2307dSDag-Erling Smørgrav 25683d2307dSDag-Erling SmørgravIf you have configured OpenSSH with EGD support, ensure that EGD is 25783d2307dSDag-Erling Smørgravrunning and has collected some Entropy. 25883d2307dSDag-Erling Smørgrav 25983d2307dSDag-Erling SmørgravFor more information on configuration, please refer to the manual pages 26083d2307dSDag-Erling Smørgravfor sshd, ssh and ssh-agent. 26183d2307dSDag-Erling Smørgrav 2625e8dbd04SDag-Erling Smørgrav4. (Optional) Send survey 2635e8dbd04SDag-Erling Smørgrav------------------------- 2645e8dbd04SDag-Erling Smørgrav 2655e8dbd04SDag-Erling Smørgrav$ make survey 266761efaa7SDag-Erling Smørgrav[check the contents of the file "survey" to ensure there's no information 267761efaa7SDag-Erling Smørgravthat you consider sensitive] 2685e8dbd04SDag-Erling Smørgrav$ make send-survey 2695e8dbd04SDag-Erling Smørgrav 2705e8dbd04SDag-Erling SmørgravThis will send configuration information for the currently configured 2715e8dbd04SDag-Erling Smørgravhost to a survey address. This will help determine which configurations 2725e8dbd04SDag-Erling Smørgravare actually in use, and what valid combinations of configure options 2735e8dbd04SDag-Erling Smørgravexist. The raw data is available only to the OpenSSH developers, however 2745e8dbd04SDag-Erling Smørgravsummary data may be published. 2755e8dbd04SDag-Erling Smørgrav 2765e8dbd04SDag-Erling Smørgrav5. Problems? 27783d2307dSDag-Erling Smørgrav------------ 27883d2307dSDag-Erling Smørgrav 27983d2307dSDag-Erling SmørgravIf you experience problems compiling, installing or running OpenSSH. 28083d2307dSDag-Erling SmørgravPlease refer to the "reporting bugs" section of the webpage at 281*ca86bcf2SDag-Erling Smørgravhttps://www.openssh.com/ 282