ARM-Linux开发板移植SSH服务(GEC6818)
一、这篇教程在讲什么
虽然在Linux驱动开发的时候,在开发板和主机之间交互、以及文件传输十分的繁琐。主要有
TFTP、NFS方式。但是我个人比较习惯实用ssh。
由于 GEC6818 开发板没有 ssh,
所以主要讲如何在ARM-Linux开发板上部署SSH服务器。
二、主要流程
1. 下载源码
-
zlib- 下载网址:zlib.net/fossils/
- 本次使用版本:
zlib-1.2.11.tar.gz
-
openssl- 下载网址:Downloads | OpenSSL Library
- 本次使用版本:
openssl-1.1.1p.tar.gz
-
ssh- 下载网址:Index of /pub/OpenBSD/OpenSSH/portable/
- 本次使用版本:
openssh-8.6p1.tar.gz
2. 编译源码
(0)在Linux下创建文件夹openssh,并将上述压缩包拷贝到该文件夹中,并分别解压三个压缩包。
mkdir openssh
cd /home/star/openssh
# 拷贝压缩包并解压
# 解压命令
tar -zxvf xxx.tar.gz
# 创建lib文件夹,用于保存编译的结果
mkdir lib
cd lib
mkdir zlib
mkdir openssl
(1)编译 zlib 源码
cd /home/star/openssh/zlib-1.2.11
./configure --prefix=/home/star/openssh/lib/zlib # 执行后会生成Makefile
vim Makefile # 修改Makefile 更改编译器
## 源代码
# 19: CC=gcc
# ...
# 30: LDSHARED=gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
# 31: CPP=gcc -E
## 修改为
# 19: CC=arm-linux-gcc
# ...
# 30: LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
# 31: CPP=arm-linux-gcc -E
make
make install
(2)编译 openssl 源码
cd /home/star/openssh/openssl-1.1.1p
./Configure linux-generic32 no-asm shared no-async --prefix=/home/star/openssh/lib/openssl
vim Makefile
# CROSS_COMPILE=arm-linux- #修改92行
make
make install
(3)编译 openssh 源码
cd /home/star/openssh/openssh-8.6p1
./configure --host=arm-linux --with-libs --with-zlib=/home/star/openssh/lib/zlib --with-ssl-dir=/home/star/openssh/lib/openssl --disable-etc-default-login --prefix=/usr --sysconfdir=/etc/ssh
make
#千万不要 make install 不然会包含一些配置信息
--host: 交叉编译器的前缀--with-zlib:zlib的编译结果路径--with-ssl-dir:openssl的编译结果路径--prefix: 修改默认路径(如果不修改则为/usr/local)--sysconfdir: ssh配置文件路径
(4)整理编译完成的文件,并打包
cd /home/star/openssh
mkdir arm-ssh
cd arm-ssh
mkdir sbin bin etc libexec
# 分类生成的文件
cp sshd ../arm-ssh/sbin
cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan ../arm-ssh/bin
cp sshd_config ssh_config ../arm-ssh/etc
cp sftp-server ssh-keysign ../arm-ssh/libexec
# 生成一些秘钥,前提是主机上已经有ssh服务
cd ../arm-ssh/etc
ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""
ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
cd ../..
tar -zcvf arm-ssh.tar.gz arm-ssh/ # 打包
# 将 arm-ssh 拷贝到开发板上
三、移植到开发板
- 部署
# 例如已经拷贝在开发板路径下
tar -zxvf arm-ssh.tar.gz #解压指令
# 检查开发板是否有以下目录,若没有则创建
## /usr/sbin
## /usr/bin
## /etc/ssh
## /usr/libexec
# 部署到对应文件夹
cd arm-ssh
cp sbin/* /usr/sbin
cp bin/* /usr/bin
cp etc/* /etc/ssh
cp libexec/* /usr/libexec
# 创建软连接
cd /bin
ln -s /usr/bin/scp
ln -s /usr/bin/sftp
ln -s /usr/bin/ssh
ln -s /usr/bin/ssh-add
ln -s /usr/bin/ssh-agent
ln -s /usr/bin/ssh-keygen
ln -s /usr/bin/ssh-keyscan
# 修改配置文件
vim /etc/ssh/sshd_config
# 将PermitRootLogin yes前的注释“#”号去掉 就可以以root登录
- 如果开发板用户有没密码需要修改密码
passwd root - 在主机上分别测试
ssh连接和sftp连接。 - 加入开机自启动(可选)
在目录/etc/init.d中创建以 S 开头的脚本(如S0ssh),内容如下
#! /bin/sh
/usr/sshd/sshd
保存,重启开发版测试。

浙公网安备 33010602011771号