文章目录
1 基本文件的安装
2 生成 Key 文件,并安装
3 修改目标板密钥文件
4 测试
1 基本文件的安装
在文件系统busybox上新建“/usr/libexec“、“/usr/local/etc ”、“/usr/local/bin ”三个目录,使用命令“mkdir -p /usr/libexec /usr/local/etc /usr/local/bin”,如图 1.1所示。
在虚拟机 Ubuntu 上,将 openssh-6.6p1 下的生成“scp 、sftp、ssh、sshd、ssh-
add、ssh-agent、ssh-keygen、ssh-keyscan”可执行文件拷贝到文件系统“/usr/local/bin”目录下,拷贝完成,如图 1.2所示。
将“moduli、ssh_config、sshd_config”拷贝到开发板的“/usr/local/etc”目录下,
拷贝完成,如图 1.3所示。
将“sftp-server、ssh-keysign”拷贝到开发板的“/usr/libexec”目录下,拷贝完成,
如图 1.4所示。
2 生成 Key 文件,并安装
使用“ssh-keygen”生成个四个 key 文件“ssh_host_rsa_key”“ssh_host_dsa_key”
“ssh_host_ecdsa_key”和“ssh_host_ed25519_key”。
① 在虚拟机 Ubuntu 控制台,“/home/topeet/project/ssh-arm/openssh-4.6p1”目录下,使用命令“ssh-keygen -t rsa -f ssh_host_rsa_key -N ""”,可以生成“ssh_host_rsa_key ”文件
② 接着使用剩下的三条命令:
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_rsa_key”“ssh_host_dsa_key”“ssh_host_ecdsa_key”和
“ssh_host_ed25519_key”文件,拷贝到文件系统的“/usr/local/etc/”目录下,然后将其权限 修改为 600,如下图所示。
3 修改目标板密钥文件
在文件系统中,使用命令“vi /etc/passwd”,打开 ssh 密钥文件,在 “/etc/passwd”文件底行添加以下内容:
sshd:x:74:74
rivilege-separated
SSH:/var/empty/sshd:/sbin/nologin
添加完成之后,如下图所示,然后保存,密钥文件修改完成。
4 测试
作者的开发板链接路由器,PC 机的 Windows 系统也是链接路由器,所以首先要确保开发板和 PC 机是可以 Ping 通的,也就是设置在同一网段,修改文件系统的/etc/eth0-setting文件。
作者的 PC 的 IP 为:192.168.123.224,如图 4.1所示。
开发板的 IP 为:192.168.123.150,/etc/eth0-setting文件已经修改过。
将文件系统打包,烧写到开发板上
使用 ping 命令测试,如图 4.2所示,网络通畅,另外按键“Ctrl”+c 可以结束 ping 动作
接着在开发板上新建 root 账户,如图 4.4所示,使用命令“passwd root”,它会提示输
入密码,需要重复输入两次以防输错。
然后在开发板上运行 sshd 二进制文件,使用命令“/usr/local/bin/sshd”,提示如图 4.5
再去Ubuntu查看下ssh可执行文件,file sshd
在串口控制台输入 ln -sv /lib/ld-2.19-2014.08-1-git.so /lib/ld-linux.so.3 建立软链接,如图 4.7所示:
然后使用工具 ssh 测试是否和 PC 联通能否正常通信,如图 75.3.4.8所示,使用命令
“/usr/local/bin/ssh 192.168.123.224”,这里的 IP 是作者 PC 的 IP。
控制台输入“/usr/local/bin/sshd”虽然报错了,但是不影响使用。如果提示缺少动态库,前面的库文件如果拷贝不全,可能出现这种问题,如果用户使用迅为电子的根文件系统,经过测试各种文件都拷贝没有错误,一般是不会提示缺少什么库的。
接着在 PC 上使用 ssh 工具连接开发板,使用方法和连接 Ubuntu 上的 ssh 类似,如图 4.10所示。
然后传一个文件测试下,如图 4.12所示。
说明成功完成了文件传输移植工作。
ssh 控制台也是可以使用的,登陆方法和 PC 连接虚拟机 Ubuntu 的 ssh 一 样。
另外在安装部分,也可以将其拷贝到文件系统的源码中对应目录,重新打包编译,生成直接支持 ssh 的镜像。
到这里,部分用户可能会有疑惑,第一个人是如何知道 ssh 需要这两个库文件的呢?首先,开发 ssh 软件的大神,做了这个东西会提供编译和使用 demo,这样就有了基础的英文移植文档,然后慢慢的会有中文版的,接着 ssh 流传开了之后,通过网络搜索 ssh 移植到 arm的方法的文档和博客,就随处可见了。
当然,假如将来大家工作有移植的需求,找不到中文教程,需要直接使用某个开源软件的 demo,首先就需要英文过关,然后还需要有移植的基础知识。在编译的过程中,它会提示缺少各种库,通过编译,也是可以一步一步找出依赖库的。