昨天用了openSSH,做了个移植,无奈生成的文件太大,生成的二进制程序大概15M的样子,整个Flash都装不下所以不适合一般的嵌入式设备。
恰巧今天同事提到了dropbear,这个可是个好东西,大家可以百度一下,他是个轻量级的SSH服务器,非常适合安装到嵌入式设备中,我编译出来
总共才500多K,很满意。废话不说,上教程
设备:Hi3515 Demo单板(海思的视频开发板)
Host:Ubuntu10.04
交叉编译环境:Hi3515_SDK_V1.0.8.0
1、先下载源文件
dropbear:https://matt.ucc.asn.au/dropbear/releases/dropbear-2013.56.tar.bz2
zlib-1.2.7:http://zlib.net/zlib-1.2.7.tar.gz
交叉编译环境自己配置,这个不具有统一性,每个设备的交叉编译环境都不同,固不叙述教程,我已经安好了Hi3515的开发环境。
2、解压文件:
将下载到的源码保存到一个文件夹下,我保存到了/root/Hi3515/EmbSSH目录下,这个目录可以随便定义,不是关键
mkdir source package //创建目录 mkdir package/zlib //创建zlib目录 mv zlib-1.2.7.tar.gz dropbear-2013.56.tar.bz2 ./source //将zlib移动到source文件夹 cd source tar -zxvf dropbear-2013.56.tar.bz2 //解压 tar -zxvf zlib-1.2.7.tar.gz
3、编译zlib
./configure --prefix=/root/Hi3515/EmbSSH/package/zlib
4、修改Makefile
CC=/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/bin/arm-hisi-linux-gcc AR=/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/bin/arm-hisi-linux-ar CPP =/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/bin/arm-hisi-linux-gcc -E LDSHARED=/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/bin/arm-hisi-linux-gcc
注意:这里的CC AR CPP LDSARED这几个参数就是改成你的交叉编译环境中的编译器,最好是使用绝对路径,当然如果你的交叉编译环境已经加载到环境变量中,可以使用相对路径,但是还是推荐绝对路径,虽然写起来麻烦点,但是安全可靠。
5、编译,安装
make //编译 make install //安装到你前面prefix指定的目录中
6、编译dropbear
回到source目录
cd dropbear-2013.56 //进到dropbear源码包中 ./configure --with-zlib=/root/Hi3515/EmbSSH/package/zlib CC=/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/bin/arm-hisi-linux-gcc AR=/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/bin/arm-hisi-linux-ar --host=arm-linux //配置makefile
7、编译
make
8、到这,编译工作就已经结束了。接下来将编译之后生成的文件文件移植到开发板中
将dropbear目录下面的dbclient,dropbear,dropbearconvert,dropbearkey四个文件复制到开发板的/bin目录下或者/sbin目录下
将package/zlib目录下的libz.so.1和libz.so.1.2.7复制到开发板的/lib目录下,这个库文件必须要拷贝,不然的话,程序不能运行
9、配置dropbear
这里要在开发板中进行配置,通过串口打开中终端
cd /etc mkdir dropbear cd dropbear dropbearkey -t rsa -f dropbear_rsa_host_key dropbearkey -t dss -f dropbear_dss_host_key
dropbear -p 22 //监听22端口,通常ssh默认都是22端口