SSH移植到BusyBox

1 篇文章 0 订阅
1 篇文章 0 订阅

手动编译SSH安装挺麻烦的,本文主要是我大量借鉴和实践总结出来的流程,一步一按照做不会有太大问题。

移植平台:IMX6UL(迅为开发板)
根文件系统:BusyBox-1.36.1
所有操作都建议不要在root账户下运行,并且make install的安装路径按照我的来,编译器随意。
中途编译可能会遇到缺少依赖库,每个人的情况都不一样,可以自己搜一下,解决后在按照流程继续走。

新建ssh目录,此后所有操作都在该路径下

mkdir ~/ssh
cd ~/ssh

1.zlib编译

zlib官网地址:https://www.zlib.net/fossils/
我使用的版本是:zlib-1.2.8.tar.gz
下载后将压缩包放到~/ssh,然后执行下面的命令

tar -xvf zlib-1.2.8.tar.gz
cd zlib-1.2.8/
./configure --static --prefix=~/ssh/install/zlib/

根据自己的编译器修改Makefile

vi Makefile

总共要修改四处:CC、LDSHARED、CPP、AR,其中CC最后面要加"-fPIC"

在这里插入图片描述

完成后编译安装

make
make install

没有错误的话zlib就编译完成了,可以看到多了一个目录~/ssh/install/zlib

2.openssl编译

openssl官网地址:http://distfiles.macports.org/openssl/
我使用的版本是:openssl-1.1.1c.tar.gz
下载后将压缩包放到~/ssh,然后执行下面的命令

tar -xvf openssl-1.1.1c.tar.gz
cd openssl-1.1.1c/
注意下面这条指令--prefix=/home/UserName/ssh/install/open-ssl/...其中的"UserName"要改成自己Ubuntu的账户名
./Configure linux-generic32 no-asm shared no-async --prefix=/home/UserName/ssh/install/open-ssl/ CROSS_COMPILE=arm-linux-gnueabihf- CC=gcc -fPIC

Makefile生成后编译安装

make
make install

没有错误的话zlib就编译完成了,可以看到多了一个目录~/ssh/install/open-ssl

3.openssh编译

openssh官网地址:https://ftp.riken.jp/pub/OpenBSD/OpenSSH/portable/
我使用的版本是:openssh-9.6p1.tar.gz
下载后将压缩包放到~/ssh,然后执行下面的命令

tar -vxf openssh-9.6p1.tar.gz
cd openssh-9.6p1/
注意下面这条指令有两个"UserName"改成自己Ubuntu的账户名即可
./configure --host=arm-linux-gnueabihf --with-libs --with-zlib=/home/UserName/ssh/install/zlib --with-ssl-dir=/home/UserName/ssh/install/open-ssl --disable-etc-default-login CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar

Makefile生成后编译,不用安装

make
touch pack.sh
vi pack.sh

这里参考这篇文章的Shell脚本:嵌入式Linux开发板移植SSH
打开pack.sh后,粘贴如下内容

#!/bin/bash
file_a="scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan" 
file_b="moduli ssh_config sshd_config" 
file_c="sftp-server ssh-keysign"
key="ssh_host_rsa_key ssh_host_dsa_key ssh_host_ecdsa_key ssh_host_ed25519_key" 
 
mkdir -p usr/local/bin usr/local/etc usr/libexec 
mkdir usr/sbin/
 
for i in $file_a
do
	if [ -f $i ];then
		cp $i usr/local/bin/
		echo "cp $i ok" 
	else
		echo "error:$i not exist "
        exit_script  
	fi
done
 
for i in $file_b
do
	if [ -f $i ];then
		cp $i usr/local/etc/
		echo "cp $i ok"
	else
		echo "error:$i not exist"
		exit_script
 	fi
done
 
for i in $file_c
do
    if [ -f $i ];then
        cp $i usr/libexec
        echo "cp $i ok"
    else
        echo "error:$i not exist"
        exit_script
    fi
done
 
