OpenSSH由於其相對較大,通常不太適用於嵌入式平臺,多用於PC或者服務器的Linux版本中。
Dropbear是一個相對較小的SSH服務器和客戶端。它運行在一個基於POSIX的各類平臺。 Dropbear是開源軟件,在麻省理工學院式的許可證。 Dropbear是特別有用的「嵌入」式的Linux(或其餘Unix)系統,如無線路由器。(一個完整的openssh大小有7M左右)。html
- 嵌入式Linux平臺: ARM 9
- 嵌入式Linux系統: TinaLinux 3.4.39
- 宿主系統: Ubuntu 16.04.4 LTS
- SSH程序: dropbear 2016.74
軟件下載地址:vim
- zlib : http://www.zlib.net/ (PS:博主用的1.2.8版本)
- dropbear : http://matt.ucc.asn.au/dropbear/releases/ (PS:博主用的2016.74, 2018.76版本有bug,慎用,不怕死的能夠試試)
- 若果想要總體編譯好的(包含源文件),請 點擊這裏
由於須要在宿主機上編譯嵌入式arm的東西,因此編譯器應該是arm的。
此處編譯,包括兩個部分:zlib和dropbear。dropbear依賴zlib的庫,因此必須先編譯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交叉編譯成功!!ssh
- 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交叉編譯成功!!工具
- 將/usr/local/dropbear/bin/移植到板卡的/usr/bin/下;
- 將/usr/local/dropbear/sbin/下的文件都複製到板卡的/usr/sbin/目錄下
而後去板卡上執行以下操做:.net
cd /etc mkdir dropbear //這個名字是固定的,千萬不可變更 cd dropbear dropbearkey -t rsa -f dropbear_rsa_host_key dropbearkey -t dss -f dropbear_dss_host_key
既然弄好了dropbear,咱們確定是但願它能夠開機啓動嘍,誰也不肯意每次開機在手動去啓動這個東西吧!!!code
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
由於SSH要求必須有密碼,因此,若是板卡上能夠增長新用戶,則能夠直接增長一個新的用戶:htm
useradd admin passwd admin
可是個人板卡不容許創建其它用戶,只能給root賦密碼了,否則SSH沒法登錄blog
- 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/文件中,這個目錄名稱是固定死的,不可更改