Skip to content

OpenSSH 32 bit Build and Installation Instructions

Bernard Spil edited this page Oct 23, 2015 · 12 revisions

STEP 1: Prepare the Cygwin 32-bit environment

1. Download the Cygwin 32-bit installer from www.cygwin.com
2. Launch the Cygwin installer, and ensure that packages listed below are selected as 'install':
  • devel/mingw-*

  • devel/mingw64-*

  • perl/*

  • devel/make: GNU Tool

  • devel/autoconf

  • devel/autoconf-2.69-2

    See REFERENCE VERSIONS below for the detailed list of packages used for reference build.

STEP 2: Compile

1. Ensure that are you using correct mingw32 toolchain. You must have administrative rights.

To do that, create symbolic links:

run the [openssh_dir]/scripts/set-mingw32.sh script from the Cygwin /bin directory. Below 2 are examples.

cd c:/cygwin32/bin

c:/win32openssh/Win32-OpenSSH/scripts/set-mingw32.sh (will emit rm: cannot remove warnings on first run)

2. Prepare the 32-bit libssl.a and libcrypto.a libraries and the openssl headers.

These libraries are used by 32-bit openssh and 32-bit ssh-lsa.

  • Download OpenSSL sources from http://www.openssl.org/source/.

    Version used as reference build is openssl-1.0.2d.

  • tar -xvf openssl-1.0.2d.tar.gz // do it in Cygwin shell with its tar command

  • Compile sources by running:

    $./Configure mingw

    $make

3. Prepare 32-bit libz.a and zlib.dll.
  • Download ZLIB sources from http://www.zlib.net

    Version used as reference build is 1.2.8.

  • tar -xvf zlib.1.2.8.tar.gz // do it in Cygwin shell with its tar command

  • Compile sources by running:

    make -f win32/Makefile.gcc

4. Build 32-bit OpenSSH:

Run the following commands under a Cygwin shell in the openssh directory:

 `$autoreconf`

 `$./configure --build=i686-pc-mingw32
                --host=i686-pc-mingw32
                --with-ssl-dir=<OPENSSL_DIR>
                --with-zlib=<ZLIB_DIR>
                --with-kerberos5`

where OPENSSL_DIR is a directory where openssl sources are extracted and ZLIB_DIR is a directory where zlib sources are extracted

 `$cat config.h.tail >> config.h`   

Build one of SSH family tool:

Run:

  `$make <program>`
  
   where <program> is any of the OpenSSH tools ported to Win32.

   sftp.exe          
   ssh-agent.exe     
   ssh-add.exe       
   ssh-keygen.exe    
   sftp-server.exe   
   ssh.exe
   sshd.exe

   --to run any of these binaries, you need zlib1.dll that was generated in step 3 above. Copy it to
   --the current directory or a directory that is in PATH environment variable.
   `./ssh -V`  is a good client test to run
5. Build 32-bit ssh-lsa for native RSA/DSA key authorization

Move to [openssh_directory]/contrib/win32/win32compat/lsa directory and run:

`$export LIBSSL_PATH="<OPENSSL_DIR>"`

`$make -f Makefile.mingw32`

where <OPENSSL_DIR> is a directory where openssl sources are extracted
  • This command should produce the 32-bit ssh-lsa.dll file.

STEP 3 - Install ssh-lsa on system where sshd server is running

  • Copy the ssh-lsa.dll to the %WINDIR%/System32 directory.

  • Then, by using the regedit tool, add 'ssh-lsa.dll' string to the end of the registry key below:

    HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa/Authentication Packages

  • Reboot the machine.

  • .ssh/authorized_keys file in a user's home directory should contain the public keys allowed to logon without password for the user. Typically it is in c:/users/myusername/.ssh/authorized_keys in a Windows system. One adds a key by appending a public key to the end of this file. For example: "type id_rsa.pub >> .ssh/authorized_keys"

REFERENCE VERSIONS

CYGWIN PACKAGES

13-1 Devel/autoconf: Wrapper for autoconf command

2.13-12 Devel/autoconf2.1: Stable version of the automatic configure builder

2.69-2 Devel/autoconf2.5: An extensible package of m4 macros shell scripts to automatically configure software code packages

2.23.51-1 Devel/binutils: The GNU assembler, linker and binary utilites

4.8.2-1 Devel/libgcc1: GCC C runtime library

4.8.2-1 Devel/libssp0: GCC Stack-smashing Protection runtime library

4.8.2-1 Devel/libstdc++6: GCC C++ runtime library

4.0-2 Devel/make: The GNU version of 'make' utility

2.23.1-1 Devel/mingw-binutils: Bintutils for MinGW.org win32 toolchain (util)

4.7.3-1 Devel/mingw-gcc-ada

4.7.3-1 Devel/mingw-gcc-core

4.7.3-1 Devel/mingw-gcc-fortran

4.7.3-1 Devel/mingw-gcc-g++

4.7.3-1 Devel/mingw-gcc-objc

20110507-2 Devel/mingw-pthreads: Libpthread for MinGW.org

4.0-1 Devel/mingw-runtime: MinGW.org MSVC & compiler runtime header and libraries

4.0-1 Devel/mingw-w32api

2.22.52-1 Devel/mingw64-i686-binutils

4.7.3-1 Devel/mingw64-i686-gcc-core

4.7.3-1 Devel/mingw64-i686-gcc-g++

3.0.0-1 Devel/mingw64-i686-headers

20100619-5 Devel/mingw64-i686-pthreads

3.0.0-1 Devel/mingw64-i686-runtime

3.0b_svn5935-1 Devel/mingw64-winpthreads

2.22.52-1 Devel/mingw64-x86_64-binutils

4.7.3-1 Devel/mingw64-x86_64-gcc

4.7.3-1 Devel/mingw64-x86_64-core

4.7.3-1 Devel/mingw64-x86_64-g++

3.0.0-1 Devel/mingw64-x86_64-headers

20100619-5 Devel/mingw64-x86_64-pthreads

3.0.0-1 Devel/mingw64-x86_64-runtime

3.0b-svn5935-1 Devel/mingw64-x86_64-winpthreads

5.14.2-3 Perl/perl

OpenSSL

openssl-1.0.2d

ZLIB

zlib-1.2.8

Clone this wiki locally