本文的ssh客户端部署在arm开发板上,使用的交叉编译工具为arm-linux-gnueabi-gcc,本文资源使用的前提是要部署的设备为arm设备,若目标设备与交叉编译工具不一致,资源很可能无法使用,但部署步骤类似。
1.下载本文的资源文件(或自行交叉编译openssh)
下载资源文件,里面包含交叉编译openssh后的生成的bin文件以及配置文件
rootfs/
├── etc
│ ├── ssh_config
│ └── sshd_config
└── usr
└── bin
├── scp
├── sftp
├── sftp-server
├── ssh
├── ssh-add
├── ssh-agent
├── ssh-keygen
├── ssh-keyscan
├── ssh-keysign
├── ssh-pkcs11-helper
├── ssh-sk-helper
└── sshd
2.拷贝资源文件到开发板中,并解压
选择你自己的方式把ssh.tar拷贝到开发板中,u盘也好,nfs也,自行选择你会用的方式
cp ssh.tar /tmp
拷贝ssh.tar到/tmp目录中
cd /tmp
进入/tmp目录中
tar -xf ssh.tar
解压ssh.tar
3. 拷贝文件夹中的可执行文件以及配置文件到开发板中
拷贝sshd scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan 到开发板的对应目录中
mkdir /usr/local/ssh
cd /tmp/rootfs/usr/bin
cp * /usr/local/ssh
mkdir /usr/libexec/
cp /usr/local/ssh/sftp-server /usr/libexec
sudo mkdir /etc/ssh
cp /usr/local/ssh/ssh-keygen /etc/ssh
拷贝配置文件到 sshd_config 到/etc/ssh
cp /tmp/rootfs/etc/* /etc/ssh
4.生成key文件
/usr/local/ssh/ssh-keygen -A
该命令会生成所有用于ssh连接的密钥对并覆盖现有的,使用前请注意/etc 或/etc/ssh下有无图片中文件
有的话请注意备份
或指定生成的密钥对
cd /etc/ssh
/etc/ssh/ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
/etc/ssh/ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
/etc/ssh/ssh-keygen -t ed25519 -f ssh_host_ed25519_key -N ''
/etc/ssh/ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ''
5. 修改sshd_config配置文件
添加“PermitRootLogin yes”使能管理员登录
root若未设置密码,使用passwd设置密码
把“Subsystem sftp /usr/libexec/sftp-server”这句话的注释去掉,使能sftp
6.创建ssh工作目录
mkdir /var/empty
chmod 755 /var/empty
在/etc/passwd 中添加下面这一行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
7.启动!!!
/usr/local/ssh/sshd
使用ps查看sshd是否在运行
在运行的话可以使用ssh工具连接开发板
查看开发板ip地址,确认主机能ping通开发板
我使用的是termius这个工具进行ssh登录以及sftp进行文件传输
8.可设置开机自启
编辑开机自动运行的脚本
vim /etc/init.d/rcS
在脚本最后一行添加如下文本设置开机自启(要确保你的开发板开机后能自动连上网络)
/usr/local/ssh/sshd &