向嵌入式linux开发机移植dropbear
最近出于项目需要,不再使用telnet协议来远程操控嵌入式linux开发机,而需要使用有一定安全要求的SSH协议,做记录以备将来回顾。
2016-8-16
背景
- 嵌入式linux平台:freescale i.mx6q
- 宿主机系统:ubuntu 16.04
- 嵌入式linux系统:linux 3.0.35
- ssh程序:dropbear
基本情况
linux系统中常用的SSH软件是openSSH,由于openSSH略显庞大,后选择轻量级的dropbear替换openSSH。
dropbear实现完整的SSH客户端和服务器版本2协议,不支持SSH版本1协议,以节省空间和资源,并避免在SSH版本1中出现的固有的安全漏洞,而且也支持SCP。
步骤
1.宿主机操作:
-
下载并解压dropbear,我使用的是dropbear-2016.74,下载链接https://matt.ucc.asn.au/dropbear/releases/dropbear-2016.74.tar.bz2
-
下载并解压zlib,我使用的是zlib-1.2.8,下载链接http://zlib.net/zlib-1.2.8.tar.gz ,以上这两个软件是必须用的,可以谷歌官网去下载其他更新的版本。
-
交叉编译zlib。进入zlib解压后的目录,执行:
~/zlib # mkdir /usr/local/zlib/
~/zlib # ./configure --prefix=/usr/local/zlib
~/zlib # vim Makefile
- 修改Makefile内容,其实就是把默认的gcc等改为自己的交叉编译器对应的,如下:(请配置为自己的交叉编译工具)
CC=arm-fsl-linux-gnueabi-cc
AR=arm-fsl-linux-gnueabi-ar
RANLIB=arm-fsl-linux-gnueabi-ranlib
CPP=arm-fsl-linux-gnueabi-cpp
LDSHARED=arm-fsl-linux-gnueabi-cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
~/zlib # make
~/zlib # make install
- zlib将会编译安装到
/usr/local/zlib/
路径下,安装软件用系统权限。
-
交叉编译dropbear。进入dropbear解压后的目录,执行:(配置为自己的交叉编译工具)
~/dropbear # mkdir /usr/local/dropbear/
~/dropbear # ./configure --prefix=/usr/local/dropbear --with-zlib=/usr/local/zlib/ CC=arm-fsl-linux-gnueabi-gcc --host=arm
~/dropbear # make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
~/dropbear # make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
- 注意,这里如果不加PROGRAMS参数的话,编译结果里是没有scp的,如果不加这个参数还需要编译scp,可以再单独自己编译scp和安装scp,如下:
~/dropbear # make scp
~/dropbear # cp scp /usr/local/dropbear/bin/
2.将/usr/local/dropbear/bin/和/usr/local/dropbear/sbin/里面的可执行程序,都复制到linux开发机的/usr/sbin/目录下,不要把bin、sbin目录复制到/usr/sbin/里面了。然后在ARM板的串口终端上执行下面命令生成密钥:
~ # cd /etc
~/etc # mkdir dropbear
~/etc # cd dropbear
~/etc/dropbear # dropbearkey -t rsa -f dropbear_rsa_host_key
~/etc/dropbear # dropbearkey -t dss -f dropbear_dss_host_key
/usr/sbin/dropbear
3.另外,可能还需要新建账户和设置密码,有问题解决问题即可。
修改root或用户密码
[root@FriendlyARM /]# passwd root
Changing password for root
New password:
Retype password:
Password for root changed by root
或者:
root状态下在板上输入命令添加用户myland和设置密码
[root@FriendlyARM /]# adduser myland
Changing password for myland
New password:
Retype password:
Password for myland changed by root
遇到的问题
- scp没有被编译进去,已经解决,并在上文中修正。
- 当dropbear正常工作时需要设置root的密码,但设置密码后原来的ftp就不能工作了,虽然不是dropbear的问题,还是记录在这里。
参考网址