Chinaunix首页 | 论坛 | 博客
  • 博客访问: 816534
  • 博文数量: 124
  • 博客积分: 1927
  • 博客等级: 上尉
  • 技术积分: 932
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-31 14:06
文章分类

全部博文(124)

文章存档

2018年(5)

2017年(2)

2016年(6)

2015年(4)

2014年(24)

2013年(7)

2012年(11)

2011年(13)

2010年(52)

我的朋友

分类: C/C++

2013-04-11 10:39:22


将Openssh 移植到ARM Linux目标板

下载最新版本的openssh-6.0p1 openssl-2.0.1 和 zlib-1.2.7 最后一步配置ssh出错 使用低版本的ssh和

ssl(zlib-1.2.7可以使用)原因不明

最终使用版本:
openssh-4.6p1
openssl-0.9.8e
zlib-1.2.7
源码下载地址:
openssh
openssl
zlib    


(一) zlib openssl openssh交叉编译 (交叉编译器为 arm-hismall-linux-gcc)

1 下载源码包,地址如下:
openssh
openssl
zlib     
2 交叉编译
在/work目下面创建ssh目录
# mkdir /work/lib            ----〉共享库目录,通过nfs挂载
# mkdir /work/ssh           -----〉工作目录
# cd  /work/ssh
# mkdir compressed install source  -----〉compressed 用于存放源码包
                                    Install    软件安装目录
                                    Source    源码包解压目录
#mv tarpakgs/openssh-4.6p1.tar.gz   /work/ssh/compressed
#mv tarpakgs/openssl-0.9.8e.tar.gz  /work/ssh/compressed
#mv tarpakgs/zlib-1.2.7.tar.tar     /work/ssh/compressed

交叉编译 zlib
# cd /work/ssh/compressed/
# tar xvf zlib-1.2.7.tar.tar  -C  ../source
# cd ../source/zlib-1.2.7
# ./configure --prefix=/work/ssh/install/zlib-1.2.7
# vim Makefile
CC=arm-hismall-linux-gcc
AR=arm-hismall-linux-ar rc
CPP =arm-hismall-linux-gcc -E
LDSHARED=arm-hismall-linux-gcc
(把gcc给改为arm-hismall-linux-gcc,ar改为arm-hismall-linux-gcc)
# make
# make install
交叉编译openssl
# cd /work/ssh/compressed/
# tar zxvf openssl-0.9.8e.tar.gz  -C  ../source
# cd ../source/openssl-0.9.8e
# ./Configure --prefix=/work/ssh/install/openssl-0.9.8e  os/compiler:arm-hismall-linux-gcc
如果报错:则修改Makefile文件
#vim Makefile
(将gcc给改为arm-hismall-linux-gcc,ar改为arm-hismall-linux-gcc)
# make
# make install
交叉编译openssh
# cd /work/ssh/compressed
# tar zxvf openssh-4.6p1.tar.gz  –C ../source
# cd ../source/ openssh-4.6p1
#./configure --host=arm-9tdmi-linux-gnu --with-libs --with-zlib=/work/ssh/install/zlib-1.2.3 

--with-ssl-dir=/work/ssh/install/openssl-0.9.8e --disable-etc-default-login CC=arm-hismall-

linux-gcc AR=arm-hismall-linux-ar
#make
# cd ../source/ openssh-4.6p1

(二) 安装
  (1) 将openssh-4.6p1目录下的 sshd 拷贝到 目标板的/usr/sbin目录下
  (2) 再copy scp  sftp  ssh  ssh-add  ssh-agent  ssh-keygen  ssh-keyscan  到目标

板/usr/local/bin目录下
      copy sftp-server  ssh-keysign    到/usr/local/libexec
  (3) 在目标板下:
        mkdir -p /usr/local/etc/ ,然后将openssh下的sshd_config,ssh_config 拷贝到该目录下
        mkdir -p /var/run;
mkdir -p /var/empty/sshd 
        chmod 755 /var/empty 
  (4) 添加用户:
    将主机上 /etc/目下的 passwd, shadow, group 三个文件copy到目标板的 /etc目录下, 同时记得将

passwd的最后 /bin/bash 该为 /bin/sh  (将原passwd, shadow, group做副本)  
   ( 其实可以删除不需要的一些用户。
      这一步也可以这样,在目标板的passwd中添加sshd用户:
      sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin
      在shadow中也添加对应的项就行了:
      sshd:!:14069:0:99999:7:::)
  (5)libz.so.1.2.7 拷贝到目标板 /usr/local/lib/(可能是/lib)目录下
     然后建立软连接
     ln -s libz.so.1.2.7 libz.so.1
  (6) 在目标板中生成key文件
#cd /usr/local/bin
#ssh-keygen -t rsa1 -f ssh_host_key -N ""
        #ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
        #ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
生成6个ssh_host_..文件:ssh_host_dsa_key ssh_host_dsa_key.pub ssh_host_key 

ssh_host_key.pub ssh_host_rsa_key ssh_host_rsa_key.pub
将生成的6个文件拷贝到/usr/local/etc
#cp /usr/local/bin/ssh_host_* /usr/local/etc

(三) 测试
目标板中启动ssh
(出现错误:sshd re-exec requires execution with an absolute path;运行方式不对,应采用
下面的运行方式)
# /usr/sbin/sshd
(出现错误:去ssh_config或sshd_config注释掉相关代码行)
ps ax 查看目标板是否有sshd的进程,有则运行成功
主机连接目标板
#ssh 192.168.*.*
(出现错误:登陆输入密码后提示输入新密码;(1)更改系统时间到当前时间,在目标板重新生成ssh_host_..文件.(2)更改拷贝过来的passwd group shadow文件; 具体错误原因不明)

输入用户名密码 
连接成功

阅读(10670) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

adgentleman2020-04-21 21:44:44

博主,你好,按照你的方法已经移植到S3C2440上,可以转载你的这篇文章吗?

yaoqigui2013-04-11 10:44:27

按着文章所述,已经移植到ppc-82xx 相应的开发板上,