成功移植SSH到ARM目标板的Linux系统中

传统的网络服务程序,在网络上用明文传送口令和数据,所以---ftp、pop和telnet在本质上都是不安全的。SSH ( Secure Shell),则会加密传输的数据,并且压缩后再传输,使得计算机之间的远程控制和数据传输安全高效。
在运行Linux操作系统上移植ssh步骤:
        1. 下载安装包;
        2. 找到一个开发平台,在开发平台上进行部署要配置的文件;
        3. 配置编译相关文件;
        4.  移植可执行文件、配置文件、库到目标平台上。
        5. 测试

1. 下载:

移植SSH需要3个安装包:zlib、openssl和openssh,地址如下:
zlib官方下载:http://www.zlib.net/
openssl官方下载:http://www.openssl.org/source
openssh官网下载:http://www.openssh.com/portable.html
因为它们之间没有版本所谓的版本冲突,所以都下载最新板的即可。本文以zlib-1.2.3.tar.gz、openssl-0.9.8e.tar.gz、openssh-5.6p1.tar.gz这三个版本为例,其他版本过程一样。注意:其他高版本的移植工作后会依赖对应的高版本的库,有时候目标板不支持高版本库的时候,就可以适当降低openssh的版本后再移植。

2. 部署

 1. 创建工作目录:
cd /home
mkdir /work
cd /work
mkdir ssh 
cd ssh
mkdir compressed install source 
/*compressed为未解压文件目录;install为软件安装目录; source 源码包解压目录*/
mv  openssh-5.6p1.tar.gz    /work/ssh/compressed
mv  openssl-0.9.8e.tar.gz   /work/ssh/compressed
mv  zlib-1.2.3.tar.gz       /work/ssh/compressed
2. 解压安装包:
cd /work/ssh/compressed/
tar -xvf zlib-1.2.3.tar.gz –C ../source
tar -xvf openssl-0.9.8e.tar.gz –C ../source
tar -xvf openssh-5.6p1.tar.gz –C ../source

3. 配置和交叉编译

1. 编译zlib
    cd  /home/work/ssh/source/zlib-1.2.3
    /*配置zlib*/
    ./configure -prefix=/home/work/ssh/install/zlib 
    /*修改Makefile :*/
    vi Makefile
    CC=gcc 改为:
    CC=arm-none-linux-gnueabi-gcc
    LDSHARED= gcc 改为:
    LDSHARED=arm-none-linux-gnueabi-gcc
    CPP= gcc - E 改为:
    CPP=arm-none-linux-gnueabi-gcc - E
    AR= ar rc 改为:
    AR=arm-none-linux-gnueabi-ar rc
    /*保存退出,开始编译:*/
    make
    make install

2. 编译openssl 
cd  /home/work/ssh/source/openssl-0.9.8e
/*配置openssl*/
./Configure os/compiler:arm-none-linux-gnueabi-gcc
make
make install

3. 编译openssh
cd /home/work/ssh/source/openssh-5.6p1
./configure -host=arm-none-linux-gnueabi -with-libs -with-zlib=/home/work/ssh/install/zlib -with-ssl-dir=/usr/local/ssl -disable-etc-default-login CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar
make
注意:openssh不需要make install,不需要安装目录
configure opt介绍:
–prefix= install architecture-independent files in PREFIX[ /usr/local ] (将体系无关文件安装到目录PREFIX里,默认是/usr/local),这里的有:PREFIX/etc,PREFIX/com,PREFIX/var,PREFIX/include,PREFIX/share
–with-zlib=刚才编译出来的zlib安装路径
–with-ssl-dir=刚才编译出来openssl安装路径
–host=交叉编译出来的程序运行的平台

4. 移植到ARM目标板

确保目标板上有以下目录,如果是真的没有的时候,则新建添加,
/usr/local/bin/
/usr/local/sbin/
/usr/local/etc/
/usr/local/libexec/
/var/run/
/var/empty/
/*改变empty的所属权为root*/
chown  root /var/empty

拷贝文件到目标板Linux系统中
cd /home/work/ssh/source/openssh-5.6p1/
cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan /usr/local/bin
cp moduli ssh_config sshd_config /usr/local/etc
cp sftp-server ssh-keysign /usr/local/libexec
cp sshd /usr/local/sbin/
chmod 777 /usr/local/sbin/sshd

在开发平台上生成Key文件,拷贝到目标板
cd /home/work/ssh/source/openssh-5.6p1/
ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""
ssh-keygen -t dsa -f ssh_host_ed25519_key -N ""
cp ssh_host_*_key /usr/local/etc/
chmod 600 /usr/local/etc/ssh_host_ed25519_key
注:key是指私钥文件,有4个文件需要拷贝

修改目标板密码,在目标板的文件系统中添加:
在/etc/passwd 中添加下面这一行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

5. 测试

首先必须保证目标板的时间和当前时间的一致,才能使访问时密码不会过时。
可以在目标板上使用data命令设置时间:
date -s "2018-01-19 10:30:00"
配置目标板网络:
ifconfig eth0 192.168.117.119
ifconfig eth0 up
在ARM单板上运行(注意请使用绝对路径来启动sshd服务器守护进程):
/usr/local/sbin/sshd
可以使用ps命令查看sshd是否工作,如果运行的过程中有提示缺少动态连接库,可以在主机上搜索相应文件,拷贝到目标板/lib/目录下面,注意创建软连接!

在主机上运行:
ssh root@192.168.117.119(开发板的ip)
然后输入开发板的root密码就就可以了。

注:
    1. root密码就是你开发板上root的密码,如果之前root没有密码,需要重新设置,用passwd root,然后输入密码即可。
    2. 如果目标板由于某些网络的影响导致ip不稳定,使得ssh client连接不上,可以尝试把目标板的ip固定
    vi autorun.sh /*添加如下*/
    ifconfig eth0 192.168.117.119
    3. 如果移植编译的时候出错,请考虑你的交叉编译链和你的软件版本的匹配性,针对自己的交叉编译链,酌情降低或者升高软件版本,重新按照以上步骤来执行。

本人水平有限,如有纰漏请批评指正。如需转载,请注明出处,谢谢!
http://mp.blog.csdn.net/mdeditor/index/79104429

参考文档:
http://blog.csdn.net/xy010902100449/article/details/50343733

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值