目录
一、背景介绍
二、下载源码
三、交叉编译
1、交叉编译zlib
2、交叉编译openssl
3、交叉编译openssh
四、Arm linux开发板SSH环境搭建
1、创建相关目录
2、拷贝文件到开发板上
3、生产Key文件并拷贝到开发板上
4、修改配置
五、SSH测试
一、背景介绍
笔者开发的嵌入式设备在经常安装在不好接触的地方,不太方拉出串口来调试,因此就想到用SSH远程登录调试设备。SSH 全称为 Secure Shell(安全外壳协议,简称 SSH),是一种加密的网络传输协议,用于在不安全的网络中为网络服务提供安全的传输环境。 SSH 功能很强大,但是最常用的还是用于远程登录。
二、下载源码
zlib:
官网下载:
版本:zlib-1.2.2.tar.gz
openssl:
官网下载:/source
版本:openssl-1.1.1k.tar.gz
openssh:
官网下载:/portable.html
阿里云镜像:/pub/OpenBSD/OpenSSH/portable
版本:openssh-8.5p1.tar.gz
注意:openssh与openssl是有版本依赖的,版本不匹配可能会导致其他错误。
三、交叉编译
1、交叉编译zlib
解压并配置安装路径
tar -vxzf zlib-1.2.2.tar.gzcd zlib-1.2.2/./configure --prefix=/home/lyy/tools/zlib
修改Makefile,将相关工具链改为交叉编译工具链
然后编译安装zlib
makemake install
2、交叉编译openssl
参考使用openssl+curl让嵌入式设备实现https通讯文章中的安装openssl章节。
3、交叉编译openssh
--with-zlib:zlib库所在的路径
--with-ssl-dir:openssl库所在的路径
注意:openssl编译完不需要安装
tar -vxzf openssh-8.5p1.tar.gzcd openssh-8.5p1./configure --host=arm-linux-gnueabihf --with-libs --with-zlib=/home/lyy/tools/zlib --with-ssl-dir=/home/lyy/work/openssl/arm-openssl CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-armake
四、Arm linux开发板SSH环境搭建
1、创建相关目录
确保开发板上有以下目录,如果没有则需创建。
/usr/local/bin/usr/local/etc/usr/libexec/var/run/var/empty
2、拷贝文件到开发板上
从PC机上/home/lyy/tools/openssh-8.5p1/ 目录下拷贝 scp sftp ssh sshd ssh-add ssh-agent ssh-keygen ssh-keyscan到开发板/usr/local/bin下;
从PC机上/home/lyy/tools/openssh-8.5p1/ 目录下拷贝 moduli ssh_config sshd_config到开发板/usr/local/etc下;
从PC机上/home/lyy/tools/openssh-8.5p1/ 目录下拷贝 sftp-server ssh-keysign 到开发板/usr/local/libexec下;
3、生产Key文件并拷贝到开发板上
从PC机上/home/lyy/tools/openssh-8.5p1/ 目录下运行
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文件拷贝到开发板,并将ssh_host_ed25519_key权限修改为600。
chmod 600 /usr/local/etc/ssh_host_ed25519_key
4、修改配置
打开/usr/local/etc/sshd_config 文件,找到“#PermitRootLogin”所在行,将其改为“PermitRootLogin yes”。
打开/etc/passwd文件,在最后一行添加
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
五、SSH测试
如果开发板的root账号还没有密码,使用passwd命令根据提示修改密码
passwd root
在开发板运行,如果提示缺少动态链接库,则在PC主机上软件包和交叉编译工具链lib库搜索并拷贝到开发板上。
/usr/local/bin/sshd
如果没有问题的话,在开发板上用ps命令就能看到sshd进程。
笔者使用MobaXterm连接测试,MobaXterm提供了很多的终端软件功能,大家有兴趣可以去了解一下。
输入密码,按下回车即可
可以考到,我们已经通过SSH连接到开发板了。