将SSH服务器移植到龙芯1B核心板

  为了方便对龙芯1B的开发板,进行远程连接及操作,需要寻求一种稳妥可靠的方式。而SSH是通过握手机制进行的密文传输,相比较telnet等,优势明显,因此选用SSH的连接方式。
  我的所用的主机系统为,ubuntu18.04,如何将mipsel编译器注入环境变量,在此不赘述,前面有文章已经探讨过,在本文中,默认已经配置好mipsel-linux的环境变量。
  SSH需要依赖zlib和ssl,因此在安装SSH之前,需要先编译安装zlib和ssl。
  zlib:是提供数据压缩用的函数库,最初是为libpng函数库缩写的,后来普遍为许多软件所用。
  SSL:Secure Socket Layer,安全套接层协议的缩写,可以在Internet上提供秘密性传输。
  OpenSSL:包含一个命令行工具来完成openssl库中的所有功能。
  SSH,它不仅是一个库,他还是一个多用途的跨平台的密码工具。包含三部分,SSL协议库,应用程序及密码算法库。
  下载地址,传送门:
  zlib:www.zlib.net
  openssl:https://www.openssl.org/source/
  openssh:https://openssh.en.softonic.com/download
  以下操作,一到第四步操作,都是在主机上完成,即ubuntu18.04系统,第五步的部分以及后续是在龙芯1B核心板上的操作。

一、编译

1.1 编译zlib

#tar -zxvf zlib-1.2.11.tar.gz
#cd  zlib-1.2.11
#./configure -prefix=/mnt/more/loongson/sshwork/zlib-1.2.11  //编译成功后的库文件地址
#vim Makefile

在Makefile文件中修改以下几处地方。
CC=gcc mipsel-linux-gcc
LDSHARED=gcc mipsel-linux-gcc
CPP=gcc -E mipsel-linux-gcc -E
AR=ar mipsel-linux-ar
按esc,退出编辑模式,shift+:+w+q,保存上述修改并退出vim编辑器。

#make
#make install

至此,zlib-1.2.11编译完成。

1.2 编译openssl

#tar -zxvf openssl-1.0.2r.tar.gz
#cd openssl-1.0.2r
#./Configure --prefix=/mnt/more/loongson/sshwork/openssl-1.0.2r os/compiler:mipsel-linux-gcc -fPIC
//注意,这里的Configure的首字母是大写。最后一定要加-fPIC,不然在后面编译openssh时会报错,找不到ssl的库文件。
#make
#make install

1.3 编译openssh

#tar -zxvf openssh-8.0p1.tar.gz
#cd openssh-8.0p1
#./configure --host=mipsel-linux   //使用mipsel编译器
--with-libs  //使用外部库
--with-zlib=/mnt/more/loongson/sshwork/zlib  //指定zlib库文件的位置
--with-ssl-dir=/mnt/more/loongson/sshwork/openssl-1.0.2r  //指定openssl库文件的位置
-disable-etc-default-login  //不使用默认环境编译
CC=mipsel-linux-gcc  //使用mipsel-linux-gcc编译器
AR=mipsel-linux-ar  //使用mipsel-linux-ar进行归档
#make  //注意,这里没有make install命令!

二、整理openssl需要交给龙芯1B的文件

在open-ssh-8.0p1文件夹的根目录下进行操作,找到以下文件夹,并复制到指定文件夹位置下。
注意,以下需要新创建的文件夹,在后续将连带里面的内容,保持相对位置不变的前提下,移植到龙芯1B开发板中。现在为了方便拷贝,在open-ssh-8.0p1根目录下临时创建这几个文件夹。

#mkdir -p usr/sbin
#mkdir -p usr/local/bin
#mkdir -p usr/local/libexec
#mkdir -p usr/local/etc

1.1 复制sshd到 /usr/sbin 目录下

#cp sshd ./usr/sbin

1.2 复制scp、sftp、ssh、ssh-add、ssh-agent、ssh-keygen、ssh-keyscan到 /usr/local/bin 目录下

cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan ./usr/local/bin

1.3 复制ssh_config、sshd_config到 /usr/local/etc 目录下

cp sshd_config ssh_config ./usr/local/etc

1.4 复制sftp-server、ssh-keysign到 /usr/local/libexec 目录下

cp sftp-server ssh-keysign ./usr/local/libexec

三、生成密钥文件

#ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""
#ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
#ssh-keygen -t rsa -f ssh_host_rsa_key -N ""

将生成的ssh_host_ecdsa_key、ssh_host_dsa_key、ssh_host_rsa_key,复制到 /usr/local/etc 目录下

#cp ssh_host_dsa_key ssh_host_ecdsa_key ssh_host_rsa_key ./usr/local/etc/  //注意这里使用的目录都是我本人的目录,请根据你的实际目录填写

四、将usr文件夹的内容移植到龙芯1B开发板中

从主机移植到开发板的方法有很多,不再赘述,我使用的nfs的方法传输,这里需要强调的一点是,ssh_host_*_key这三个密钥文件,在主机上如果未设置足够权限,可能会出现无法复制到开发板的情况,这时候需要修改这三个文件的权限
上述操作,都是主机上的操作,以下是龙芯1B核心板上的操作
在龙芯1B核心板中,在根目录下,有usr文件夹,因此,在复制主机我们自行创建的usr文件夹时,注意不要覆盖了,建议将主机上我们自行创建的usr文件夹的内容分开进行复制。

#cp -r /mnt/nfs/usr/local /usr/       //前面是我的nfs客户端的挂载地址
#cp -r /mnt/nfs/usr/sbin/sshd /usr/sbin    //sbin文件夹在核心板中本身就存在

五、龙芯1B核心板上的主要操作

1.1 首先对复制过来的三个ssh_host_*_key密钥文件的权限进行修改,修改未600权限,权限太高也不行,后面启动时会告警说权限过宽。

#chmod 600 ssh_host_*_key

1.2 创建sshd工作文件目录

#mkdir -p var/run
#mkdir -p var/empty/sshd
#chmod 755 var/empty

1.3 修改passwd文件

#vi /etc/passwd

在文档底部添加以下内容

sshd:x:74:74:Privilege-separated
SSH:/var/empty/sshd:/sbin/nologin

1.4 允许以root账号通过ssh连接本核心板
这一步不设置,别的设备则不能通过ssh以root账号连接,会显示没有权限。

#vi /usr/local/etc/sshd_config

修改以下内容

PermitRootLogin yes //将前面的“#”符号去掉,并修改后面的内容未yes。

1.5 更改root账号的密码
这一步是修改密码,如果已确认密码,则可以跳过此步。

#passwd root
new password:  XXXXXXX   //自行设置密码,密码设置不能太过简单,不然会设置失败。
Retype password:XXXXXXX    //重复一次密码

设置成功,会提示成功修改密码。

六、运行sshd文件

#/usr/sbin/sshd

这是sshd文件启动命令,如果没有报错,则应该是启动成功了,可以使用ps命令来看运行的进程中是否有 /usr/sbin/sshd 。如有,则运行成功。

#ps

至此,ssh已成功移植到龙芯1B核心板。在启动sshd的过程中,如果出现什么报错,比如缺少什么库文件,则只需要根据他的提示,将相应的库文件移植到核心板中即可。有可能需要一些zlib或者ssl的依赖库,不过在我的操作中,没有出现缺乏依赖库的相关提示。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼月半

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值