SSH移植到开发板

标题 把SSH移植到开发板(小白教程)

1. 下载:

移植SSH需要3个安装包:zlib、openssl和openssh,地址如下:
zlib官方下载:http://www.zlib.net/
openssl官方下载:http://www.openssl.org/source
openssh官网下载:http://www.openssh.com/portable.html
因为它们之间没有版本所谓的版本冲突,所以都下载最新板的即可。本文以zlib-1.2.11.tar.gz、openssl-1.0.2g.tar.gz、openssh-5.6p1.tar.gz这三个版本为例,其他版本过程一样。注意:其他高版本的移植工作后会依赖对应的高版本的库,有时候目标板不支持高版本库的时候,就可以适当降低openssh的版本后再移植。

2、部署:

  1. 创建工作目录:
    cd /home
    mkdir /work
    cd /work
    mkdir ssh
    cd ssh
    mkdir compressed install source
    /compressed为未解压文件目录;install为软件安装目录; source 源码包解压目录/
    mv openssh-5.6p1.tar.gz /work/ssh/compressed
    mv openssl-1.0.2g.tar.gz /work/ssh/compressed
    mv zlib-1.2.11.tar.gz /work/ssh/compressed
  2. 解压安装包:
cd /work/ssh/compressed/
tar -xvf zlib-1.2.3.tar.gz –C ../source
tar -xvf openssl-0.9.8e.tar.gz –C ../source
tar -xvf openssh-5.6p1.tar.gz –C ../source

3、配置和交叉编译

1)编译zlib
    cd  /home/work/ssh/source/zlib-1.2.3
    /*配置zlib*/   
    ./configure -prefix=/home/work/ssh/install/zlib    //zlib的安装路径
    /*修改Makefile :*/
    vi Makefile
    CC=gcc 改为:
    CC=arm-none-linux-gnueabi-gcc        //交叉编译器
    LDSHARED= gcc 改为:
    LDSHARED=arm-none-linux-gnueabi-gcc
    CPP= gcc - E 改为:
    CPP=arm-none-linux-gnueabi-gcc - E
    AR= ar rc 改为:
    AR=arm-none-linux-gnueabi-ar rc
    /*保存退出,开始编译:*/
    make            //编译
    make install        //安装2)编译openssl 
    cd  /home/work/ssh/source/openssl-0.9.8e
   /*配置openssl*/
    setarch i386 ./config no-asm --prefix=$(pwd)/__install
      setarch i386 :32位的开发板(如果是64位的开发板的不用)
      no-asm: 是在交叉编译过程中不使用汇编代码代码加速编译过程,原因是它的汇编代码是对ARM格式的不支持
      --prefix:安装路径
  /*修改Makefile*/
    vi Makefile
    CC= /home/public/zx902/arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc 
    删除 CFLAG= 中的-m64
    AR= /home/public/zx902/arm-linux-gnueabi/bin/arm-linux-gnueabi-ar  $(ARFLAGS) r
    RANLIB= /home/public/zx902/arm-linux-gnueabi/bin/arm-linux-gnueabi- ranlib
    NM= /home/public/zx902/arm-linux-gnueabi/bin/arm-linux-gnueabi-nm
   /*保存退出,开始编译:*/
    make      //编译
    make install       //安装3)编译openssh
    cd /home/work/ssh/source/openssh-5.6p1
   /*配置openss*/
    ./configure -host=arm-none-linux-gnueabi -with-libs -with-zlib=/home/work/ssh/install/zlib -with-ssl-dir=/usr/local/ssl -disable-etc-default-login CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar
   /*保存退出,开始编译:*/
    make
注意:openssh不需要make install,不需要安装目录
–prefix= install architecture-independent files in PREFIX[ /usr/local ] (将体系无关文件安装到目录PREFIX里,默认是/usr/local),这里的有:PREFIX/etc,PREFIX/com,PREFIX/var,PREFIX/include,PREFIX/share
–with-zlib=刚才编译出来的zlib安装路径
–with-ssl-dir=刚才编译出来openssl安装路径
–host=交叉编译出来的程序运行的平台

4、移植到ARM目标板

确保目标板上有以下目录,如果是真的没有的时候,则新建添加,
/usr/local/bin/
/usr/local/sbin/
/usr/local/etc/
/usr/local/libexec/
/var/run/
/var/empty/
/*改变empty的所属权为root*/
chown  root /var/empty

拷贝文件到目标板Linux系统中
cd /home/work/ssh/source/openssh-5.6p1/
cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan /usr/local/bin
cp moduli ssh_config sshd_config /usr/local/etc
cp sftp-server ssh-keysign /usr/local/libexec
cp sshd /usr/local/sbin/
chmod 777 /usr/local/sbin/sshd

在开发平台上生成Key文件,拷贝到目标板
cd /home/work/ssh/source/openssh-5.6p1/
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 ""
cp ssh_host_*_key /usr/local/etc/
chmod 600 /usr/local/etc/ssh_host_ed25519_key
注:key是指私钥文件,有4个文件需要拷贝

修改目标板密码,在目标板的文件系统中添加:
在/etc/passwd 中添加下面这一行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

5、测试

首先必须保证目标板的时间和当前时间的一致,才能使访问时密码不会过时。
可以在目标板上使用data命令设置时间:
date -s “2018-01-19 10:30:00”
配置目标板网络:
ifconfig eth0 192.168.117.119
ifconfig eth0 up
在ARM单板上运行(注意请使用绝对路径来启动sshd服务器守护进程):
/usr/local/sbin/sshd
可以使用ps命令查看sshd是否工作,如果运行的过程中有提示缺少动态连接库,可以在主机上搜索相应文件,拷贝到目标板/lib/目录下面,注意创建软连接!

在主机上运行:
ssh root@192.168.117.119(开发板的ip)
然后输入开发板的root密码就就可以了。
注:
1. root密码就是你开发板上root的密码,如果之前root没有密码,需要重新设置,用passwd root,然后输入密码即可。
2. 如果目标板由于某些网络的影响导致ip不稳定,使得ssh client连接不上,可以尝试把目标板的ip固定
vi autorun.sh /添加如下/
ifconfig eth0 192.168.117.119
3. 如果移植编译的时候出错,请考虑你的交叉编译链和你的软件版本的匹配性,针对自己的交叉编译链,酌情降低或者升高软件版本,重新按照以上步骤来执行。
4. 如果重启开发板之后ssh失效,可以在/etc/init.d/rcS中加入/usr/local/sbin/sshd

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值