ARM-Linux开发板移植SSH服务(GEC6818)

一、这篇教程在讲什么

虽然在Linux驱动开发的时候,在开发板和主机之间交互、以及文件传输十分的繁琐。主要有TFTPNFS 方式。

但是我个人比较习惯实用ssh。

由于 GEC6818 开发板没有 ssh

所以主要讲如何在ARM-Linux开发板上部署SSH服务器

二、主要流程

1. 下载源码

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-zlibzlib 的编译结果路径
  • --with-ssl-diropenssl 的编译结果路径
  • --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 拷贝到开发板上

三、移植到开发板

  1. 部署
# 例如已经拷贝在开发板路径下
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登录
  1. 如果开发板用户有没密码需要修改密码 passwd root
  2. 在主机上分别测试 ssh 连接和 sftp 连接。
  3. 加入开机自启动(可选)

在目录/etc/init.d中创建以 S 开头的脚本(如S0ssh),内容如下

#! /bin/sh
/usr/sshd/sshd

保存,重启开发版测试。

参考链接:https://zhuanlan.zhihu.com/p/387939051

posted @ 2025-07-09 16:59  星空丶star  阅读(244)  评论(0)    收藏  举报