转自:http://blog.sina.com.cn/s/blog_7f2a9a390100xws4.html
步骤:
1.下载源码包,地址如下:
openssh http://www.openssh.com/portable.html
openssl http://www.openssl.org/source
zlib http://www.zlib.net/
2.交叉编译
创建工作目录:
#mkdir /work
#cd /work
在/work目下面创建ssh目录
# mkdir /work/ssh -----〉工作目录
# cd /work/ssh
# mkdir compressed install -----〉compressed 用于存放源码包
-----〉Install 软件安装目录
-----〉Source 源码包解压目录
#mv tarpakgs/openssh-4.6p1.tar.gz /work/ssh/compressed
#mv tarpakgs/openssl-0.9.8e.tar.gz /work/ssh/compressed
#mv tarpakgs/zlib-1.2.3.tar.gz /work/ssh/compressed
解压安装包:
# cd /work/ssh/
# tar zxvf zlib-1.2.3.tar.gz -C ../compressed
# tar zxvf openssl-0.9.8e.tar.gz -C ../compressed
# tar zxvf openssh-4.6p1.tar.gz –C ../compressed
交叉编译 zlib:
# cd /work/ssh/source/zlib-1.2.3
# ./configure --prefix=/work/ssh/install/zlib-1.2.3
# vim Makefile
CC=arm-none-linux-gnueabi-gcc
AR=arm-none-linux-gnueabi-ar rc
CPP =arm-none-linux-gnueabi-gcc -E
LDSHARED=arm-none-linux-gnueabi-gcc
# make
# make install
交叉编译openssl
# cd /work/ssh/source/openssl-0.9.8e
# ./Configure --prefix=/work/ssh/install/openssl-0.9.8e os/compiler:arm-none-linux-gnueabi-gcc
(x86_64) # ./config --cross-compile-prefix=x86_64-pc-linux-gnu- --prefix=/home/ssh/work/openssl --openssldir=/home/ssh/work/openssl
# make
# make install
交叉编译openssh
# cd /work/ssh/source/ openssh-4.6p1
#./configure --host=arm-none-linux-gnueabi --with-libs --with-zlib=/work/ssh/install/zlib-1.2.3 --with-ssl-dir=/work/ssh/install/openssl-0.9.8e --disable-etc-default-login CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar
#make
注意:openssh不需要make install
3.操作目标板
3.1确保目标板上有以下目录,若没有,则新建:
/usr/local/etc/
/var/empty/
3.2从PC机上将以下文件拷贝到目标板Linux系统中
PC机 /work/ssh/source/openssh-4.6p1/ 目录下的
sshd_config拷贝到目标板 /usr/local/etc
sshd 拷贝到目标板
libz.so.1 拷贝到目标板 /lib/目录下
注意:sshd的启动必须使用绝对路径寻址
3.3生成Key文件
在PC机 /work/ssh/source/openssh-4.6p1/ 目录下运行:
ssh-keygen -t rsa -N ""
注意:ssh-keygen的生成路径也必须使用绝对路径寻址
3.4修改目标板passwd文件。
在/etc/passwd 中添加下面这一行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
测试:
主机上:
#ssh root@192.168.0.34(开发板的ip)
自动登录(免密码,用户名)说明:
使用ssh-keygen将产生密钥对
将公钥导入到服务器的认证池:cat id_rsa.pub >> ~/.ssh/authorized_keys
将私钥导入到本机认证池:cat id_rsa >> .ssh/authorized_keys
本机使用:ssh root@192.168.0.34(开发板的ip)免密登录服务器
如果authorized_keys文件、$HOME/.ssh目录 或 $HOME目录让本用户之外的用户有写权限,那么sshd都会拒绝使用 ~/.ssh/authorized_keys 文件中的key来进行认证的。
其他注意点:
不要使用新版文件,会编译不过
建议使用旧版ssh: openssh从6.5版本开始,使用openssl 源码编译的时候,必须使用动态库(在openssh 6.4之前的版本中没这种情况);
新版的openssl的Comfigure无法设置os/compiler,需要使用旧版
解压文件命令很简单 :
.tar.gz 格式解压为 tar -zxvf xx.tar.gz
.tar.bz2 格式解压为 tar -jxvf xx.tar.bz2
.7z格式解压为 7z x xx.7z