SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
1. 下载
首先下载几个源码包
移植openssh需要三个包:openssh、openssl 和 zlib,地址如下:
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这三个版本为例。
2. 准备
创建目录
mkdir ssh
cd ssh
mkdir compressed source install
mv tarpakgs/openssh-5.6p1.tar.gz /home/zzt/ssh/compressed
mv tarpakgs/openssl-0.9.8e.tar.gz /home/zzt/ssh/compressed
mv tarpakgs/zlib-1.2.3.tar.gz /home/zzt/ssh/compressed注:compressed 压缩文件目录
source 解压文件目录
install 安装文件目录解压
cd /home/zzt/ssh/compressed
tar zxvf zlib-1.2.3.tar.gz –C ../source
tar zxvf openssl-0.9.8e.tar.gz –C ../source
tar zxvf openssh-5.6p1.tar.gz –C ../source
3. 交叉编译
交叉编译zlib
cd zlib-1.2.3
./configure –prefix=/home/zzt/ssh/install/zlib
**配置完成后修改Makefile
vim Makefile
CC=arm-marvell-linux-gnueabi-gcc
LDSHARED=arm-marvell-linux-gnueabi-gcc
CPP=arm-marvell-linux-gnueabi-gcc -E
AR=arm-marvell-linux-gnueabi-ar rc
make
make install交叉编译openssl
cd openssl-0.9.8e
./Configure –prefix=/home/zzt/ssh/install/openssl os/compiler:arm-marvell-linux-gnueabi-gcc
make
make install交叉编译openssh
cd openssh-5.6p1
./configure –host=arm-marvell-linux-gnueabi –with-libs –with-zlib=/home/zzt/ssh/install/zlib –with-ssl-dir=/home/zzt/ssh/install/openssl –disable-etc-default-login CC=arm-marvell-linux-gnueabi-gcc AR=arm-marvell-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单板准备文件
确保目标板上有以下目录,若没有,则新建,在ARM文件系统中添加,在PC机上操作
/usr/local/bin/
/usr/local/sbin/
/usr/local/etc/
/usr/local/libexec/
/var/run/
/var/empty/拷贝文件到目标板Linux系统中,在PC机上操作
cd /home/zzt/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/生成Key文件,在PC机上操作
cd /home/zzt/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 “”
cp ssh_host_*_key /usr/local/etc/
注:key是指私钥文件,有3个文件需要拷贝修改目标板passwd文件,在ARM文件系统中添加,在PC机上操作
在/etc/passwd 中添加下面这一行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
5. 测试
在ARM单板上运行:
/usr/local/sbin/sshd
可以使用ps命令查看sshd是否工作,如果运行的过程中有提示缺少动态连接库,可以在主机上搜索相应文件,拷贝到目标板/lib/目录下面,注意创建软连接!
在主机上运行:
ssh root@192.168.1.11(开发板的ip)
然后输入开发板的root密码就就可以了。
注:root密码就是你开发板上root的密码,如果之前root没有密码,需要重新设置,用passwd root,然后输入密码即可。