菜鸟科技网

Dropbear命令如何快速使用与安全配置?

  1. 核心概念dropbear 服务器 vs. 客户端
  2. 服务器端 (dropbear):如何启动和管理 Dropbear SSH 服务器
  3. 客户端 (dbclientdropbearclient):如何使用 Dropbear 连接到其他 SSH 服务器
  4. 常用配置文件 (dropbearmulti):如何编译一个包含所有功能的单一可执行文件
  5. 配置文件 (dropbearconfig):服务器的核心配置
  6. 实用技巧和示例

核心概念

要区分 dropbear 的两个主要角色:

Dropbear命令如何快速使用与安全配置?-图1
(图片来源网络,侵删)
  • Dropbear SSH 服务器 (dropbear):在你的设备上运行,允许其他客户端通过 SSH 连接进来,这通常是你在路由器或嵌入式设备上安装并启动的服务。
  • Dropbear SSH 客户端 (dbclient):在你的设备上运行,用于连接到其他任何兼容 SSH 的服务器(无论是 OpenSSH 还是 Dropbear),当你在一个资源受限的系统上需要 SSH 出去时,就使用它。

注意dropbear 的客户端程序通常名为 dbclient,但在某些安装包中也可能创建一个名为 dropbearclientssh 的符号链接,以便与标准的 OpenSSH 客户端命令兼容。


服务器端 (dropbear)

这部分命令用于在你的设备上配置和运行 Dropbear SSH 服务器。

启动 Dropbear 服务器

最简单的启动方式:

dropbear

默认情况下,它会:

Dropbear命令如何快速使用与安全配置?-图2
(图片来源网络,侵删)
  • 监听在 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 信号。

  1. 找到 dropbear 的进程 ID (PID):

    ps | grep dropbear
    # 或者
    pidof dropbear
  2. 向 PID 发送 TERM 信号来优雅地关闭它:

    Dropbear命令如何快速使用与安全配置?-图3
    (图片来源网络,侵删)
    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,它是一个工具,可以将 dropbeardbclientdropbearkeyscpdropbearconvert 等所有程序的功能编译进一个单一的可执行文件中。

这极大地节省了磁盘空间和内存,非常适合嵌入式设备。

使用 dropbearmulti

  1. 编译:你需要从 dropbear 的源码编译 dropbearmulti
  2. 使用:编译完成后,你会得到一个名为 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.pubid_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 命令!

分享:
扫描分享到社交APP
上一篇
下一篇