OpenSSH交叉编译和移植

2019-07-13 09:29发布

一、OpenSSL交叉编译编译
1、下载OpenSSL源码:
(1)地址:http://www.openssl.org/source
(2)我下载的是版本openssl-1.0.1h
2、解压:tar xvzf openssl-1.0.1h.tar.gz
3、进入解压后的目录,然后再创建输出目录(make install是安装在该目录),如mkdir OutDir
4、配置:./config no-asm --prefix=/home/TestDir/openssl-1.0.1h/OutDir/ shared
说明:--prefix是编译输出目录,shared表示输出动态库,no-asm表示不编译汇编(如果没有该选项,交叉编译是汇编代码编译出问题)。
5、修改Makefile:由于我们是要交叉编译。如下
CC=gcc -------》CC=arm-linux-gcc    
AR=ar -------》AR=arm-linux-ar
RANLIB=/usr/bin/ranlib -------》RANLIB=arm-linux-ranlib
实际情况据个人交叉编译环境而异。
6、开始编译:make && make install
7、部署开发板:将OutDir/lib/目录下的libcrypto.so.1.0.0和libssl.so.1.0.0下载到开发板的/usr/lib/目录下,如果需要软连接则软连接出libcrypto.so和libssl.so。






二、OpenSSH交叉编译和移植
1、下载OpenSSH源码:
(1)下载地址:http://www.openssh.com/portable.html
(2)我下载的版本是:openssh-6.6p1
2、解压:tar xvzf openssh-6.6p1.tar.gz
3、编译配置
(1)./configure --host=arm-linux-gcc --with-libs --with-zlib=/***/zlib-1.2.3 --with-ssl-dir=/****/openssl-0.9.8e --disable-etc-default-login CC=arm-linux-gcc AR=arm-linux-ar
(2)或者./configure --host=arm-linux-gcc --with-libs --disable-etc-default-login CC=arm-linux-gcc AR=arm-linux-ar
4、编译:make   (不需要make install)
5、部署开发板:
(1)在目标板上建立以下目录:
/usr/local/bin/
/usr/local/sbin/
/usr/local/etc/
/usr/local/libexec/
/var/run/
/var/empty/
(2)下载到开发板:将编译目录(***/openssh-6.6p1/)下的文件下载到开发板中,具体如下:
-将 openssh-6.0p1目录下的 sshd复制到目标板的/usr/local/sbin目录;
-将 openssh-6.0p1目录下的scp、sftp、ssh、ssh-add、ssh-agent、ssh-keygen、ssh-keyscan 和ssh-rand-helper复制到目标板的/usr/local/bin目录;
-将openssh-6.0p1目录下的sftp-server和ssh-keysign复制到目标板的/usr/local/libexec目录;
-将openssh-6.0p1目录下的sshd_config、ssh_config 和moduli拷贝到目标板的/usr/local/etc目录
(3)在目标板上创建SSHD工作所需目录和用户
# mkdir /var/empty
# chown root:root /var/empty
# chmod 755 /var/empty
# addgroup sshd
# adduser -G sshd -g 'sshd privsep' -h /var/empty -s /bin/ssh sshd
(4)在目标机或者主机上,产生证书/密码对等
# ssh-keygen -t rsa1 -f ssh_host_key -N ""
# ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
# ssh-keygen -t dsa -f ssh_host_dsa_key -N ""


产生的6个文件ssh_host_dsa_key、ssh_host_dsa_key.pub、ssh_host_key、ssh_host_key.pub和ssh_host_rsa_key、ssh_host_rsa_key.pub需要复制到目标板得/usr/local/etc目录。
运行/usr/local/sbin/sshd即可开启SSH服务




创建key:
/usr/local/bin/ssh-keygen -t rsa1 -f ssh_host_key -N "" && /usr/local/bin/ssh-keygen -t rsa -f ssh_host_rsa_key -N "" && /usr/local/bin/ssh-keygen -t dsa -f ssh_host_dsa_key -N "" && /usr/local/bin/ssh-keygen -t dsa -f ssh_host_ecdsa_key -N "" && /usr/local/bin/ssh-keygen -t dsa -f ssh_host_ed25519_key -N ""




sshd脚本(sshd-server)
#!/bin/sh


base=sshd


# See how we were called.
case "$1" in
  start)
/usr/local/sbin/$base &
        ;;
  stop)
pid=`/bin/pidof $base`
if [ -n "$pid" ]; then
kill -9 $pid
fi
        ;;
esac


exit 0