移植Open SSH到DM368 IPNC中 linux arm ssh

我一直在尋找這樣的一個ipnc模組:通用的38板,TI方案,並且開放了系統串口。

可惜不是沒有開發串口,就是非TI方案的,我覺得有這樣的一個板子,可以做很多事情,一是這樣的板子很便宜1080p dm368的才350左右,二是自己可以開發一些特定的程序在板子裏運行。我覺得這樣的需求應該是很多的,有時候 常規的ipc並不能滿足需要。

後來我問一家小板的廠家,沒有串口你們怎麼調試程序的。他們說不用串口,用telnet,通過網絡調試。這麼一說倒是提醒我了,幹嘛用telnet,爲什麼不用ssh。

所以決定在我的ipnc中添加ssh,只是網絡文件系統可能要增大六七兆的空間。

用開源的OpenSSH,還需要連個依賴庫ssl和zlib

下載地址

openssh  http://www.openssh.com/portable.html

openssl   http://www.openssl.org/source

zlib             http://www.zlib.net/

下載最新版本的好了,跟新比較快的。

1/將上述源碼解壓到一個文件夾下(隨便一個文件,但注意,不能是在window上被linux共享的目錄裏,因爲創建軟連接的時候會失敗)

mkdir -p /root/ssh/source

tar -xvzf ......


2/新建一個安裝目錄

mkdir -p /root/ssh/install


3/zlib

配置

./configure --prefix=/root/ssh/install/zlib

修改makefile,也就是設置交叉編譯工具

將gcc 改成 arm_v5t_le-gcc arm_v5t_le-ar  等等,只要涉及到編譯工具的地方都添加前綴就好了

然後

make

在然後

make install


4/ssl

配置

./Configure --prefix=/root/ssh/install/ssl  os/compiler:arm-linux-gcc

然後

make

再然後

make install


5/ssh

zlib和ssl編譯安裝後就可以編譯ssh了

配置

./configure --host=arm-linux --with-libs --with-zlib=/root/ssh/install/zlib --with-ssl-dir=/root/ssh/install/ssl --disable-etc-default-login CC=arm_v5t_le-gcc AR=arm_v5t_le-ar

然後

make

注意,這裏就不要make install了,上述編譯一般來說是不會出現錯誤的,如果有,請檢查設置的目錄是不是絕對目錄,不要出現"."或者".."等


以上ssh就編譯好了,下面需要將相應的文件複製到目標文件系統中,然後配置一些文件,ssh就可以使用了

1、在目標文件系統 /usr/local 中新建必要的文件加

cd usr/local

mkdir bin sbin etc libexec

cd var
mkdir -p /var/run
mkdir -p /var/empty/sshd

2、進入剛剛編譯好的ssh源碼中複製必要的文件

cd /root/ssh/source/ssh

cp scp  sftp  ssh  ssh-add  ssh-agent  ssh-keygen  ssh-keyscan target/usr/local/bin    (注:其實只留下scp和ssh就好了,其他都可以不要,scp實現遠程機與本機之間的文件複製,比較方便)

cp sshd /usr/local/sbin
cp moduli  ssh_config  sshd_config  target/usr/local/etc

cp sftp-server  ssh-keysign  target/usr/local/libexec

3、進入target/usr/local/bin中執行下列命令

ssh-keygen -t rsa1 -f ssh_host_key -N ""
ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
ssh-keygen -t dsa -f ssh_host_dsa_key -N ""

並且將上述命令產生的所有文件複製到 target/usr/local/etc目錄下

4、將主機上 /etc/目下的 passwd, shadow, group 三個文件copy到目標板的 /etc目錄下, 同時記得將passwd的所有後面的  /bin/bash 該爲 /bin/sh 
刪除不需要的一些用戶。(注意,必要要有密碼的用戶,一般留下有密碼的root用戶,其他的都刪掉好了)

在target/etc/passwd 中添加下面這一行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin


至此,ssh就OK了

在目標板上運行ssh

/usr/local/sbin/sshd

會提示一個錯誤:

Could not load host key: /usr/local/etc/ssh_host_ecdsa_key

不要緊,忽略。ps命令一下,查看sshd是否在運行


測試:

在主機上

ssh [email protected]

幾秒之後提示輸入密碼,輸入正確的密碼後就成功連接了!

[root@localhost ~]# ssh [email protected]
[email protected]'s password: 


Welcome to MontaVista(R) Linux(R) Professional Edition 5.0.0 (0702774).

# 

上述紅色標註的是arm中必要的文件,其他都可以不要,節省flash空間



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章