基于dropbear实现嵌入式系统ssh服务端与客户端完整交互

以下基于 Dropbear 实现 SSH 服务端与客户端交互的完整步骤,涵盖服务端部署、客户端连接、认证配置及消息传输,结合了多篇权威资料的核心实践:


  1. 环境准备与安装

服务端安装

• Linux 系统(以 Ubuntu/CentOS 为例)

Ubuntu/Debian

sudo apt update && sudo apt install dropbear

CentOS

sudo yum install dropbear

• 嵌入式系统

需交叉编译(示例为 ARM 平台):

./configure --prefix=/opt/dropbear --host=arm-linux CC=arm-linux-gcc

make PROGRAMS="dropbear dbclient dropbearkey scp"

make install

将编译生成的 dropbear(服务端)、dbclient(客户端)等文件移植到目标设备的 /usr/bin 或 /usr/sbin。

客户端安装

• 服务端自带 dbclient,或安装 OpenSSH 客户端:

sudo apt install openssh-client # Ubuntu


  1. 服务端配置

生成主机密钥

Dropbear 需密钥文件才能启动,默认路径 /etc/dropbear/:

mkdir -p /etc/dropbear

dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048

dropbearkey -t ecdsa -f /etc/dropbear/dropbear_ecdsa_host_key

📌 注意:密钥类型需与客户端兼容(RSA/ECDSA 更安全)。

修改监听设置

编辑配置文件 /etc/default/dropbear(Ubuntu)或 /etc/sysconfig/dropbear(CentOS):

修改端口(避免与 OpenSSH 冲突)

DROPBEAR_PORT=2222

限制登录用户(可选)

DROPBEAR_EXTRA_ARGS="-s -w -g root" # 禁止 root 登录,仅允许指定用户

启动服务

sudo systemctl start dropbear # 系统服务

或手动启动(嵌入式环境常用)

dropbear -p 2222 -F -E -m # -F 前台运行,-E 输出日志,-m 禁用密码认证


  1. 客户端配置与登录

认证方式选择

方式 配置步骤

密码认证 服务端需启用 -m 参数;客户端直接输入密码

公钥认证 🔑 更安全,需生成密钥对并上传公钥至服务端

公钥认证配置

  1. 生成密钥对(客户端执行):

ssh-keygen -t ed25519 -f ~/.ssh/dropbear_key # 推荐 ed25519

  1. 上传公钥至服务端:

ssh-copy-id -i ~/.ssh/dropbear_key.pub user@server_ip -p 2222

或手动追加公钥到服务端 ~/.ssh/authorized_keys

  1. 登录服务端:

使用 dbclient(Dropbear 客户端)

dbclient -y -i ~/.ssh/dropbear_key user@server_ip -p 2222

使用 OpenSSH 客户端

ssh -i ~/.ssh/dropbear_key user@server_ip -p 2222


  1. 客户端向服务端发送消息

SSH 会话建立后,可通过以下方式传输数据:

  1. 交互式 Shell 命令

登录后直接输入命令,服务端执行后返回结果:

echo "Hello from client" > server_message.txt # 服务端创建文件

  1. 非交互式单命令执行

ssh -p 2222 user@server_ip "cat > /tmp/client_msg.txt" < local_msg.txt

  1. SCP 文件传输

scp -P 2222 message.txt user@server_ip:/home/user/


  1. 安全优化建议

• 禁用密码登录:编辑服务端配置,添加 DROPBEAR_EXTRA_ARGS="-s"。

• 防火墙限制:仅允许可信 IP 访问 SSH 端口。

• 空闲超时:添加 IdleTimeout 600 到配置,自动断开空闲会话。

• 日志监控:通过 tail -f /var/log/auth.log 跟踪登录尝试。


常见问题解决

• 连接拒绝:检查服务端是否监听端口 netstat -tuln | grep 2222,确认防火墙规则。

• 密钥认证失败:确保服务端 ~/.ssh/authorized_keys 权限为 600,属主正确。

• 嵌入式设备存储不足:删除未使用的程序(如 dropbearconvert),精简二进制文件。

💡 提示:完整日志可通过 journalctl -u dropbear 或启动时加 -E 参数查看。若需更复杂功能(如端口转发),参考 Dropbear 手册 。

通过以上步骤,你已实现基于 Dropbear 的轻量级 SSH 服务,并完成安全消息传输。对于嵌入式场景,重点确保交叉编译兼容性与存储优化;服务器环境则侧重权限与网络隔离。

相关推荐
wdxylb1 小时前
云原生俱乐部-shell知识点归纳(1)
linux·云原生
飞雪20072 小时前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
路溪非溪2 小时前
关于Linux内核中头文件问题相关总结
linux
Lovyk5 小时前
Linux 正则表达式
linux·运维
Fireworkitte6 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9006 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char6 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
淮北也生橘128 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
华强笔记11 小时前
Linux内存管理系统性总结
linux·运维·网络
十五年专注C++开发12 小时前
CMake进阶: CMake Modules---简化CMake配置的利器
linux·c++·windows·cmake·自动化构建