|
概述 如果是用到一些没有SSH的开发板,对于部分的应用开发来说,会受到影响,比如使用ARM DS-5进行RSE远程管理操作时,就会出现错误。下面就具体如何进行OPENSSH移植进行详细介绍。
步骤 1.下载源码包如下,下载 openssh、openssl 和 zlib 三个包。
opensshopenssl
zlib
2.部署工作目录创建用户主目录下创建工作目录:[mw_shl_code=bash,true]
$ mkdir /home/gary/work
$ cd /home/gary/work
[/mw_shl_code]
在 work 目录下面创建安装目录:
[mw_shl_code=bash,true]
$ mkdir install$ mkdir install/zlib
$ mkdir install/openssl
[/mw_shl_code]
3.解压并编译
把以上下载的3个安装包复制到 work 目录下,并解压,解压命令:
[mw_shl_code=bash,true]
$ tar zxvf zlib-1.2.8.tar.gz
$ tar zxvf openssl-1.0.1h.tar.gz$ tar zxvf openssh-6.6p1.tar.gz
[/mw_shl_code]
a)交叉编译 zlib
[mw_shl_code=bash,true]$ cd zlib-1.2.8
$ ./configure --prefix=/home/gary/work/install/zlib
$ vi Makefile[/mw_shl_code]
将 Makefile 中的交叉编译工具改成当前开发板使用的交叉编译工具:
[mw_shl_code=bash,true]
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
$ make install[/mw_shl_code]
b)交叉编译openssl
[mw_shl_code=bash,true]$ cd ../openssl-1.0.1h
$ ./Configure --prefix=/home/gary/work/install/openssl os/compiler:/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-gcc
$ make
$ make install[/mw_shl_code]
c)交叉编译openssh
[mw_shl_code=bash,true]$ 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-gcc AR=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-ar
$ make
[/mw_shl_code]
注意:openssh不需要make install
4.操作目标板
a)确保目标板上有以下目录,若没有,则新建:
[mw_shl_code=bash,true]/usr/local/bin
/usr/local/etc
/usr/libexec
/var/run
/var/empty
[/mw_shl_code]
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/ 目录下运行:
[mw_shl_code=bash,true]
$ 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 ""
[/mw_shl_code]
将生成的 ssh_host_*_key 这4个文件copy到目标板的 /usr/local/etc/ 目录下。其中 ssh_host_ed25519_key 是SSH第二版协议用到的key,放到开发板之后,要修改权限为 600,否则会提示以下错误:
[mw_shl_code=bash,true]Permissions 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[/mw_shl_code]
修改权限的命令为:
[mw_shl_code=bash,true]# chmod 600 /usr/local/etc/ssh_host_ed25519_key
[/mw_shl_code]
d)修改目标板passwd文件。
在 /etc/passwd 文件最后添加下面这一行:
[mw_shl_code=bash,true]sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin[/mw_shl_code]
5.测试
如果开发板的 root 用户还没有密码,键入以下命令然输入两次密码来修改,否其他设备无法连:
[mw_shl_code=bash,true]# passwd root[/mw_shl_code]
在目标板上运行:
[mw_shl_code=bash,true]# /usr/local/bin/sshd[/mw_shl_code]
可以用 ps 命令查看sshd是否在工作
如果运行的过程中有提示缺少动态连接库,可以在主机上搜索相应文件,拷贝到目标板/lib/目录下面,注意创建软连接!
OK!不出意外的话可以成功,
主机上:
[mw_shl_code=bash,true]$ ssh root@192.168.1.250(开发板的ip)[/mw_shl_code]
然后输入开发板的root密码就就可以了,如下图连接成功:
ssh
相关帖子
SSH 移植到 ARM Linux 开发板上错误总结:http://bbs.myir-tech.com/thread-6167-1-1.html
|
|