当前位置: 首页 > news >正文

基于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 服务,并完成安全消息传输。对于嵌入式场景,重点确保交叉编译兼容性与存储优化;服务器环境则侧重权限与网络隔离。

http://www.lryc.cn/news/579911.html

相关文章:

  • 适用于 vue2、vue3 的自定义指定:v-int(正整数)
  • HDMI延长器 vs 分配器 vs KVM切换器 vs 矩阵:技术区别与应用场景
  • Django+DRF 实战:从异常捕获到自定义错误信息
  • VS中将cuda项目编译为DLL并调用
  • Excel 如何处理更复杂的嵌套逻辑判断?
  • Java并发性能优化|读写锁与互斥锁解析
  • openEuler 24.03 全流程实战:用 Ansible 5 分钟部署分布式 MinIO 高可用集群
  • 分布式集合通信--学习笔记
  • Data的时区格式BUG
  • 4 位量化 + FP8 混合精度:ERNIE-4.5-0.3B-Paddle本地部署,重新定义端侧推理效率
  • 【三维重建】【3DGS系列】【深度学习】3DGS的理论基础知识之高斯椭球的颜色表达
  • 替代MT6701,3D 霍尔磁性角度传感器芯片
  • Python 机器学习核心入门与实战进阶 Day 2 - KNN(K-近邻算法)分类实战与调参
  • PyTorch实战(14)——条件生成对抗网络(conditional GAN,cGAN)
  • vue-39(为复杂 Vue 组件编写单元测试)
  • MySQL分布式ID冲突详解:场景、原因与解决方案
  • FFmpeg、WebAssembly 和 WebGL 在 Web 端的结合应用
  • GO 语言学习 之 结构体
  • 【深度学习新浪潮】如何使用大模型等技术基于序列预测蛋白质的结构,功能和靶点?
  • 韩顺平之第九章综合练习-----------房屋出租管理系统
  • hive中2种常用的join方式
  • 基于 PyTorch 的猫狗图像分类实战
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(四十) -> 灵活定制编译选项
  • 判断文件是否有硬链接
  • 类图+案例+代码详解:软件设计模式----单例模式
  • 【基础算法】贪心 (二) :推公式
  • PHP:从入门到进阶的全面指南
  • SRE - - PV、UV、VV、IP详解及区别
  • Ubuntu安装ClickHouse
  • 基于探索C++特殊容器类型:容器适配器+底层实现原理