嵌入式Linux安裝Dropbear SSH server


0. 背景

OpenSSH因為其相對較大,一般不太適用於嵌入式平台,多用於PC或者服務器的Linux版本中。
Dropbear是一個相對較小的SSH服務器和客戶端。它運行在一個基於POSIX的各種平台。 Dropbear是開源軟件,在麻省理工學院式的許可證。 Dropbear是特別有用的“嵌入”式的Linux(或其他Unix)系統,如無線路由器。(一個完整的openssh大小有7M左右)。

參考:https://matt.ucc.asn.au/dropbear/dropbear.html

1. 平台

  • 嵌入式Linux平台: ARM 9
  • 嵌入式Linux系統: TinaLinux 3.4.39
  • 宿主系統: Ubuntu 16.04.4 LTS
  • SSH程序: dropbear 2016.74

軟件下載地址:

2. 交叉編譯

因為需要在宿主機上編譯嵌入式arm的東西,所以編譯器應該是arm的。
此處編譯,包括兩個部分:zlib和dropbear。dropbear依賴zlib的庫,所以必須先編譯zlib才可以。

2.1 zlib編譯

  • 1). 解壓zlib:
tar -zxvf zlib1.2.8.tar.gz -C /usr/local/zlib/src   (此處目錄根據自己情況定義)
  • 2). 進入zlib的解壓目錄
cd /usr/local/zlib/src
  • 3). 配置zlib
./configure --prefix=/usr/local/zlib  (即將zlib的庫生成到該目錄下)  
  • 4). 上面步驟做完,將會生成Makefile,vim進去,修改Makefile
CC=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc  //你交叉編譯工具的絕對路徑  
AR=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc-ar  
RANLIB=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc-ranlib    
LDSHARED=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc -shared   -Wl,-soname,libz.so.1,--version-script,zlib.map   //(我只是將原來的gcc改成了我自己的編譯工具,后面的參數沒動過)
  • 5). 執行make
  • 6). 執行make install

完成以上步驟,你去/usr/local/zlib目錄下看,會發現多了幾個目錄,代表zlib交叉編譯成功!!

mark

2.2 dropbear編譯

  • 1). 解壓dropbear:
tar -jxvf dropbear-2016.74.tar.bz2 -C /usr/local/dropbear/src   //(此處目錄根據自己情況定義)
  • 2). 進入dropbear的解壓目錄
cd /usr/local/dropbear/src
  • 3). 配置dropbear
./configure --prefix=/usr/local/dropbear  --with-zlib=/usr/local/zlib/ CC=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc --host=arm  //(根據自己的情況修改)
  • 4). 上面步驟做完,Makefile內的CC會自動修改掉,不用再人為修改Makefile了
  • 5). 執行make
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" 
  • 6). 執行make install
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
  • 7). 注意,因為默認不編譯scp,PROGRAMS=xxx是強制編譯出scp來,不這樣干也可以,但是需要自己生成scp:
make scp  
cp scp /usr/local/dropbear

完成以上步驟,你去/usr/local/dropbear目錄下看,會發現多了幾個目錄,代表dropbear交叉編譯成功!!

mark

3. 移植到開發板

  • 將/usr/local/dropbear/bin/移植到板卡的/usr/bin/下;
  • 將/usr/local/dropbear/sbin/下的文件都復制到板卡的/usr/sbin/目錄下

然后去板卡上執行如下操作:

cd /etc
mkdir dropbear      //這個名字是固定的,千萬不可變動
cd dropbear
dropbearkey -t rsa -f dropbear_rsa_host_key
dropbearkey -t dss -f dropbear_dss_host_key

4. 嵌入式系統配置

既然弄好了dropbear,我們肯定是希望它可以開機啟動嘍,誰也不願意每次開機在手動去啟動這個東西吧!!!

4.1 開機啟動步驟:

cd /etc/init.d/
touch dropbear_autorun

//將下面內容加入到dropbear_autorun文件
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org

START=99
start() {
        cd /usr/sbin/
        ./dropbear
        cd -
}

//然后將該文件鏈接到rc.d中
cd /etc/rc.d/
ln -s ../init.d/dropbear_autorun S99dropbear

4.2 新建賬號或者給root設置密碼

因為SSH要求必須有密碼,所以,如果板卡上可以增加新用戶,則可以直接增加一個新的用戶:

useradd admin
passwd admin

但是我的板卡不允許建立其它用戶,只能給root賦密碼了,不然SSH無法登陸

5. 問題

  • 1). 如果其它主機scp、ssh到板卡有問題,你可以嘗試着將文件在/usr/sbin/ 、 /usr/bin/ 和/sbin/ 目錄下移動,然后再次試驗,看是否有同樣問題發生 (我不會告訴你我卡在這個問題上好久的)
  • 2). scp需要移植到/usr/bin/下,不然可能其它主機無法scp推送文件到本板卡中,出現以下錯誤:
-ash: scp: not found
lost connection
  • 3). 板卡中執行dropbear沒反應

原因1:沒有執行dropbearkey, 或者執行了沒生成key文件
原因2:key文件不在/etc/dropbear/文件中,這個目錄名稱是固定死的,不可更改


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM