0. 背景

OpenSSH因为其相对较大,一般不太适用于嵌入式平台,多用于PC或者服务器的Linux版本中。

Dropbear是一个相对较小的SSH服务器和客户端。它运行在一个基于POSIX的各种平台。 Dropbear是开源软件,在麻省理工学院式的许可证。 Dropbear是特别有用的“嵌入”式的Linux(或其他Unix)系统,如无线路由器。(一个完整的openssh大小有7M左右)。

参考:https://matt.ucc.asn.au/dropbear/dropbear.html

1. 平台

  • 嵌入式Linux平台: ARM 9
  • 嵌入式Linux系统: TinaLinux 3.4.39
  • 宿主系统: Ubuntu 16.04.4 LTS
  • SSH程序: dropbear 2016.74

软件下载地址:

2. 交叉编译

因为需要在宿主机上编译嵌入式arm的东西,所以编译器应该是arm的。

此处编译,包括两个部分:zlib和dropbear。dropbear依赖zlib的库,所以必须先编译zlib才可以。

2.1 zlib编译

  • 1). 解压zlib:
tar -zxvf zlib1.2.8.tar.gz -C /usr/local/zlib/src   (此处目录根据自己情况定义)
  • 2). 进入zlib的解压目录
cd /usr/local/zlib/src
  • 3). 配置zlib
./configure --prefix=/usr/local/zlib  (即将zlib的库生成到该目录下)
  • 4). 上面步骤做完,将会生成Makefile,vim进去,修改Makefile
CC=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc  //你交叉编译工具的绝对路径
AR=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc-ar
RANLIB=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc-ranlib
LDSHARED=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map //(我只是将原来的gcc改成了我自己的编译工具,后面的参数没动过)
  • 5). 执行make
  • 6). 执行make install

完成以上步骤,你去/usr/local/zlib目录下看,会发现多了几个目录,代表zlib交叉编译成功!!

2.2 dropbear编译

  • 1). 解压dropbear:
tar -jxvf dropbear-2016.74.tar.bz2 -C /usr/local/dropbear/src   //(此处目录根据自己情况定义)
  • 2). 进入dropbear的解压目录
cd /usr/local/dropbear/src
  • 3). 配置dropbear
./configure --prefix=/usr/local/dropbear  --with-zlib=/usr/local/zlib/ CC=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc --host=arm  //(根据自己的情况修改)
  • 4). 上面步骤做完,Makefile内的CC会自动修改掉,不用再人为修改Makefile了
  • 5). 执行make
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
  • 6). 执行make install
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
  • 7). 注意,因为默认不编译scp,PROGRAMS=xxx是强制编译出scp来,不这样干也可以,但是需要自己生成scp:
make scp
cp scp /usr/local/dropbear

完成以上步骤,你去/usr/local/dropbear目录下看,会发现多了几个目录,代表dropbear交叉编译成功!!

3. 移植到开发板

  • 将/usr/local/dropbear/bin/移植到板卡的/usr/bin/下;
  • 将/usr/local/dropbear/sbin/下的文件都复制到板卡的/usr/sbin/目录下

然后去板卡上执行如下操作:

cd /etc
mkdir dropbear //这个名字是固定的,千万不可变动
cd dropbear
dropbearkey -t rsa -f dropbear_rsa_host_key
dropbearkey -t dss -f dropbear_dss_host_key

4. 嵌入式系统配置

既然弄好了dropbear,我们肯定是希望它可以开机启动喽,谁也不愿意每次开机在手动去启动这个东西吧!!!

4.1 开机启动步骤:

cd /etc/init.d/
touch dropbear_autorun //将下面内容加入到dropbear_autorun文件
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org START=99
start() {
cd /usr/sbin/
./dropbear
cd -
} //然后将该文件链接到rc.d中
cd /etc/rc.d/
ln -s ../init.d/dropbear_autorun S99dropbear

4.2 新建账号或者给root设置密码

因为SSH要求必须有密码,所以,如果板卡上可以增加新用户,则可以直接增加一个新的用户:

useradd admin
passwd admin

但是我的板卡不允许建立其它用户,只能给root赋密码了,不然SSH无法登陆

5. 问题

  • 1). 如果其它主机scp、ssh到板卡有问题,你可以尝试着将文件在/usr/sbin/ 、 /usr/bin/ 和/sbin/ 目录下移动,然后再次试验,看是否有同样问题发生 (我不会告诉你我卡在这个问题上好久的)
  • 2). scp需要移植到/usr/bin/下,不然可能其它主机无法scp推送文件到本板卡中,出现以下错误:
-ash: scp: not found
lost connection
  • 3). 板卡中执行dropbear没反应

原因1:没有执行dropbearkey, 或者执行了没生成key文件

原因2:key文件不在/etc/dropbear/文件中,这个目录名称是固定死的,不可更改

