移植ssh到开发板主要是将开发板当成服务器,电脑端可以作为客户端进行访问,从而实现通过网线就可以进行文件的传输以及控制台控制。
移植ssh主要包含三大部分:1. zlib的移植; 2. openssl的移植; 3. openssh的移植
因此需要下载对应的源代码才能进行交叉编译。
zlib官网:http://www.zlib.net/fossils/ openssl官网:https://www.openssl.org/source/old/ openssh官网:http://mirror.aarnet.edu.au/pub/OpenBSD/OpenSSH/portable/
这里下载了zlib-1.2.1.2.tar.gz openssl-1.0.2p.tar.gz openssh-5.6p1.tar.gz
(这里版本的选择建议大家可以先选择下载openssh的一个版本,解压openssh后进入文件夹查看INSTALL文档,里面有对zlib和openssl版本要求等的相关描述,可以根据其描述下载对应的版本,,如下图)
创建相关目录,方便管理
创建arm_ssh文件夹:mkdir arm_ssh
进入arm_ssh并创建lib文件夹:cd arm_ssh
mkdir lib
将下载好的zlib openssl openssh压缩包复制到arm_ssh文件夹中并解压
tar -xzvf openssh-5.6p1.tar.gz
tar -xzvf openssl-1.0.2p.tar.gz
tar -xzvf zlib-1.2.1.2.tar.gz
解压后目录如下:
zlib的移植
进入zlib-1.2.1.2目录:cd zlib-1.2.1.2
生成Makefile:./configure --prefix=/home/sen/arm_ssh/lib/zlib-1.2.1.2
-prefix指定安装目录,若zlib-1.2.1.2没有创建会自动创建
修改生成的Makefile, 主要将编译器改为arm平台的:vim Makefile
这里修改下图划红线的地方
编译:make
安装:make install
openssl的移植
进入openssl目录:cd openssl-1.0.2p
生成Makefile文件:./Configure linux-elf-arm -DB_ENDIAN linux:‘arm-linux-gcc’ --prefix=/home/sen/arm_ssh/lib/openssl-1.0.2p
编译:make
安装:make install
openssh的移植
进入openssh目录:cd openssh-5.6p1
生成Makefile文件:./configure --host=arm-linux --with-libs --with-zlib=/home/sen/arm_ssh/lib/zlib-1.2.1.2 --with-ssl-dir=/home/sen/arm_ssh/lib/openssl-1.0.2p --disable-etc-default-login CC=arm-linux-gcc AR=arm-linux-ar
编译:make
运行到这一步,就可以在openssh文件夹中找到移植需要的“scp ,sftp ,ssh,sshd,ssh-add,ssh-agent,ssh-keygen,ssh-keyscan”文件。
生成key文件
进入openssh目录:cd openssh-5.6p1
生成ssh_host_rsa_key文件:ssh-keygen -t rsa -f ssh_host_rsa_key -N “”
生成ssh_host_dsa_key文件:ssh-keygen -t dsa -f ssh_host_dsa_key -N “”
生成ssh_host_ecdsa_key文件:ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N “”
生成ssh_host_ed25519_key文件:ssh-keygen -t dsa -f ssh_host_ed25519_key -N “”
开发板的安装
在开发板上新建“/usr/libexec“,“/usr/local/etc ”,“/usr/local/bin ”三个目录:mkdir -p /usr/libexec /usr/local/etc /usr/local/bin
将openssh生成的“scp ,sftp ,ssh,sshd,ssh-add,ssh-agent,ssh-keygen,ssh-keyscan”文件拷贝到开发板中的 /usr/local/bin中
将openssh目录下的“ssh_host_rsa_key,ssh_host_dsa_key,ssh_host_ecdsa_key,ssh_host_ed25519_key,moduli,ssh_config,sshd_config”拷贝到开发板的“/usr/local/etc”目录,并将“ssh_host_rsa_key,ssh_host_dsa_key,ssh_host_ecdsa_key,ssh_host_ed25519_key”权限改为600(不改权限后面运行不了)
将“sftp-server、ssh-keysign”拷贝到开发的“/usr/libexec”目录
修改开发板密钥:
在开发板串口控制台中,使用命令“vi /etc/passwd”,打开 ssh 秘钥文件,在/etc/passwd文件底行添加以下内容:
sshd: x:74:74:Privilege-separated
SSH:/var/empty/sshd:/sbin/nologin (注:确保文件夹路径有效)
测试
首先开发板要能ping通虚拟机
这里虚拟机IP为192.168.13.59,开发板IP为192.168.13.60
如果开发板root用户没密码,须设置密码:passwd root
在开发板运行:/usr/local/bin/sshd
测试时这里会提示缺少libnsl.so.1这个动态库,可在虚拟机的arm编译器安装位置找到该库并复制到开发板的/lib目录下。
查看是否已经运行:ps
若成功运行,则在虚拟机上输入ssh root@192.168.13.60即可实现远程登录开发板