以下基于 Dropbear 實現 SSH 服務端與客戶端交互的完整步驟,涵蓋服務端部署、客戶端連接、認證配置及消息傳輸,結合了多篇權威資料的核心實踐:
- 環境準備與安裝
服務端安裝
? 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
- 服務端配置
生成主機密鑰
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 禁用密碼認證
- 客戶端配置與登錄
認證方式選擇
方式 配置步驟
密碼認證 服務端需啟用 -m 參數;客戶端直接輸入密碼
公鑰認證 🔑 更安全,需生成密鑰對并上傳公鑰至服務端
公鑰認證配置
- 生成密鑰對(客戶端執行):
ssh-keygen -t ed25519 -f ~/.ssh/dropbear_key # 推薦 ed25519
- 上傳公鑰至服務端:
ssh-copy-id -i ~/.ssh/dropbear_key.pub user@server_ip -p 2222
或手動追加公鑰到服務端 ~/.ssh/authorized_keys
- 登錄服務端:
使用 dbclient(Dropbear 客戶端)
dbclient -y -i ~/.ssh/dropbear_key user@server_ip -p 2222
使用 OpenSSH 客戶端
ssh -i ~/.ssh/dropbear_key user@server_ip -p 2222
- 客戶端向服務端發送消息
SSH 會話建立后,可通過以下方式傳輸數據:
- 交互式 Shell 命令
登錄后直接輸入命令,服務端執行后返回結果:
echo “Hello from client” > server_message.txt # 服務端創建文件
- 非交互式單命令執行
ssh -p 2222 user@server_ip “cat > /tmp/client_msg.txt” < local_msg.txt
- SCP 文件傳輸
scp -P 2222 message.txt user@server_ip:/home/user/
- 安全優化建議
? 禁用密碼登錄:編輯服務端配置,添加 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 服務,并完成安全消息傳輸。對于嵌入式場景,重點確保交叉編譯兼容性與存儲優化;服務器環境則側重權限與網絡隔離。