- 核心概念:
dropbear服务器 vs. 客户端 - 服务器端 (
dropbear):如何启动和管理 Dropbear SSH 服务器 - 客户端 (
dbclient或dropbearclient):如何使用 Dropbear 连接到其他 SSH 服务器 - 常用配置文件 (
dropbearmulti):如何编译一个包含所有功能的单一可执行文件 - 配置文件 (
dropbearconfig):服务器的核心配置 - 实用技巧和示例
核心概念
要区分 dropbear 的两个主要角色:

- Dropbear SSH 服务器 (
dropbear):在你的设备上运行,允许其他客户端通过 SSH 连接进来,这通常是你在路由器或嵌入式设备上安装并启动的服务。 - Dropbear SSH 客户端 (
dbclient):在你的设备上运行,用于连接到其他任何兼容 SSH 的服务器(无论是 OpenSSH 还是 Dropbear),当你在一个资源受限的系统上需要 SSH 出去时,就使用它。
注意:
dropbear的客户端程序通常名为dbclient,但在某些安装包中也可能创建一个名为dropbearclient或ssh的符号链接,以便与标准的 OpenSSH 客户端命令兼容。
服务器端 (dropbear)
这部分命令用于在你的设备上配置和运行 Dropbear SSH 服务器。
启动 Dropbear 服务器
最简单的启动方式:
dropbear
默认情况下,它会:

- 监听在 22 端口。
- 使用
/etc/dropbear/dropbear_rsa_host_key作为默认的 RSA 主机密钥。 - 使用
/etc/dropbear/dropbear_dss_host_key作为 DSS 主机密钥(现代系统通常不需要)。 - 允许 root 用户登录(注意安全风险,详见配置部分)。
常用启动选项
| 选项 | 描述 | 示例 |
|---|---|---|
-p <port> |
指定监听端口,可以多次使用来监听多个端口。 | dropbear -p 2222 |
-F |
前台运行,不作为守护进程运行,方便调试。 | dropbear -F |
-E |
将日志输出到 stderr,与 -F 一起使用时很有用。 |
dropbear -F -E |
-b <banner> |
连接建立后显示的横幅文件内容。 | dropbear -b /etc/issue.net |
-r <keyfile> |
仅使用指定的主机密钥文件。 | dropbear -r /etc/ssh/ssh_host_ed25519_key |
-R |
禁用密码登录,强制使用公钥认证。(强烈推荐用于生产环境) | dropbear -R |
-s |
禁用密码登录(同 -R)。 |
dropbear -s |
-g |
禁用 root 登录。(提高安全性) | dropbear -g |
-w |
禁用 root 登录(同 -g)。 |
dropbear -w |
-K <seconds> |
设置保持连接的心跳间隔(秒)。 | dropbear -K 60 |
-I <seconds> |
设置空闲超时时间(秒),超时后断开连接。 | dropbear -I 300 |
综合示例: 在一个嵌入式设备上,以非 root 用户身份运行,监听 2222 端口,禁用 root 登录和密码登录,只允许密钥登录,并在前台运行以便调试:
dropbear -p 2222 -g -s -F -E
停止 Dropbear 服务器
由于 dropbear 通常作为守护进程运行,最可靠的方式是使用它的 kill 信号。
-
找到
dropbear的进程 ID (PID):ps | grep dropbear # 或者 pidof dropbear
-
向 PID 发送
TERM信号来优雅地关闭它:
(图片来源网络,侵删)kill <PID> # kill 1234
客户端 (dbclient)
这部分命令用于从你的设备连接到远程的 SSH 服务器。
基本连接语法
dbclient [options] [user@]hostname
常用客户端选项
| 选项 | 描述 | 示例 |
|---|---|---|
-y |
自动接受远程服务器的主机密钥。(不安全,仅用于可信网络或一次性脚本) | dbclient -y user@192.168.1.1 |
-i <identity_file> |
指定用于身份验证的私钥文件。 | dbclient -i ~/.ssh/my_key user@host |
-p <port> |
指定连接的远程端口。 | dbclient -p 2222 user@host |
-l <user> |
指定登录用户名(如果与本地用户名不同)。 | dbclient -l admin user@host |
-W <receive_window_size> |
设置接收窗口大小,对慢速链路很有用。 | dbclient -W 32768 user@host |
-N |
不执行远程命令,仅保持连接,常用于端口转发。 | dbclient -N -L 8080:localhost:80 user@host |
-R |
远程端口转发。 | dbclient -R 8080:localhost:80 user@host |
-L |
本地端口转发(类似 OpenSSH 的 -L)。 |
dbclient -L 8080:remote_server:80 user@host |
综合示例:
使用特定的私钥文件,连接到 IP 为 168.1.100 的服务器,用户为 admin,端口为 2222:
dbclient -i ~/.ssh/id_ed25519 -p 2222 admin@192.168.1.100
常用配置文件 (dropbearmulti)
dropbear 的一个强大特性是 dropbearmulti,它是一个工具,可以将 dropbear、dbclient、dropbearkey、scp 和 dropbearconvert 等所有程序的功能编译进一个单一的可执行文件中。
这极大地节省了磁盘空间和内存,非常适合嵌入式设备。
使用 dropbearmulti
- 编译:你需要从
dropbear的源码编译dropbearmulti。 - 使用:编译完成后,你会得到一个名为
dropbearmulti的文件。- 要启动服务器:
./dropbearmulti dropbear - 要运行客户端:
./dropbearmulti dbclient user@host - 要生成密钥:
./dropbearmulti dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
- 要启动服务器:
配置文件 (dropbearconfig)
dropbear 也可以像 sshd 一样使用一个配置文件,这比每次启动时都输入命令行参数要方便得多。
- 配置文件路径:通常是
/etc/dropbear/dropbear.conf。 - 配置格式:每行一个选项,选项名与命令行参数名相同,但没有开头的破折号 。
/etc/dropbear/dropbear.conf 示例:
# 监听端口
Port 22
Port 2222
# 禁用 root 登录
RootLogin no
# 禁用密码登录,只允许密钥
PasswordAuth no
# 指定主机密钥文件
HostKey /etc/dropbear/dropbear_rsa_host_key
HostKey /etc/dropbear/dropbear_ecdsa_host_key
# 设置空闲超时为 10 分钟
IdleTimeout 600
当你创建了配置文件后,启动 dropbear 就非常简单了:
dropbear -c /etc/dropbear/dropbear.conf
实用技巧和示例
技巧1:为 Dropbear 生成主机密钥
如果你是第一次安装,需要手动生成主机密钥。
# 生成 RSA 密钥 (2048位) dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key # 生成更现代的 ECDSA 密钥 (256位) dropbearkey -t ecdsa -f /etc/dropbear/dropbear_ecdsa_host_key -s 256 # 查看生成的公钥内容(通常需要添加到 authorized_keys 文件中) dropbearkey -y -f /etc/dropbear/dropbear_rsa_host_key
技巧2:使用 Dropbear 进行 SCP 传输
dropbear 自带了一个 scp 实用程序,它通常被命名为 dropbearmulti.scp 或直接是 scp。
# 从远程服务器下载文件 scp -i ~/.ssh/my_key -P 2222 user@host:/path/to/remote/file /local/path # 上传文件到远程服务器 scp -i ~/.ssh/my_key -P 2222 /local/file user@host:/remote/path
注意这里的 -P(大写)用于指定端口,这是 scp 的标准用法。
技巧3:与 OpenSSH 的 authorized_keys 兼容
Dropbear 完全兼容 OpenSSH 的 authorized_keys 文件,你只需要将你的公钥(通常是 id_rsa.pub 或 id_ed25519.pub 的内容)追加到远程服务器上的 ~/.ssh/authorized_keys 文件中即可。
技巧4:连接时自动接受主机密钥(仅限可信环境)
如果你连接到一个可信的内网设备,且其 IP 地址固定,可以写一个简单的脚本来避免每次都输入 yes。
#!/bin/sh # auto_ssh.sh HOST="192.168.1.100" PORT="2222" USER="admin" KEY="$HOME/.ssh/my_key" # 第一次连接时,dbclient 会将主机密钥存入 ~/.ssh/known_hosts # 后续连接时会自动验证 dbclient -i "$KEY" -p "$PORT" "$USER@$HOST"
| 功能 | 命令 | 说明 |
|---|---|---|
| 启动服务器 | dropbear -p 2222 -g -s |
监听2222端口,禁用root和密码登录 |
| 停止服务器 | kill $(pidof dropbear) |
通过进程ID优雅关闭 |
| 连接客户端 | dbclient -i ~/.ssh/key user@host -p 2222 |
使用私钥连接到指定端口 |
| 生成密钥 | dropbearkey -t ecdsa -f keyfile |
生成ECDSA主机密钥 |
| 配置文件 | dropbear -c /etc/dropbear.conf |
从配置文件启动服务器 |
| SCP传输 | scp -P 2222 file user@host:/path |
使用dropbear的scp工具 |
希望这份详细的指南能帮助你全面掌握 dropbear 命令!
