概述
由于JZ2440开发板没有适配SSH功能,下面就具体如何进行OPENSSH移植进行详细介绍,方便后续学习。
操作环境
- 交叉编译链: arm-linux-gcc-3.4.5-glibc-2.3.6
- Linux内核版本:linux-2.6.22.6
- 平台: jz2440
步骤
1.下载源码包如下,下载 openssh、openssl 和 zlib 三个包
openssh
openssl
- 官方下载:/source/index.html
zlib
- 官方下载:zlib Home Site
2.部署工作目录创建用户主目录下创建工作目录
$ mkdir /home/gary/work
$ cd /home/gary/work
在 work 目录下面创建安装目录:
$ mkdir install
$ mkdir install/zlib
$ mkdir install/openssl
3.解压并编译
把以上下载的3个安装包复制到 work 目录下,并解压,解压命令:
$ tar zxvf zlib-1.2.8.tar.gz
$ tar zxvf openssl-1.0.1h.tar.gz$ tar zxvf openssh-6.6p1.tar.gz
3.1 交叉编译 zlib
$ cd zlib-1.2.8
$ ./configure --prefix=/home/gary/work/install/zlib
$ vi Makefile
将 Makefile 中的交叉编译工具改成当前开发板使用的交叉编译工具:
CC=arm-linux-gcc
AR=arm-linux-ar
CPP=arm-linux-gcc -E
LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
$ make
$ make install
3.2 交叉编译openssl
$ cd ../openssl-1.0.1h
$ ./Configure --prefix=/home/gary/work/install/openssl os/compiler:arm-linux-gcc
$ make
$ make install
3.3 交叉编译openssh
$ cd ../openssh-6.6p1
$ ./configure --host=arm-none-linux-gnueabi --with-libs --with-zlib=/home/gary/work/install/zlib --with-ssl-dir=/home/gary/work/install/openssl --disable-etc-default-login CC=arm-linux-gcc AR=arm-linux-ar
$ make
4.操作目标板
a)确保目标板上有以下目录,若没有,则新建:
mkdir /usr/local/bin
mkdir /usr/local/etc
mkdir /usr/libexec
mkdir /var/run
mkdir /var/empty
b)从PC机上将以下文件拷贝到目标板Linux系统中
PC机 /home/gary/work/openssh-6.6p1/ 目录下的
- scp sftp ssh sshd ssh-add ssh-agent ssh-keygen ssh-keyscan 共8个文件拷贝到目标板 /usr/local/bin
- moduli ssh_config sshd_config 共3个文件拷贝到目标板 /usr/local/etc
- sftp-server ssh-keysign 共2个文件拷贝到目标板 /usr/libexec
c)生成Key文件
在PC机 /work/ssh/source/openssh-6.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 ""
将生成的 ssh_host_*_key 这4个文件copy到目标板的 /usr/local/etc/ 目录下。其中 ssh_host_ed25519_key 是SSH第二版协议用到的key,放到开发板之后,要修改权限为 600。
修改权限的命令为:
# chmod 600 /usr/local/etc/ssh_host_ed25519_key
- 修改目标板passwd文件。
在 /etc/passwd 文件最后添加下面这一行:
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
- 测试
如果开发板的 root 用户还没有密码,键入以下命令然输入两次密码来修改,否其他设备无法连:
# passwd root
在目标板上运行:
# /usr/local/bin/sshd