Linux交叉編譯dropbear使能SSH

2021-08-26 14:58:39 字數 2612 閱讀 4325

最近專案需要用到armv8 cpu的嵌入式精簡的檔案系統,但是busybox生成的檔案系統只支援telnet,不支援ssh連線,而openssh的庫又很大,不符合精簡檔案系統,想到了輕量級的dropbear,下面就編譯dropbear的步驟和遇到的問題進行一下說明。

目標環境: nxp的armv8

交叉編譯鏈:aarch64-fsl-linux-gcc

涉及到的lib庫:

libz.so.1.2.8、libutil-2.20-2014.11.so、libcrypt-2.20-2014.11.so

由於本人交叉編譯鏈已經有相應的庫,這裡就不在對相應庫的交叉編譯進行說明了,如果交叉編譯鏈中沒有以上庫請先自行編譯。

將dropbear-2016.74.tar.bz2放到/home/freescale/test,解壓縮dropbear

tar -xvf dropbear-2016.74.tar.bz2
進入dropbear目錄,配置dropbear                 

cd dropbear-2016.74

./configure --prefix=/home/freescale/test/build/dropbear

修改生成的makefile                 

cc=aarch64-fsl-linux-gcc(根據所使用的交叉工具鏈修改)

ar=aarch64-fsl-linux-ar

ranlib=aarch64-fsl-linux-ranlib

編譯並安裝

make

make scp

make install

拷貝scp到安裝目錄

cp scp /home/freescale/test/build/dropbear/bin
strip所有的可執行檔案             

aarch64-fsl-linux-strip /home/freescale/test/build/dropbear/bin/*

aarch64-fsl-linux-strip /home/freescale/test/build/dropbear/sbin/*

把所有bin目錄和sbin目錄檔案拷貝到精簡檔案系統對應的bin和sbin目錄中,拷貝上述涉及到的lib庫到精簡檔案系統的lib目錄,建立dropbear配置目錄,並生成金鑰

mkdir /etc/dropbear

cd /etc/dropbear

dropbearkey -t rsa -f dropbear_rsa_host_key

dropbearkey -t dss -f dropbear_dss_host_key

ln -s /bin/dbclient /bin/ssh

ln -s /lib/libz.so.1.2.8 /lib/libz.so.1

ln -s /lib/libutil-2.20-2014.11.so /lib/libutil.so.1

ln -s /lib/libcrypt-2.20-2014.11.so /lib/libcrypt.so.1

dropbear即為服務端,dbclient即為客戶端,新增系統啟動服務

vi /etc/init.d/rcs

新增/usr/sbin/dropbear

到此處dropbear準備工作已經完畢,重啟系統後,用pc通過ssh遠端登入

如果是正常檔案系統應該不會出現問題,但是筆者是自己做的精簡檔案系統,用ssh登入後,ssh要求輸入使用者名稱、密碼的介面出來了,發現輸入使用者名稱、密碼之後一直提示密碼錯誤。可以確定的是使用者名稱和密碼是一定沒有輸錯的。

而將dropbear前台啟動: /usr/bindropbear -e -f 發現單板一直列印不存在的使用者登入

原來是linux認證搞得鬼,此問題需要兩個檔案:

vi /etc/shells

新增/bin/sh

/bin/bash

/bin/bash64

/bin/ash

/bin/bsh

/bin/tcsh

/bin/csh

/bin/ksh

/bin/zsh

ln -s /lib/libnss_files-2.20-2014.11.so /lib/libnss_files.so.2
此問題的詳細說明請參考:

show下xz壓縮後的ext4 ramdisk精簡檔案系統大小:僅有2.6m

linux 核心交叉編譯

我使用執行make menuconfig配置核心。使用之前,先執行make mrproper,該命令會刪除核心源 中的.config檔案和.o檔案保證源 的乾淨。在執行make menuconfig時,這裡面會涉及到幾個資料夾 linux核心根目錄下的scripts資料夾 arch arch kco...

Linux之交叉編譯

交叉編譯 在乙個平台上生成另乙個平台的可執行 編譯 是在乙個平台上生成該平台的可執行程式 為什麼要交叉編譯 有的平台上不允許或者不能夠安裝我們所需要的編譯器比如c51。因為目的平台上的資源匱乏,無法執行我們所需要的編譯器。樹莓派是不是就不需要交叉編譯?錯。也要,樹莓派有時又是因為目的平台還沒建立,連...

Linux中交叉編譯libiio

1 toolchainfile.cmake 交叉編譯libiio,需要使用到cmake。而根據參考資料 1 中有關交叉編譯的說明,cmake此時需要乙個toolchainfile.cmake檔案 改為其它名字也行 根據參考資料 2 的說明,編輯toolchainfile.cmake的內容如下 thi...