ssh(3)dropbear ssh套件编译安装
Dropbear 是一个相对较小的开源 SSH (Secure Shell) 服务器和客户端。它设计用于在内存和处理器资源有限的环境中替代标准的 OpenSSH,例如嵌入式系统。
dropbear
主要特点:
- 体积小巧: 这是 Dropbear 最显著的特点。它的设计目标是占用尽可能少的内存和磁盘空间,使其非常适合资源受限的设备。
- 兼容性: Dropbear 实现了完整的 SSH 版本 2 协议(不兼容ssh v1),并且与 OpenSSH 客户端兼容。
- 功能可裁剪: 在编译时,可以轻松禁用不需要的功能,进一步减小其体积。
- 支持常用功能: 尽管体积小,Dropbear 仍然支持许多常用的 SSH 功能,例如:
- 公钥认证 (
~/.ssh/authorized_keys
) - 密码认证
- X11 转发
- 认证代理转发
- 端口转发
- SCP (通过单独的
dbclient
命令)
- 公钥认证 (
- 多合一二进制文件: 服务器、客户端、密钥生成器和密钥转换器可以编译成一个单独的二进制文件,类似于 BusyBox,以节省空间。
- 可作为独立服务或通过 inetd 运行。
- 支持静态链接。
主要用途:
- 嵌入式系统: 这是 Dropbear 最主要的应用场景。它常用于无线路由器、网络摄像头、物联网 (IoT) 设备和其他资源有限的嵌入式 Linux 或其他 Unix 系统。
- 内存受限的环境: 在任何需要 SSH 功能但内存资源紧张的环境中,Dropbear 都是一个不错的选择。
- 最小化安装: 对于只需要基本 SSH 功能的最小化 Linux 系统,Dropbear 可以提供必要的安全性,而不会占用过多资源。
与 OpenSSH 的比较:
与功能更全面的 OpenSSH 相比,Dropbear 在功能上有所精简,但其核心优势在于极小的资源占用。如果你的设备或环境对资源非常敏感,并且只需要基本的 SSH 功能,那么 Dropbear 是一个非常好的选择。如果需要更高级的功能,例如 SFTP 或更复杂的认证机制,那么 OpenSSH 可能更适合。
总而言之,Dropbear 是一款轻量级但功能实用的 SSH 服务器和客户端,特别适用于资源受限的嵌入式系统。
编译安装
- https://github.com/mkj/dropbear/blob/master/SMALL.md
- https://github.com/mkj/dropbear/blob/master/MULTI.md
env
- centos7.x
1. 下载Dropbear源代码
首先,你需要从Dropbear官方网站或其镜像下载最新的源代码包。例如:
1 | wget https://matt.ucc.asn.au/dropbear/releases/dropbear-2024.85.tar.bz2 |
(截至2025年3月20日,最新版本可能是2024.85或其他更高版本,请根据实际情况替换URL中的版本号。)
2. 解压源代码
下载完成后,解压文件:
1 | tar -xjf dropbear-2024.85.tar.bz2 |
3.编译依赖安装
yum install -y gcc gcc-c++ make zlib-devel
4. 配置编译环境
在编译前,需要运行configure
脚本来自定义安装路径和选项。基本的配置命令如下:
1 | ./configure --prefix=/usr/local/dropbear --sysconfdir=/etc/dropbear |
--prefix
:指定安装目录,这里设为/usr/local/dropbear
。--sysconfdir
:指定配置文件目录,这里设为/etc/dropbear
。
可选配置
如果你在嵌入式系统上使用Dropbear,可以根据需求调整选项,例如禁用某些功能以减小二进制文件大小:
--disable-zlib
:禁用压缩支持。--disable-syslog
:禁用系统日志支持。--disable-lastlog
:禁用最后登录记录。
示例:
1 | ./configure --prefix=/usr/local/dropbear --sysconfdir=/etc/dropbear --disable-zlib --disable-syslog |
如果需要交叉编译(例如为ARM设备编译),需指定交叉编译器:
1 | export CC=arm-linux-gnueabihf-gcc |
5. 编译Dropbear
配置完成后,编译Dropbear及其工具:
1 | make -j2 -s |
PROGRAMS
指定要编译的程序:dropbear
:SSH服务器。dbclient
:SSH客户端。dropbearkey
:密钥生成工具。dropbearconvert
:密钥格式转换工具。scp
:安全文件拷贝工具。
如果需要静态链接二进制文件(适用于嵌入式系统无动态库环境),可以加上STATIC=1
:
1 | make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" STATIC=1 |
6. 安装Dropbear
编译完成后,安装到指定目录:
1 | sudo make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install |
安装完成后,二进制文件会出现在/usr/local/dropbear/bin
和/usr/local/dropbear/sbin
中。
dropbear
[root@vgt-centos7-51 dropbear-2024.85]# /usr/local/dropbear/sbin/dropbear --help
Invalid option --
Dropbear server v2024.85 https://matt.ucc.asn.au/dropbear/dropbear.html
Usage: /usr/local/dropbear/sbin/dropbear [options]
-b bannerfile Display the contents of bannerfile before user login
(default: none)
-r keyfile Specify hostkeys (repeatable)
defaults:
- rsa /etc/dropbear/dropbear_rsa_host_key
- ecdsa /etc/dropbear/dropbear_ecdsa_host_key
- ed25519 /etc/dropbear/dropbear_ed25519_host_key
-R Create hostkeys as required
-F Don't fork into background #### 前台运行
-e Pass on server process environment to child process
-E Log to stderr rather than syslog
-m Don't display the motd on login
-w Disallow root logins #### 禁止root登录
-G Restrict logins to members of specified group
-s Disable password logins #### 禁止密码认证
-g Disable password logins for root #### 禁止root密码登录
-B Allow blank password logins
-t Enable two-factor authentication (both password and public key required)
-T Maximum authentication tries (default 10)
-j Disable local port forwarding
-k Disable remote port forwarding
-a Allow connections to forwarded ports from any host
-c command Force executed command
-p [address:]port
Listen on specified tcp port (and optionally address),
up to 10 can be specified
(default port is 22 if none specified)
-P PidFile Create pid file PidFile
(default /var/run/dropbear.pid)
-l <interface>
interface to bind on
-i Start for inetd
-W <receive_window_buffer> (default 24576, larger may be faster, max 10MB)
-K <keepalive> (0 is never, default 0, in seconds)
-I <idle_timeout> (0 is never, default 0, in seconds)
-z disable QoS
-V Version
7. 生成主机密钥
Dropbear需要主机密钥才能运行。创建密钥存储目录并生成密钥:
1 | sudo mkdir -p /etc/dropbear |
-t rsa
:生成RSA密钥。-t dss
:生成DSS密钥(可选,部分系统可能需要)。
8. 启动Dropbear服务
手动启动Dropbear服务器:
1 | sudo /usr/local/dropbear/sbin/dropbear -F -E |
-F
:不后台运行,方便调试。-E
:将日志输出到标准错误。
若要更改默认端口(22),可以用-p
选项,例如监听2222端口:
1 | sudo /usr/local/dropbear/sbin/dropbear -F -E -p 2222 |
9. 配置开机自启(可选)
若需开机自启,可以根据系统类型配置:
Systemd系统(如Ubuntu):
创建/etc/systemd/system/dropbear.service
:1
2
3
4
5
6
7
8
9
10[Unit]
Description=Dropbear SSH Server
After=network.target
[Service]
ExecStart=/usr/local/dropbear/sbin/dropbear -F -p 22
Restart=always
[Install]
WantedBy=multi-user.target启用服务:
1
2
3sudo systemctl daemon-reload
sudo systemctl enable dropbear
sudo systemctl start dropbear嵌入式系统:根据具体init系统(如SysV或OpenRC)添加启动脚本。
10. 测试连接
使用Dropbear自带的dbclient
或OpenSSH客户端测试:
1 | /usr/local/dropbear/bin/dbclient -p 22 user@hostname |
或:
1 | ssh -p 22 user@hostname |
注意事项
- 权限:确保
/etc/dropbear
及其密钥文件只有root可写。 - 防火墙:如果更改了端口,需在防火墙中开放对应端口(如
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
)。 - 调试:若连接失败,检查日志输出或用
strace
跟踪问题。