嵌入式Linux安装Dropbear SSH server的更多相关文章

  1. 【转载】嵌入式 Linux 移植 Dropbear SSH server

    0. 背景  OpenSSH因为其相对较大,一般不太适用于嵌入式平台,多用于PC或者服务器的Linux版本中.  Dropbear是一个相对较小的SSH服务器和客户端.它运行在一个基于POSIX的各种 ...

  2. Linux下设置SSH Server设置时间链接限制

    OpenSSH基于安全的理由,如果用户连线到SSH Server后闲置一段时间,SSH Server会在超过特定时间后自动终止SSH连线.本人习惯长时间连接,需要做如下修改: 1.打开ssh配置文件: ...

  3. 为基于busybox根文件系统的ARM嵌入式Linux交叉编译dropbear使能SSH

    原创作品,允许转载,转载时请务必以超链接形式标明文章.作者信息和本声明,否则将追究法律责任. 最近使用busybox为基于ARM的板卡定制了一个极简单的根文件系统,由于busybox仅支持telnet ...

  4. 嵌入式Linux下BOA网页server的移植

    **************************************************************************************************** ...

  5. alpine安装sshd/ssh server

    1.下载alpine镜像 1 2 3 4 5 6 7 8 9 10 [root@docker43 ~]# docker pull alpine Using default tag: latest Tr ...

  6. Linux第一天 ssh登录和软件安装详解

    Linux学习第一天 操作环境: Ubuntu 16.04 Win10系统,使用putty_V0.63 本身学习Linux就是想在服务器上使用的.实际情况,可能我很难直接到坐在服务器前,使用界面操作系 ...

  7. 基于 Dropbear & Zlib 搭建轻量级的ssh server

    [目的] 移植dropbear & zlib 在AM335X开发板上搭建轻量级的ssh server [环境] 1.  Ubuntu 16.04发行版 2.  MC183平台 3.  交叉编译 ...

  8. Home Assistant 安装Samba和SSH server 插件

    安装 Samba 插件 Samba 是 SMB/CIFS 网络协议的重新实现, 它作为 NFS 的补充使得在 Linux 和 Windows 系统中进行文件共享.打印机共享更容易实现. Smaba 服 ...

  9. Linux上安装使用SSH

    參考博客:http://blog.csdn.net/xqhrs232/article/details/50960520 Ubuntu安装使用SSH ubuntu默认并没有安装ssh服务,如果通过ssh ...

随机推荐

  1. 深拷贝&浅拷贝&引用计数&写时拷贝

    (1).浅拷贝: class String { public: String(const char* str="") :_str(]) { strcpy(_str,str); } ...

  2. 关于CentOS下 yum包下载下的rpm包放置路径

    在CentOS下用yum安装,回发现在/var/cache/yum/下的base.extrs和updates下的packages下都没有发现下载的RPM 原来在/etc/yum.conf下没有设置下载 ...

  3. Oracle PLSQL读取(解析)Excel文档

    http://www.itpub.net/thread-1921612-1-1.html !!!https://code.google.com/p/plsql-utils/ Introduction介 ...

  4. Nginx 实现端口转发

    https://www.cnblogs.com/zhaoyingjie/p/7248678.html Nginx 实现端口转发 什么是端口转发 当我们在服务器上搭建一个图书以及一个电影的应用,其中图书 ...

  5. linux下git远程仓库的搭建

    一.服务器环境 ubuntukylin-16.04-server-amd64 二.远程服务器创建一个名字叫git的用户,专门用于管理git仓库. $ adduser git 三.安装git.服务器端和 ...

  6. 等到花儿也谢了的await

    async/task/await三组合是.NET Framework 4.5带给.NET开发者的大礼,合理地使用它,可以提高应用程序的吞吐能力. 但是它的使用有点绕人,如果不正确使用,会带来意想不到的 ...

  7. 关于ASP.NET MVC4在IIS6中不认识安卓移动设备的解决办法

    在IIS7中发现安卓的手机浏览器是可以跳转滴. 项目中是采用***.mobile.cshtml来显示移动视图的. 部署到IIS6.0中发现并没有转到*.mobile.cshtml移动视图. 进过漫长的 ...

  8. AJPFX平台:外汇的基本面分析

    AJPFX平台:开设外汇保证金交易账户以及入金之后,通常就可以开始交易了,但是在选择买卖时点时通常会依据两种分析,两种主要分析方法通常会被称为基本面分析和技术分析.基本面分析注重金融,经济理论和政局发 ...

  9. Java Calender 类详解

    一.   如何创建 Calendar 对象 Calendar 是一个抽象类, 无法通过直接实例化得到对象. 因此, Calendar 提供了一个方法 getInstance,来获得一个Calendar ...

  10. 程序猿的日常——Mybatis现学现卖

    最近有一个小项目需求,需要用spring mvc + mybatis实现一个复杂的配置系统.其中遇到了很多不太常见的问题,在这里特意记录下: 主要涉及的内容有 事务 多表删除 插入并返回主键 1 sp ...