OpenSSH移植到Linux开发板

OpenSSH移植到Linux开发板


前言

在Linux开发中,有时候需要远程登录到开发板上对系统进行一些操作,这个时候就需要用到SSH服务。SSH(Secure Shell 安全外壳协议)是较可靠,专为远程登录会话和其他网络服务提供安全性的协议,OpenSSH是SSH协议的一个免费开源版本。

这里一共需要移植三个软件包:zlib,openssl和openssh,可依次到官网下载对应的源码:
zlib官网:http://www.zlib.net/
openssl 官网:https://www.openssl.org/source/
opnssh 官网: http://www.openssh.com


提示:以下是本篇文章正文内容,下面案例可供参考

一、移植zlib库

在官网我下载的是1.2.11版本的,将下载的zlib-1.2.11.tar.gz 拷贝到本地Ubuntu中进行解压

tar -xvzf zlib-1.2.11.tar.gz

解压完成后,创建一个zlib文件夹,然后进行解压后的zlib-1.2.11 源码文件中,配置并编译

#1. 配置命令
CC=arm-linux-gnueabihf-gcc
LD=arm-linux-gnueabihf-ld
AD=arm-linux-gnueabihf-as
./configure --prefix=/home/hx/linux/tools/zlib 
#注意 以上命令以空格为界,这里为了美观 用了换行
#CC LD AD是根据自己所使用的交叉编译器配置
#--prefix 是之前创建zlib目录所在的路径

#2. 配置完成 开始编译
make
#3. 开始安装
make install

编译完成后,将zlib目录下的lib中库文件移植到开发板的/lib目录下
在这里插入图片描述

二、 移植openssl库

在官网下载的是1.1版本的,将下载的openssl-1.1.ld.tar.gz拷贝到本地Ubuntu中,并解压

tar -xvzf openssl-1.1.ld.tar.gz

解压完成后,创建一个openssl文件夹,然后进行解压后的openssl-1.1.ld 源码文件中,配置并编译

#1. 配置命令
./Configure linux-armv4 shared no-asm 
--prefix=/home/hx/linux/tools/openssl 
CROSS_COMPILE=arm-linux-gnueabihf-
#注意 以上命令以空格为界,这里为了美观 用了换行
#linux-armv4 是32位ARM凭条 没有armv7的选项
#--prefix 是之前创建openssl目录所在的路径

#2. 配置完成 开始编译
make
#3. 开始安装
make install

编译完成后会在openssl/lib下生成libcrypto和libssl库,将这些库拷贝到开发板的/usr/lib目录下
在这里插入图片描述

三、 移植openssh库

在官网下载到openssh-8.2p1.tar.gz,拷贝到本地Ubuntu中并解压

tar -xvzf openssh-8.2p1.tar.gz

解压后进入到openssh-8.2p1目录,开始配置和编译

#1. 配置
./configure --host=arm-linux-gnueabihf --with-libs 
--with-zlib=/home/hx/linux/tools/zlib --with-ssl-dir=/home/hx/linux/tools/openssl 
--disable-etcdefault-login CC=arm-linux-gnueabihf-gcc
AR=arm-linux-gnueabihf-ar //配置
#注意 以上命令以空格为界,这里为了美观 用了换行
#--with-zlib参数用于指定 zlib 库所在的目录
#--with-ssl-dir参数用于指定 openssl 库所在的目录
#2. 编译 不用make install
make

将编译完成后的文件移植到linux开发板中

1. 在开发板中创建目录

在开发板创建以下目录

/usr/local/bin
/usr/local/sbin
/usr/local/libexec
/usr/local/etc
/var/run
/var/empty

mkdir /usr/local/bin -p
mkdir /usr/local/sbin -p
mkdir /usr/local/libexec/ -p
mkdir /usr/local/etc -p
mkdir /var/run -p
mkdir /var/empty/ -p

2. 将文件拷贝到对应目录下

1. /usr/local/bin 拷贝以下文件
scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan

2. /usr/local/sbin 拷贝sshd
3. /usr/local/etc 拷贝moduli ssh_config sshd_config
4. /usr/local/libexec 拷贝sftp-server ssh-keysign

3. 创建对应软连接

cd /bin/
ln -s /usr/local/bin/scp
ln -s /usr/local/bin/sftp
ln -s /usr/local/bin/ssh
ln -s /usr/local/bin/ssh-add
ln -s /usr/local/bin/ssh-agent
ln -s /usr/local/bin/ssh-keygen
ln -s /usr/local/bin/ssh-keyscan

cd /sbin/
ln -s /usr/local/sbin/sshd

软连接创建完成以后就可以直接调用上面 ssh 相关命令了

将/usr/local/etc/sshd_config文件的 #PermitRootLogin改为
PermitRootLogin yes

4. 开发板上生成密钥文件

进入到开发板/usr/local/etc下

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 ed25519 -f ssh_host_ed25519_key -N ""

完成以后就会在/usr/local/etc 目录下产生 8 个以“ssh_host_”开头的秘钥文件
在这里插入图片描述

5. 开启SSH

直接输入命令

/sbin/sshd //启动 sshd 服务

#也可以在/etc/init.d/rcS 文件中加入如下命令,实现 ssh 服务开机自启动
/sbin/sshd &
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值