移植openssh服务器到ARM处理器上

https://wenku.baidu.com/view/9f05216eaf1ffc4ffe47ac47.html


移植opensshd到ARM开发板上
1. 环境 
硬件环境: 
Host:X86PC         
Target:ARM 开发板  
软件环境: 
Host:VMware虚拟机下的redhat linux 9.0(完全安装) Target:arm-linux                kernel:linux-2.6.13 
Crosstool: arm-linux-gcc-4.2.0  
2. 准备以下源码包(下载) 
下载zlib:  http://www.zlib.net/zlib-1.2.3.tar.gz 
下载ssl:   http://www.openssl.org/source/openssl-0.9.8e.tar.gz 
下载ssh:  http://mirror.mcs.anl.gov/openssh/portable/openssh-4.6p1.tar.gz  
3. 交叉编译 (1) 准备工作 
在redhat linux 9.0下新建工作目录 mkdir /ssh              
工作目录 cd /ssh                 进入工作目录 
mkdir compressed install source     
再新建三个目录 mkdir intall/zlib-1.2.3  install/openssl-0.9.8e 
compressed       用于存放源码包 
install          软件安装目录 
source           源码包解压目录 
说明:把第2步下载的源码包放到compressed目录中  
(2) 交叉编译zlib 
cd /ssh/compressed/ 
tar xzvf zlib-1.2.3.tar.gz  -C  ../source cd ../source/zlib-1.2.3 
./configure --prefix=/ssh/install/zlib-1.2.3 
修改Makefile: 
       CC=gcc 改为:  
       CROSS=/usr/local/arm/3.4.1/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  
(3) 交叉编译openssl cd /ssh/compressed/ 
tar zxvf openssl-0.9.8e.tar.gz  -C  ../source 
cd ../source/openssl-0.9.8e 
./Configure --prefix=/ssh/install/openssl-0.9.8e os/compiler:/usr/local/arm/3.4.1/bin/arm-linux-gcc  
make 
make install   
(4)交叉编译openssh cd /ssh/compressed 
tar zxvf openssh-4.6p1.tar.gz  –C ../source 
cd ../source/openssh-4.6p1 
./configure --host=arm-linux --with-libs --with-zlib=/ssh/install/zlib-1.2.3 
--with-ssl-dir=/ssh/install/openssl-0.9.8e 
--disable-etc-default-login CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc AR=/usr/local/arm/3.4.1/bin/arm-linux-ar  

make 

##不要make install   

4. 安装      
    (1) 将 openssh-4.6p1目录下的 sshd 拷贝到 目标板的/usr/sbin目录下     
    (2) 再拷贝 scp  sftp  ssh  ssh-add  ssh-agent  ssh-keygen  ssh-keyscan  到目标板/usr/local/bin目录下 
    (3) 拷贝 sftp-server  ssh-keysign    到/usr/local/libexec目录下         
    (4) 在目标板下: 
        mkdir -p /usr/local/etc/          
        mkdir -p /var/run;  
        mkdir -p /var/empty/sshd 
        chmod 755 /var/empty  
        然后将openssh-4.6p1下的sshd_config, ssh_config 拷贝到/usr/local/etc/目录下 
    (5)在主机上:(openssh-4.6p1目录下),重新编译x86平台 并且用超级终端运行如下命令         
        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 ""         
        将生存的 ssh_host_* 6个文件(即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 )拷贝到目标板的 /usr/local/etc/目录下  
(6)修改目标板根文件系统/etc目录下的 passwd 和group文件,添加上sshd用户和组,步骤如下: 
    cd /etc 
    vi passwd 
    在打开的passwd文件修改后如下所示: 
root::0:0:root:/:/bin/sh 
bin:*:1:1:bin:/bin: 
daemon:*:2:2:daemon:/sbin: 
nobody:*:99:99:Nobody:/: 
sshd:*:74:74:Privilege-separated 
SSH:/var/empty/sshd:/sbin/nologin―――添加sshd用户
    
vi group 
在打开的group文件修改后如下所示: 
root:*:0:
daemon:*:1:
bin:*:2:
sys:*:3:
adm:*:4:
tty:*:5:
disk:*:6:
lp:*:7:
mail:*:8:
news:*:9:
uucp:*:10:
man:*:12:
proxy:*:13:
kmem:*:15:
dialout:*:20:
fax:*:21:
voice:*:22:
cdrom:*:24:
floppy:*:25:
tape:*:26:
sshd:*74:-------------添加sshd组 
sudo:*:27:
audio:*:29:
dip:*:30:
www-data:*:33:
backup:*:34:
operator:*:37:
list:*:38:
irc:*:39:
src:*:40:
gnats:*:41:
shadow:*:42:
utmp:*:43:
video:*:44:
sasl:*:45:
plugdev:*:46:
staff:*:50:
games:*:60:
users:*:100:
mysql:*:64001:
nogroup:*:65534:
  
(7)修改sshd_config文件如下选项,其他按默认配置: 
# HostKey for protocol version 1 
HostKey /usr/local/etc/ssh_host_key 
#HostKeys for protocol version 2 
HostKey /usr/local/etc/ssh_host_rsa_key 
HostKey /usr/local/etc/ssh_host_dsa_key  
PermitRootLogin   yes――允许根用户登陆 
PermitEmptyPasswords   yes――允许使用空密码,即不需要密码 
UsePrivilegeSeparation    no――把安全级别降低,因为不会连接互联网  
# override default of no subsystems 
Subsystem sftp /usr/local/libexec/sftp-server  ――指定sftp服务路径,否则将不能启动sftp服务,将不能进行文件的上传和下载  
(8)在开发板上(即目标板)启动sshd 
此时的你只要等开发板启动好之后启动sshd服务了,使用绝对路径来启动。 /usr/local/sbin/sshd  
上述启动命令可以写进启动脚本文件里,我把它添加到开发板上的/etc/init.d/rcS脚本里,系统启动完后就能提供sshd服务。 

(9)特别注意的是  应用X86平台编译 当前版本的 host_key:
   cd /ssh/compressed/openssh-4.6p1
   
   ./configure  
   
   make

   ./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 ""
  
   生成相应版本的host_key

(10)Starting sshd:/var/empty/sshd must be owned by root and not group or world-writable.
                                                            [FAILED]
这个是权限的问题
可采取以下两步解决
chown   -R   root.root    /var/empty/sshd
chmod 744 /var/empty/sshd
service sshd restart
就可以解决上述的问题

chown -R root.root /var/empty/


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值