SSH服务移植到ARM单板

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

1. 下载

首先下载几个源码包

移植openssh需要三个包:openssh、openssl 和 zlib,地址如下:
zlib官方下载:http://www.zlib.net/
openssl官方下载:http://www.openssl.org/source
openssh官网下载:http://www.openssh.com/portable.html

因为它们之间不同版本存在依赖关系,为了保证编译通过,选用较旧的版本。本文以zlib-1.2.3.tar.gz、openssl-0.9.8e.tar.gz、openssh-5.6p1.tar.gz这三个版本为例。

2. 准备

  1. 创建目录
    mkdir ssh
    cd ssh
    mkdir compressed source install
    mv tarpakgs/openssh-5.6p1.tar.gz /home/zzt/ssh/compressed
    mv tarpakgs/openssl-0.9.8e.tar.gz /home/zzt/ssh/compressed
    mv tarpakgs/zlib-1.2.3.tar.gz /home/zzt/ssh/compressed

    注:compressed 压缩文件目录
    source 解压文件目录
    install 安装文件目录

  2. 解压
    cd /home/zzt/ssh/compressed
    tar zxvf zlib-1.2.3.tar.gz –C ../source
    tar zxvf openssl-0.9.8e.tar.gz –C ../source
    tar zxvf openssh-5.6p1.tar.gz –C ../source

3. 交叉编译

  1. 交叉编译zlib
    cd zlib-1.2.3
    ./configure –prefix=/home/zzt/ssh/install/zlib
    **配置完成后修改Makefile
    vim Makefile
    CC=arm-marvell-linux-gnueabi-gcc
    LDSHARED=arm-marvell-linux-gnueabi-gcc
    CPP=arm-marvell-linux-gnueabi-gcc -E
    AR=arm-marvell-linux-gnueabi-ar rc
    make
    make install

  2. 交叉编译openssl
    cd openssl-0.9.8e
    ./Configure –prefix=/home/zzt/ssh/install/openssl os/compiler:arm-marvell-linux-gnueabi-gcc
    make
    make install

  3. 交叉编译openssh
    cd openssh-5.6p1
    ./configure –host=arm-marvell-linux-gnueabi –with-libs –with-zlib=/home/zzt/ssh/install/zlib –with-ssl-dir=/home/zzt/ssh/install/openssl –disable-etc-default-login CC=arm-marvell-linux-gnueabi-gcc AR=arm-marvell-linux-gnueabi-ar
    make

    注意:openssh不需要make install,不需要安装目录
    configure opt介绍:
    –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单板准备文件

  1. 确保目标板上有以下目录,若没有,则新建,在ARM文件系统中添加,在PC机上操作
    /usr/local/bin/
    /usr/local/sbin/
    /usr/local/etc/
    /usr/local/libexec/
    /var/run/
    /var/empty/

  2. 拷贝文件到目标板Linux系统中,在PC机上操作
    cd /home/zzt/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/

  3. 生成Key文件,在PC机上操作
    cd /home/zzt/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 “”
    cp ssh_host_*_key /usr/local/etc/
    注:key是指私钥文件,有3个文件需要拷贝

  4. 修改目标板passwd文件,在ARM文件系统中添加,在PC机上操作
    在/etc/passwd 中添加下面这一行
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

5. 测试

在ARM单板上运行:
/usr/local/sbin/sshd
可以使用ps命令查看sshd是否工作,如果运行的过程中有提示缺少动态连接库,可以在主机上搜索相应文件,拷贝到目标板/lib/目录下面,注意创建软连接!

在主机上运行:
ssh [email protected](开发板的ip)
然后输入开发板的root密码就就可以了。

注:root密码就是你开发板上root的密码,如果之前root没有密码,需要重新设置,用passwd root,然后输入密码即可。

你可能感兴趣的:(Linux,ssh)