• 移植OpenSSH到arm手记


    移植OpenSSH到arm手记


    http://blog.csdn.net/songbohr/article/details/5540025



    519人阅读 评论(1) 收藏 举报

    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 phil@192.168.0.78   
    -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 root@192.168.0.65
    $ ./sftp -S ./ssh phil@192.168.0.78   
    -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

  • 相关阅读:
    维护keepalived与mysql漂移脚本
    Linux限制普通用户只能使用某命令
    Android的AlertDialog详解
    android:传感器的使用
    android:wifi
    android: 使用Canvas 绘图
    在 Eclipse 中 配置 tomcat
    android:AIDL
    android之Service 深入剖析
    广播发送者与广播接收者
  • 原文地址:https://www.cnblogs.com/yuzaipiaofei/p/4124403.html
Copyright © 2020-2023  润新知