成功移植OpenSSH到ARM Linux开发板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成功移植OpenSSH到ARM Linux开发板
概述
如果是用到一些没有SSH的开发板,对于部分的应用开发来说,会受到影响,比如使用ARM DS-5进行RSE远程管理操作时,就会出现错误。
下面就具体如何进行OPENSSH移植进行详细介绍。
步骤
1.下载源码包如下,下载 openssh、openssl 和 zlib 三个包。
openssh
•本地下载:openssh-6.6p1.tar.gz(1.22 MB, 下载次数: 2470)
•官网下载:/portable.html
openssl
•本地下载:openssl-1.0.1h.tar.gz(4.27 MB, 下载次数: 2647)
•官方下载:/source
zlib
•本地下载:zlib-1.2.8.tar.gz(557.71 KB, 下载次数: 3499)
•官方下载:/
2.部署工作目录创建用户主目录下创建工作目录:
1 2$ mkdir/home/gary/work $ cd/home/gary/work
在 work 目录下面创建安装目录:
1 2$ mkdirinstall$ mkdirinstall/zlib $ mkdirinstall/openssl
3.解压并编译
把以上下载的3个安装包复制到 work 目录下,并解压,解压命令:
1 2$ tarzxvf zlib-1.2.8.tar.gz
$ tarzxvf openssl-1.0.1h.tar.gz$ tarzxvf
openssh-6.6p1.tar .gz
a )交叉编译 zlib
1 2 3 $ cdzlib-1.2.8 $ ./configure--prefix=/home/gary/work/install/zlib
$ viMakefile
将 Makefile 中的交叉编译工具改成当前开发板使用的交叉编译工具:
1 2
3 4 5 6 CC=/usr/local/arm-2010q1/bin/arm-none-linux-
gnueabi-gcc AR=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-ar CPP=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-gcc LDSHARED=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-gcc $ make
$ makeinstall
b )交叉编译openssl
1 2 3 4
$ cd../openssl-1.0.1h $ ./Configure--prefix=/home/gary/work/install/openssl os/compiler:/usr/local/ar m-2010q1/bin/arm-none-linux-gnueabi-gcc $ make $ makeinstall
c )交叉编译openssh
1 2 3 $ cd ../openssh-6.6p1 $ ./configure--host=arm-none-linux-gnueabi --with-libs --with-zlib=/home/gary/work/install/zlib--with-
ssl-dir=/home/gary/work/install/openssl--disable-etc-default-login CC=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-gccAR=/usr/local/arm-2010q1/bin/arm-none-linux-
gnueabi-ar
$ make
注意:openssh 不需要make install
4.操作目标板
a )确保目标板上有以下目录,若没有,则新建:
1 2 /usr/local/bin
/usr/local/etc
3 4 5/usr/libexec /var/run
/var/empty
b)从PC机上将以下文件拷贝到目标板Linux系统中
PC机 /home/gary/work/openssh-6.6p1/ 目录下的
•scp sftp ssh sshd ssh-add ssh-agent ssh-keygen ssh-keyscan 共8个文件拷贝到目标板 /usr/local/bin
•moduli ssh_config sshd_config 共3个文件拷贝到目标板 /usr/local/etc •sftp-server ssh-keysign 共2个文件拷贝到目标板 /usr/libexec
c)生成Key文件
在PC机 /work/ssh/source/openssh-6.6p1/ 目录下运行:
1 2 3 4$ 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 ""
将生成的 ssh_host_*_key 这4个文件copy到目标板的 /usr/local/etc/ 目录下。
其中 ssh_host_ed25519_key 是SSH第二版协议用到的key,放到开发板之后,要修改权限为 600,否则会提示以下错误:
1 2 3 4 5Permissions 0644
for'/usr/local/etc/ssh_host_ed25519_key'are too open. It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key:
/usr/local/etc/ssh_host_ed25519_key
Could not load host key:
/usr/local/etc/ssh_host_ed25519_key
修改权限的命令为:
1# chmod 600
/usr/local/etc/ssh_host_ed25519_key
d)修改目标板passwd文件。
在 /etc/passwd 文件最后添加下面这一行:
1sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
5.测试
如果开发板的 root 用户还没有密码,键入以下命令然输入两次密码来修改,否其他设备无法连:
1# passwd root
在目标板上运行:
1# /usr/local/bin/sshd
可以用 ps 命令查看sshd是否在工作
如果运行的过程中有提示缺少动态连接库,可以在主机上搜索相应文件,拷贝到目标板/lib/目录下面,注意创建软连接!
OK!不出意外的话可以成功,
主机上:
1$***************.1.250(开发板的ip)
然后输入开发板的root密码就就可以了,如下图连接成功:
相关帖子
SSH 移植到 ARM Linux 开发板上错误总结:http://www.myir-
/bbs/thread-6167-1-1.html。