向linux嵌入式ARM板移植dropbear

2019-07-13 00:09发布

向嵌入式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
  • 在启动脚本/etc/rc.d/rcS中加入:
/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的问题,还是记录在这里。

参考网址