arm移植ssh,实现远程root登录和sftp登录

主机:ubuntu16.04 64bit
目标板:mini2440
交叉编译工具:4.4.3

1. 下载需要的源码:

mkdir -p ~/arm/fs ;mkdir -p ~/arm/source
下载zlib-1.2.3:		  wget -c http://www.zlib.net/fossils/zlib-1.2.3.tar.gz
下载openssl-0.9.8d:    wget -c http://www.openssl.org/source/openssl-0.9.8d.tar.gz
下载openssh-4.6.tar.gz  

上面三个源码打包下载链接:https://download.csdn.net/download/u012577474/11846054

在主机上建立工程目录:
./arm
|-build – 安装目标目录
|-source – 源程序解压目录(将所有源码解压至此目录)
|-tar – 源程序压缩文件目录

(1) 编译zlib:

 tar zxvf zlib-1.2.3.tar.gz -C .
 cd zlib-1.2.3/
 ./configure --prefix=/root/arm/fs/zlib-1.2.3
修改Makefile:
   CC=gcc 改为: 
   CROSS=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-
   CC=$(CROSS)gcc 
   LDSHARED=gcc 改为: LDSHARED= $(CROSS)gcc
   CPP=gcc -E   改为:  CPP=$(CROSS)gcc -E
   AR=ar rc     改为: AR= $(CROSS)ar rc


  开始编译: 
  		make
  		make install

(2) 编译openssl:

tar zxvf openssl-0.9.8d.tar.gz
cd openssl-0.9.8d/
./configure --prefix=/root/arm/fs/openssl-0.9.8d os/compiler:/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc 


  开始编译: 
  	  make
  	  make install

编译和安装 openssl 时出错,POD document had syntax errors:

installing man1/smime.1
  smime.pod around line 272: Expected text after =item, not a number
  smime.pod around line 276: Expected text after =item, not a number
  smime.pod around line 280: Expected text after =item, not a number
  smime.pod around line 285: Expected text after =item, not a number
  smime.pod around line 289: Expected text after =item, not a number
  POD document had syntax errors at /usr/bin/pod2man line 71.
  make: *** [install_docs] 错误 255
  原因分析:这是由于 OpenSSL 1.0.1e 与 perl5.18 不兼容。
  解决方法:
  1、有人验证 安装 perl 5.16 可以兼容,安排低版本 perl 5.16 可以解决问题。
  2、删除 pod2man 文件:
  sudo rm /usr/bin/pod2man

出现报错,configure: error: *** Can’t find recent OpenSSL libcrypto (see config.log for details):
这是缺少openssl-dev依赖的原因
解决方法:

安装openssl
apt-get install libssl-dev

(3) 编译openssh:

      tar zxvf openssh-4.6p1.tar.gz
      cd openssh-4.6/
	 ./configure --host=arm-linux --with-libs --with-zlib=/root/arm/fs/zlib-1.2.3 --with-ssl-dir=/root/arm/fs/openssl-0.9.8d --disable-etc-default-login CC=arm-linux-gcc AR=arm-linux-ar
      make
      ##不要make install

configure配置openssh的时候出错:configure: error: *** zlib missing - please install first or check config.log ***
解决方法:
1、注意zlib的install路径 和 OpenSSL的install路径 是否正确
2、重新交叉编译zlib

(4)目标板准备
确保目标板上有以下目录,若没有,则新建:

$ mkdir -p /usr/local/bin
$ mkdir -p /usr/local/etc
$ mkdir -p /usr/local/libexec
$ mkdir -p /var/run
$ mkdir -p /var/empty/sshd
修改/var/empty目录权限
$ chmod 755 /var/empty    

(5)拷贝编译后的sshd相关程序文件到目标板
(1) 将 openssh-4.6p1目录下的 sshd 拷贝到 目标板的/usr/sbin目录下
(2) 再scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan 这7个文件到目标板/usr/local/bin目录下
(3) 将sftp-server ssh-keysign 拷贝到/usr/local/libexec目录下
(4) 然后将sshd_config,ssh_config 拷贝到/usr/local/etc目录下

(6)生成Key文件

主机上生成key文件(生成较慢耐心等待):

$ ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
$ ssh-keygen -t dsa -f ssh_host_dsa_key -N ""

会产生4个文件,要拷贝到目标板的/usr/local/etc目录下。

目标板上生成key文件(生成较慢耐心等待):

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

在这里插入图片描述
会产生2个文件,移动到/usr/local/etc目录下。

$ mv  ./ssh_host*  /usr/local/etc

(7)修改key文件权限
要把前面生成的6个秘钥文件的权限都修改成700,因为必须所有者是root。

否则运行sshd会出现下面错误信息:
在这里插入图片描述
(8) 添加用户:
将主机上 /etc/目下的 passwd, shadow, group 三个文件copy到目标板的 /etc目录下, 同时记得将passwd中的 /bin/bash 该为 /bin/sh
也可以删除掉不需要的一些用户。

首次使用目标开发板root用户没有设置密码,需执行passwd root指令设置密码

如果不存在sshd用户,则:

在目标板的passwd中添加sshd用户: 
sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin 
在shadow中也添加对应的项就行了: 
sshd:!:14069:0:99999:7:::

(9)启动sshd
启动sshd,需要使用绝对地址:

$ /usr/sbin/sshd

在这里插入图片描述

来看看sshd是否已启动:

$ netstat -ntlp

在这里插入图片描述
可以看到服务已经被启动了。

(10)从远程主机登录目标板
1、查看目标板IP:
在这里插入图片描述
可以知道目标板当前IP是172.20.11.41

2、主机通过ssh远程登录目标板

$ ssh -v root@172.20.11.41

在这里插入图片描述
如下图,可以看到登录成功了:
在主机上ls查看目标板根目录。
在这里插入图片描述
在目标板上,ls查看根目录,可以看到和上面完全一致。
在这里插入图片描述

到此openssh4.6移植完成。

(11)通过SFTP客户端登录目标板
客户端软件:filezilla
平台:win7

打开站点管理器添加目标板账号(root的账号密码):
在这里插入图片描述
点击连接。连接成功,可以看到目标板下面的文件如下:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Yfw&武

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

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

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

打赏作者

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

抵扣说明:

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

余额充值