移植OpenSSH到arm手记

hi,all

I have finished porting sftp program for PTO project.The attachment is sftp program,pls check.Any question,please do not hestate to contact me.
 
At the same time,I have written a article about how to port sftp(OpenSSH) to arm platform to share with you.
 
How to use it ?
$ ./sftp -S ./ssh [email protected]   
-S 指定ssh路径。
特殊说明:
若只用sftp功能,可只需拷贝
libnsl.so.1
libutil.so.1
libz.so.1
sftp
ssh
五个程序到PTO即可。
 
移植经验分享:
移植OpenSSH到arm手记
 
 
因为PTO项目的需求,需要移植一个SFTP的客户端程序,经过比较多个sftp客户端(如putty,lftp,filezilla,openssh等),最终决定移植openssh,步骤如下:
--------------------------------------------------------------------------------
1. 下载需要的源码:
    下载zlib:  wget -c http://zlib.net/zlib-1.2.5.tar.gz
    下载ssl:  wget -c http://www.openssl.org/source/openssl-1.0.0.tar.gz
    下载ssh: wget -c http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-5.5p1.tar.gz
2.  编译:
    cd ~/sftp
    (1) 编译zlib:
     tar zxvf zlib-1.2.3.tar.gz -C .
     cd zlib-1.2.3/
     ./configure --shared --prefix=~/sftp/pack/zlib
    修改Makefile:
       CC=gcc 改为: 
       CROSS=/usr/local/arm/3.4.1/bin/arm-linux-
       CC=$(CROSS)gcc 
       LDSHARED=gcc -shared -Wl,-soname,libz.so.1 改为:LDSHARED=$(CROSS)gcc -shared -Wl,-soname,libz.so.1
CPP=gcc -E 改为:CPP=$(CROSS)gcc -E
AR=ar rc 改为:AR=$(CROSS)ar rc
  开始编译: make;make install
   (2)  编译openssl:
       tar zxvf openssl-1.0.0.tar.gz
cd openssl-1.0.0
      ./Configure --prefix=~/sftp/pack/openssl os/compiler:/usr/local/arm/3.4.1/bin/arm-linux-gcc
    make;make install
   (3) 编译openssh:
      tar zxvf openssh-5.3p1.tar.gz
      cd openssh-5.3p1/
      ./configure --host=arm-linux --prefix=/home/phil/sftp/pack/openssh --disable-strip --with-libs --with-zlib=/home/phil/sftp/pack/zlib --with-ssl-dir=/home/phil/sftp/pack/openssl --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
注意:1)因为openssh链接的是zlib动态库,所以编译zlib时要加--shared
2)--with-zlib必须用绝对路径,--prefix有的可以用~,但openssh要求--prefix必须用绝对路径
3. 安装
    
    (1) 将 openssh-5.5p1目录下的 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)在主机上:
         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_* 4个文件copy到目标板的 /usr/local/etc/目录下
     (5) 添加用户:
    将主机上 /etc/目下的 passwd, shadow, group 三个文件copy到目标板的 /etc目录下, 同时记得将passwd的最后 /bin/bash 该为 /bin/sh 
      其实可以删除不需要的一些用户。
      这一步也可以这样,在目标板的passwd中添加sshd用户:
      sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin
      在shadow中也添加对应的项就行了:
      sshd:!:14069:0:99999:7:::
     
4.测试
     目标板启动sshd:  # /usr/sbin/sshd
     主机: $  ssh -v [email protected]
$ ./sftp -S ./ssh [email protected]   
-S 指定ssh路径。
特殊说明:
若只用sftp功能,可只需
libnsl.so.1
libutil.so.1
libz.so.1
sftp
ssh
五个程序即可。
参考文档:
移植sshd到jk2410开发板http://blog.chinaunix.net/u1/43047/showart_371372.html
Openssh移植经验谈http://blog.csdn.net/dzassn/archive/2007/09/08/1776971.aspx
Comparison of FTP client software http://en.wikipedia.org/wiki/Comparison_of_FTP_client_software
The Secure Shell (SSH) Protocol Architecture http://tools.ietf.org/html/rfc4251
SSH File Transfer Protocol  http://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/
phil
2010-04-28

你可能感兴趣的:(移植OpenSSH到arm手记)