if [ -f "sshd" ];then
	cp sshd usr/sbin/
	echo "cp sshd ok"
else
	echo "error:sshd not exist"
	exit_script
fi
 
# ssh_host_rsa_key
if [ -f "ssh_host_rsa_key" ];then
	echo "ssh_host_rsa_key exist"
	cp ssh_host_rsa_key usr/local/etc/
	echo "cp ssh_host_rsa_key ok" 
else
	ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
	cp ssh_host_rsa_key usr/local/etc/
	echo "cp ssh_host_rsa_key ok" 
fi
 
# ssh_host_dsa_key
if [ -f "ssh_host_dsa_key" ];then
	echo "ssh_host_dsa_key exist"
	cp ssh_host_dsa_key usr/local/etc/
	echo "cp ssh_host_dsa_key ok" 
else
	ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
	cp ssh_host_dsa_key usr/local/etc/
	echo "cp ssh_host_dsa_key ok" 
fi
 
# ssh_host_ecdsa_key
if [ -f "ssh_host_ecdsa_key" ];then
	echo "ssh_host_ecdsa_key exist"
	cp ssh_host_ecdsa_key usr/local/etc/
	echo "cp ssh_host_ecdsa_key ok" 
else
	ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""
	cp ssh_host_ecdsa_key usr/local/etc/
	echo "cp ssh_host_ecdsa_key ok" 
fi
 
# ssh_host_ed25519_key
if [ -f "ssh_host_ed25519_key" ];then
	echo "ssh_host_ed25519_key exist"
	chmod 600 ssh_host_ed25519_key
	cp ssh_host_ed25519_key usr/local/etc/
	echo "cp ssh_host_ed25519_key ok" 
else
	ssh-keygen -t dsa -f ssh_host_ed25519_key -N ""
	chmod 600 ssh_host_ed25519_key
	cp ssh_host_ed25519_key usr/local/etc/
	echo "cp ssh_host_ed25519_key ok" 
fi
 
tar -cjvf usr.tar.bz2 usr/*
echo "pack usr to usr.tar.bz2 ok"

关闭保存后修改运行权限,并运行,成功后移动到install,待会一起处理

chmod 777 pack.sh
./pack.sh
mv usr.tar.bz2 ~/ssh/install/

openssl和zlib打包

cd ~/ssh/install/open-ssl/
tar -cvf usr_openssl.tar.bz2 *
mv usr_openssl.tar.bz2 ../
cd ~/ssh/install/zlib/
tar -cvf usr_zlib.tar.bz2 *
mv usr_zlib.tar.bz2 ../

到这步交叉编译已经完成,现在把这三个压缩包放到开发板

开发板安装

  1. 首先确定电脑能跟开发板ping通
  2. 把刚刚那三个压缩包放到根节点下"/"
  3. 分别解压,如果嫌占用空间大的话,也可以在打包之前删掉一些,保留动态库即可。
tar -vxf usr_zlib.tar.bz2
tar -vxf usr_openssl.tar.bz2
tar -vxf usr.tar.bz2
  1. 打开/etc/init.d/rcS,在最后一行添加启动脚本
vi /etc/init.d/rcS

/usr/sbin/sshd &
  1. 重新启动开发板查看后台运行
ps

在这里插入图片描述
出现这条表示sshd成功运行

  1. 修改/usr/local/etc/sshd_config
vi /usr/local/etc/sshd_config

"#PermitRootLogin prohibit-password"
改成
"PermitRootLogin yes"

在这里插入图片描述

  1. 修改/etc/passwd,在最后一行添加
vi /etc/passwd

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  1. 如果开发板的账户没有密码,就要添加密码
passwd root

SSH连接终端

  1. 打开MobaXterm,新建连接

在这里插入图片描述

  1. 选择SSH

在这里插入图片描述

  1. 输入开发板的IP地址
    在这里插入图片描述
  2. 输入账户名和密码
    在这里插入图片描述
  3. 登录成功移植完毕
    在这里插入图片描述
  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值