嵌入式Linux安装Dropbear SSH server
0. 背景
OpenSSH因为其相对较大,一般不太适用于嵌入式平台,多用于PC或者服务器的Linux版本中。
Dropbear是一个相对较小的SSH服务器和客户端。它运行在一个基于POSIX的各种平台。 Dropbear是开源软件,在麻省理工学院式的许可证。 Dropbear是特别有用的“嵌入”式的Linux(或其他Unix)系统,如无线路由器。(一个完整的openssh大小有7M左右)。
1. 平台
- 嵌入式Linux平台: ARM 9
- 嵌入式Linux系统: TinaLinux 3.4.39
- 宿主系统: Ubuntu 16.04.4 LTS
- SSH程序: dropbear 2016.74
软件下载地址:
- zlib : http://www.zlib.net/ (PS:博主用的1.2.8版本)
- dropbear : http://matt.ucc.asn.au/dropbear/releases/ (PS:博主用的2016.74, 2018.76版本有bug,慎用,不怕死的可以试试)
- 若果想要整体编译好的(包含源文件),请 点击这里
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的更多相关文章
- 【转载】嵌入式 Linux 移植 Dropbear SSH server
0. 背景 OpenSSH因为其相对较大,一般不太适用于嵌入式平台,多用于PC或者服务器的Linux版本中. Dropbear是一个相对较小的SSH服务器和客户端.它运行在一个基于POSIX的各种 ...
- Linux下设置SSH Server设置时间链接限制
OpenSSH基于安全的理由,如果用户连线到SSH Server后闲置一段时间,SSH Server会在超过特定时间后自动终止SSH连线.本人习惯长时间连接,需要做如下修改: 1.打开ssh配置文件: ...
- 为基于busybox根文件系统的ARM嵌入式Linux交叉编译dropbear使能SSH
原创作品,允许转载,转载时请务必以超链接形式标明文章.作者信息和本声明,否则将追究法律责任. 最近使用busybox为基于ARM的板卡定制了一个极简单的根文件系统,由于busybox仅支持telnet ...
- 嵌入式Linux下BOA网页server的移植
**************************************************************************************************** ...
- 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 ...
- Linux第一天 ssh登录和软件安装详解
Linux学习第一天 操作环境: Ubuntu 16.04 Win10系统,使用putty_V0.63 本身学习Linux就是想在服务器上使用的.实际情况,可能我很难直接到坐在服务器前,使用界面操作系 ...
- 基于 Dropbear & Zlib 搭建轻量级的ssh server
[目的] 移植dropbear & zlib 在AM335X开发板上搭建轻量级的ssh server [环境] 1. Ubuntu 16.04发行版 2. MC183平台 3. 交叉编译 ...
- Home Assistant 安装Samba和SSH server 插件
安装 Samba 插件 Samba 是 SMB/CIFS 网络协议的重新实现, 它作为 NFS 的补充使得在 Linux 和 Windows 系统中进行文件共享.打印机共享更容易实现. Smaba 服 ...
- Linux上安装使用SSH
參考博客:http://blog.csdn.net/xqhrs232/article/details/50960520 Ubuntu安装使用SSH ubuntu默认并没有安装ssh服务,如果通过ssh ...
随机推荐
- Android-WebView加载网页(new WebView(this)方式)
之前的博客,都是 findViewById(R.id.webview);,来得到WebView, 此博客使用 new WebView(this)方式; AndroidManifest.xml中配置网络 ...
- JVM中的新生代、老年代和永生代
1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我 ...
- 数据单位bit byte kb Mb Gb
8 bit = 1 byte 2^10 bytes = 1 kb 2^10 kb = 1 Mb 2^10 Mb = 1Gb 2^32 bit = 2^2 * 2^10 * 2^10 * 2^10 bi ...
- Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明2
1. 安装build-essentials 安装开发所需要的一些基本包 sudo apt-get install build-essential 2. 安装NVIDIA驱动 (3.4.0) 2.1 准 ...
- nginx 访问频率控制
Nginx访问频率控制 HTTP服务器的吞吐率(单位时间吞吐量)通常有一个上限,尤其是普通配置的机器,在带宽够的情况下,用压测工具经常能把服务器压出翔,为了线上环境稳定性,防止恶意攻击影响到其他用户, ...
- 路由其实也可以很简单-------Asp.net WebAPI学习笔记(一)
MVC也好,WebAPI也好,据我所知,有部分人是因为复杂的路由,而不想去学的.曾经见过一位程序猿,在他MVC程序中,一切皆路由,url中是完全拒绝"?"和“&”.对此,我 ...
- 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画
[源码下载] 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画 作者:webabcd 介绍背水一战 Windows 10 之 控件(导航类) Frame 动画 示例An ...
- [ZJOI2010]基站选址(线段树优化dp)
坑待填. \(Code\ Below:\) #include <bits/stdc++.h> #define lson (rt<<1) #define rson (rt< ...
- 设计模式《JAVA与模式》之状态模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为 ...
- [原创]K8一句话密码爆破工具{秒破10万} 支持ASP/PHP/ASPX/JSP/CFM/DIY
工具: K8_FuckOneShell 20161224编译: VS2012 C# (.NET Framework v4.0)组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http ...