设为首页收藏本站
查看: 20299|回复: 0

成功移植OpenSSH到ARM Linux开发板

[复制链接]

231

主题

64

回帖

2145

积分

管理员

积分
2145
玉米糊 发表于 2013-8-27 11:55:47 | 显示全部楼层 |阅读模式
概述
如果是用到一些没有SSH的开发板,对于部分的应用开发来说,会受到影响,比如使用ARM DS-5进行RSE远程管理操作时,就会出现错误。下面就具体如何进行OPENSSH移植进行详细介绍。

步骤
1.下载源码包如下,下载 openssh、openssl 和 zlib 三个包。
opensshopenssl
zlib

2.部署工作目录创建用户主目录下创建工作目录:[mw_shl_code=bash,true]
$ mkdir /home/gary/work
$ cd /home/gary/work
[/mw_shl_code]
在 work 目录下面创建安装目录:
[mw_shl_code=bash,true]
$ mkdir install$ mkdir install/zlib
$ mkdir install/openssl
[/mw_shl_code]
3.解压并编译
把以上下载的3个安装包复制到 work 目录下,并解压,解压命令:
[mw_shl_code=bash,true]
$ tar zxvf zlib-1.2.8.tar.gz
$ tar zxvf openssl-1.0.1h.tar.gz$ tar zxvf openssh-6.6p1.tar.gz
[/mw_shl_code]
a)交叉编译 zlib
[mw_shl_code=bash,true]$ cd zlib-1.2.8
$ ./configure --prefix=/home/gary/work/install/zlib
$ vi Makefile[/mw_shl_code]
将 Makefile 中的交叉编译工具改成当前开发板使用的交叉编译工具:
[mw_shl_code=bash,true]
CC=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-gcc
AR=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-ar
CPP=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-gcc
LDSHARED=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-gcc
$ make
$ make install[/mw_shl_code]
b)交叉编译openssl
[mw_shl_code=bash,true]$ cd ../openssl-1.0.1h
$ ./Configure --prefix=/home/gary/work/install/openssl  os/compiler:/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-gcc
$ make
$ make install[/mw_shl_code]
c)交叉编译openssh
[mw_shl_code=bash,true]$ cd  ../openssh-6.6p1
$ ./configure --host=arm-none-linux-gnueabi --with-libs --with-zlib=/home/gary/work/install/zlib --with-ssl-dir=/home/gary/work/install/openssl --disable-etc-default-login CC=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-gcc AR=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-ar
$ make
[/mw_shl_code]
注意:openssh不需要make install

4.操作目标板
a)确保目标板上有以下目录,若没有,则新建:
[mw_shl_code=bash,true]/usr/local/bin
/usr/local/etc
/usr/libexec
/var/run
/var/empty
[/mw_shl_code]

b)从PC机上将以下文件拷贝到目标板Linux系统中
PC机 /home/gary/work/openssh-6.6p1/ 目录下的
  • scp  sftp  ssh sshd  ssh-add  ssh-agent  ssh-keygen  ssh-keyscan 共8个文件拷贝到目标板 /usr/local/bin
  • moduli ssh_config sshd_config 共3个文件拷贝到目标板 /usr/local/etc
  • sftp-server  ssh-keysign 共2个文件拷贝到目标板 /usr/libexec

c)生成Key文件
在PC机 /work/ssh/source/openssh-6.6p1/ 目录下运行:
[mw_shl_code=bash,true]
$ 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 dsa -f ssh_host_ed25519_key -N ""
[/mw_shl_code]
将生成的 ssh_host_*_key 这4个文件copy到目标板的 /usr/local/etc/ 目录下。其中 ssh_host_ed25519_key 是SSH第二版协议用到的key,放到开发板之后,要修改权限为 600,否则会提示以下错误:
[mw_shl_code=bash,true]Permissions 0644 for '/usr/local/etc/ssh_host_ed25519_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /usr/local/etc/ssh_host_ed25519_key
Could not load host key: /usr/local/etc/ssh_host_ed25519_key[/mw_shl_code]
修改权限的命令为:
[mw_shl_code=bash,true]# chmod 600 /usr/local/etc/ssh_host_ed25519_key
[/mw_shl_code]
d)修改目标板passwd文件。
在 /etc/passwd 文件最后添加下面这一行:
[mw_shl_code=bash,true]sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin[/mw_shl_code]

5.测试
如果开发板的 root 用户还没有密码,键入以下命令然输入两次密码来修改,否其他设备无法连:
[mw_shl_code=bash,true]# passwd root[/mw_shl_code]
在目标板上运行:
[mw_shl_code=bash,true]# /usr/local/bin/sshd[/mw_shl_code]
可以用 ps 命令查看sshd是否在工作
如果运行的过程中有提示缺少动态连接库,可以在主机上搜索相应文件,拷贝到目标板/lib/目录下面,注意创建软连接!
OK!不出意外的话可以成功,

主机上:
[mw_shl_code=bash,true]$ ssh root@192.168.1.250(开发板的ip)[/mw_shl_code]
然后输入开发板的root密码就就可以了,如下图连接成功:

ssh

ssh



相关帖子
SSH 移植到 ARM Linux 开发板上错误总结http://bbs.myir-tech.com/thread-6167-1-1.html


回复

使用道具 举报

您需要登录后才可以回帖 登录

本版积分规则

Archiver|手机版|小黑屋|米尔科技论坛   

GMT+8, 2024-4-30 10:19 , Processed in 0.070603 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表