[Peeweelinux] HowTo: OpenSSH on PWL

Troy Engel [email protected]
Tue, 18 Feb 2003 16:44:33 -0800


This is a bit tricky, so if it doesn't work quite right (or I missed a 
step in this document, etc), just try it again. Errors and ommisions, 
just send a note.

Required:
- Red Hat 6.2 box with root priv (will be explained)
- zlib 1.1.4
- openssl-0.9.7
- openssh-3.5p1

I ran into a smattering of problems, mainly during linking, when trying 
to build this all on a RH 7.2 box with the 6.2 compat libs installed. To 
save a lot of hearttache, it was easier to use one of my 6.2 boxes - 
they have the same glibc and stuff PWL does.


Set up stuff
============
/var/tmp/ is your working directory. Make a directory /var/tmp/ssh-root 
(for installs), /var/tmp/src/ and /var/tmp/build/. Download all tarballs 
to /var/tmp/src/.


Build zlib
==========
Untar zlib to /var/tmp/build/, then build as follows:

   ./configure --prefix=/usr --shared
   make
   make install prefix=/var/tmp/ssh-root/usr


Build openssl
=============
Untar openssl to /var/tmp/build/, then build as follows:
   /usr/bin/perl ./Configure --prefix=/usr -no-krb5 linux-elf shared 
zlib-dynamic

   make
   make INSTALL_PREFIX=/var/tmp/ssh-root install


Edit LD path
============
The openssl configure script (and maybe build, but didn't check) has an 
issue with trying to use the openssl libs you just built, if they're not 
in the LD scene. Add the following line to /etc/ld.so.conf:

   /var/tmp/ssh-root/usr/lib

...and run /sbin/ldconfig. We'll remove this when done.


Build openssh
=============
Untar openssl to /var/tmp/build/, then build as follows:

   ./configure --prefix=/usr --sysconfdir=/etc/ssh 
--with-zlib=/var/tmp/ssh-root --with-ssl-dir=/var/tmp/ssh-root 
--without-shadow --with-pid-dir=/var/run --with-ipv4-default 
--build=i386-pc-linux-gnu --without-privsep-user --without-privsep-path

   make
   make install DESTDIR=/var/tmp/ssh-root


Create sshd keys
================
Run the following commands to create the host keypairs (you could do 
this on bootup, but I prefer to prepackage them). Change the comment 
used in the -C option to your desired comment.

   cd /var/tmp/ssh-root/usr/bin
   ./ssh-keygen -t rsa1 -f /var/tmp/ssh-root/etc/ssh/ssh_host_key -N "" 
-C "mycomment"
   ./ssh-keygen -t rsa -f /var/tmp/ssh-root/etc/ssh/ssh_host_rsa_key -N 
"" -C "mycomment"
   ./ssh-keygen -t dsa -f /var/tmp/ssh-root/etc/ssh/ssh_host_dsa_key -N 
"" -C "mycomment"


Configure sshd_config
=====================
Edit /var/tmp/ssh-root/etc/ssh/sshd_config and change params as desired 
-- you must change at least "UsePrivilegeSeparation no", as we're not 
using it here. (I change "X11Forwarding yes")


Add startup script
==================
Create a startup script in /var/tmp/ssh-root/etc/rcS.d/ (make dir rcS.d) 
- the exact name will vary depending on your needs. My PWL has been 
customized, so the script for me works named as "60sshd" (I have a 
10network and 50inetd which fire off first). Make sure the file is mode 
0755. Here is my script:

   #!/bin/sh

   # /etc/rcS.d/60sshd
   #
   # Init file for OpenSSH server daemon

   [ -f /var/lock/subsys/network ] || exit 0

   echo "Starting sshd...."
   /usr/sbin/sshd &
   touch /var/lock/subsys/sshd

   exit 0


Clean out things
================
Prune down useless stuff (man pages, include files, etc) from your 
/var/tmp/ssh-root/ tree. I wanted to leave the user programs there (we 
have enough space on the CF disk), but I got rid of a lot of things. My 
list is attached at the end of this doc.


Create PWL "list" file and tarball
==================================
Change to /var/tmp/ssh-root, then run these commands:

   find . | sed -e "s|^./||g ; /^.$/d" > openssh-3.5p1.list
   tar -cf openssh-3.5p1.tar usr/ etc/

...and now edit "openssh-3.5p1.list" -- you need to add a terminating 
slash to all directory names (usr/, etc/, etc) for PWL to work right later.


Add to PWL
==========
Add these two files (openssh-3.5p1.list, openssh-3.5p1.tar) to one of 
the packages/ locations on your PWL build machine 
(packages/Network_Daemons/ seems like a good spot). Run ./pwlconfig and 
select the new openssl files as normal, extract the filesystem, and so 
forth -- it's all normal from here on out.


You can now remove the /var/tmp/ssh-root/usr/lib/ from /etc/ld.so.conf 
and rerun /sbin/ldconfig on your build machine. I should note that I run 
kernel 2.4.18 on our systems (see my other HowTo for new kernels), but 
since it builds cleanly on a stock RH62 machine, I don't think there's 
going to be any issues here. (my custom kernel includes unixpty support, 
et al).


My openssh-3.5p1.list file
==========================
usr/
usr/bin/
usr/bin/scp
usr/bin/sftp
usr/bin/slogin
usr/bin/ssh
usr/bin/ssh-keygen
usr/lib/
usr/lib/libz.so.1.1.4
usr/lib/libz.so
usr/lib/libz.so.1
usr/lib/libcrypto.so
usr/lib/libcrypto.so.0
usr/lib/libcrypto.so.0.9.7
usr/lib/libssl.so
usr/lib/libssl.so.0
usr/lib/libssl.so.0.9.7
usr/libexec/
usr/libexec/sftp-server
usr/sbin/
usr/sbin/sshd
usr/ssl/
usr/ssl/certs/
usr/ssl/private/
usr/ssl/openssl.cnf
etc/
etc/ssh/
etc/ssh/ssh_config
etc/ssh/sshd_config
etc/ssh/moduli
etc/ssh/ssh_host_key
etc/ssh/ssh_host_key.pub
etc/ssh/ssh_host_rsa_key
etc/ssh/ssh_host_rsa_key.pub
etc/ssh/ssh_host_dsa_key
etc/ssh/ssh_host_dsa_key.pub
etc/rcS.d/
etc/rcS.d/60sshd



-- 
Troy Engel, Systems Engineer
Not suitable for children.