AT91sam9260上移植ssh服务

一、移植SSH的原因

日常调试开发板的Linux系统都是通过ARM的debug串口UART来调试的,当我们的产品封装之后,一般很少留出debug串口为嵌入式工程师提供调试接口。但是网口作为产品与网络交互的唯一接口,对于我们来说是可用的。在ARM调试时候,我们通过的是Linux的shell,通过的是串口与shell进行交互。现在,我遇到一个问题,如何通过网口与ARM的shell进行交互呢?下面我又两种想法:第一种就是通过移植SSH服务

通过产品板上安装ssh服务,然后通过网口进行交互。这种想法来自于我常用的一款免费软件。xshell这款软件支持了串口、ssh等多种交互方式。

在我用ssh服务进行连接时,需要Ubuntu系统安装SSH服务。但是Ubuntu系统有自己的源和软件库。可以通过apt-get命令进行非常方便的安装,产品板上想要安装SSH服务就需要对源码进行交叉编译后进行移植。本篇文章的移植方法来自于这篇博客,然后结合自己开发板的实际情况来进行移植。

http://blog.csdn.net/xy010902100449/article/details/50343733

二、移植SSH的准备

(1)在官网下载SSH移植源码:

https://www.openssl.org/source/old/0.9.x/ 

https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

http://www.zlib.net/

分别下载zlib、openssl、openssh源码


(2)Ubuntu系统中进行交叉编译

在Ubuntu系统中创建工作目录,并把压缩文件拷贝进去,用tar zxvf命令解压

<1>  zlib的交叉编译:

先读README文件

编译所有文件或者运行test程序都要去遵循Makefile.in文件,所以我们再去看这个文件:

此文件主要告诉我们如何使用Makefile来进项工程编译:在进行交叉编译的第一步就是指定你的交叉编译链:

而在Makefile文件中只有两行代码:

在未配置之前,会打印出让你配置的提示信息,清除操作。

所以我们用 ./configure –prefix=/自己的想要存放编译结果的路径。这里我的路径为、home/fluency/workspace/ssh/install/

修改Makefile文件,把红线位置的修改为交叉编译工具链

然后make

make install

生成的目标文件存在install文件中

<2> ssl源码编译

当然首先还是看README文件

./configure –prefix=/home/fluency/workspace/ssh/install_ssl/ 配置目标文件生成目录

./configure os/compiler:arm-linux-gcc 配置交叉编译链。

同样的套路 make (但是在编译的时候出现了一个小小的插曲,在make编译时没编过去,出现一个无法识别格式的报错!!! 用make clean命令清除一下,重新编译。就完成了。原因不明。)

make install (出现一个权限错误,加sudo就可以了。)

<3> ssh源码编译

进入ssh文件目录

./configure -host=arm-linux -with-libs -with-zlib=/home/fluency/workspace/ssh/install

-with-ssl-dir=/home/fluency/workspace/ssh/install_ssl/ -disable-etc-default-login

CC=/home/fluency/workspace/arm-gcc/arm-linux-gcc/usr/bin/arm-linux-gcc AR=/home/fluency/workspace/arm-gcc/arm-linux-gcc/usr/bin/arm-linux-ar


(3) 移植ssh

(1)移植生成的可执行文件、配置文件和库文件

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

cp moduli ssh_config sshd_config /usr/local/etc/

cp sftp-server ssh-keysign /usr/lib/

cp sshd /usr/sbin/

(2)在Ubuntu系统中生成用到的KEY

ssh-keygen -t rsa -f ssh_host_rsa_key -N ""

ssh-keygen -t dsa -f ssh_host_dsa_key -N ""

ssh-keygen -t dsa -f ssh_host_ed25519_key -N ""

ssh-keygen -t rsa1 -f ssh_host_key -N ""

生成的文件拷贝到开发板

cp ssh_host_* /usr/local/etc/

三、运行sshd

(1)库文件缺失

在运行/uar/sbin/sshd时、缺少了两个库文件

在/lib根文件目录的lib目录中存在libcrypto.so.0.9.7f、但是它找不到libcrypto.so.5这个库。我们需要给这个库创建一个链接

ln -s libcrypto.so.0.9.7f libcrypto.so.5

第二个zlib.so.1这个库在zlib源码中,把它拷贝到lib中就可以了

(2)用户缺失

在添加库文件后又出现用户不存在的情况、解决办法,添加用户到passwd文件中

sshd:x:74:74::/var/empty/sshd:/sbin/nologin

(3)登录失败

需要更改一次密码、把密码改成123456

再次登录就可以了

这样就实现了通过 ssh 服务来实现远程登录开发板了。

四、制作到文件系统

把第三步操作的步骤加入到buzybox制作好的文件系统中。把passwd文件替换掉,把库文件加入。在rcS文件中添加启动sshd命令/uar/sbin/sshd

然后通过jffs2工具制作好文件系统。

然后我们烧录的文件系统就可以自己支持ssh服务了。不需要再每次都移植了。

有两个远程登录的服务器都做好了

另一个Telnet远程登录、参考我的博客:http://blog.csdn.net/qq_37474534/article/details/78626270

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值