1. 程式人生 > >ARM交叉編譯搭建SSH-Server至目標板

ARM交叉編譯搭建SSH-Server至目標板

參考資料:

http://blog.chinaunix.net/u1/43047/showart_371372.html

http://blog.chinaunix.net/u/21948/showart.php?id=506254

步驟:

1.下載原始碼包,地址如下:

2.交叉編譯

在/work目下面建立ssh目錄
# mkdir /work/lib            ----〉共享庫目錄,通過nfs掛載
# mkdir /work/ssh           -----〉工作目錄
# cd  /work/ssh
# mkdir compressed install source  -----〉compressed 用於存放原始碼包
                                    Install    軟體安裝目錄
                                    Source    原始碼包解壓目錄
#mv tarpakgs/openssh-4.6p1.tar.gz  /work/ssh/compressed
#mv tarpakgs/openssl-0.9.8e.tar.gz  /work/ssh/compressed
#mv tarpakgs/zlib-1.2.3.tar.tar        /work/ssh/compressed

交叉編譯 zlib
# cd /work/ssh/compressed/
# tar xvf zlib-1.2.3.tar.tar  -C  ../source
# cd ../source/zlib-1.2.3
# ./configure --prefix=/work/ssh/install/zlib-1.2.3
# vim Makefile
CC=arm-9tdmi-linux-gnu-gcc
AR=arm-9tdmi-linux-gnu-ar rc
CPP =arm-9tdmi-linux-gnu-gcc -E
LDSHARED=arm-9tdmi-linux-gnu-gcc

# make
# make install

交叉編譯openssl
# cd /work/ssh/compressed/
# tar zxvf openssl-0.9.8e.tar.gz  -C  ../source
# cd ../source/openssl-0.9.8e
# ./Configure --prefix=/work/ssh/install/openssl-0.9.8e  os/compiler:arm-9tdmi-linux-gnu-gcc

# make
# make install

交叉編譯openssh
# cd /work/ssh/compressed
# tar zxvf openssh-4.6p1.tar.gz  –C ../source
# cd ../source/ openssh-4.6p1
#./configure --host=arm-9tdmi-linux-gnu --with-libs --with-zlib=/work/ssh/install/zlib-1.2.3 --with-ssl-dir=/work/ssh/install/openssl-0.9.8e --disable-etc-default-login CC=arm-9tdmi-linux-gnu-gcc AR=arm-9tdmi-linux-gnu-ar
注意:openssh不需要make

3.操作目標板

3.1在目標板上建立以下目錄:

/usr/local/bin/

/usr/local/sbin/

/usr/local/etc/

/usr/local/libexec/

/var/run/

/var/empty/

3.2從PC機上將以下檔案拷貝到目標板Linux系統中

PC機 /work/ssh/source/openssh-4.6p1/ 目錄下的
scp  sftp  ssh  ssh-add  ssh-agent  ssh-keygen  ssh-keyscan 拷貝到目標板  /usr/local/bin
moduli ssh_config sshd_config ssh_host_dsa_key ssh_host_dsa_key.pub ssh_host_key ssh_host_key.pub ssh_host_rsa_key ssh_host_rsa_key.pub 拷貝到目標板 /usr/local/etc
sftp-server  ssh-keysign 拷貝到目標板 /usr/local/libexec
sshd 拷貝到目標板 /usr/local/sbin/
PC機目錄 /work/ssh/install/zlib-1.2.3/lib/ 目錄下的 
libz.so.1.2.5 拷貝到目標板 /lib/目錄下,然後建立連線
ln -s libz.so.1.2.5 libz.so.1
注意:
1.動態連結庫檔案必須放在/lib/目錄下面;
2.libz.so.1.2.5是一個動態連線庫檔案,但是程式呼叫的時候使用的是libz.so.1這個名稱,所以要建立軟連結;
3.3生成Key檔案
在目標板上,進入/usr/local/etc/目錄,執行以下命令:
../bin/ssh-keygen -t rsa1 -f ssh_host_key -N ""
../bin/ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
../bin/ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
3.4新增sshd使用者
將主機上 /etc/目下的 passwd, shadow, group 三個檔案copy到目標板的 /etc目錄下, 同時記得將passwd的最後 /bin/bash 該為 /bin/sh 
其實可以刪除不需要的一些使用者。
注意:前提條件是主機上用OpenSSH伺服器,加入沒有OpenSSH伺服器,passwd檔案裡面沒有sshd使用者記錄也是沒用的,建議手動新增sshd使用者
4.測試
#/usr/local/sbin/sshd
可以用ps命令檢視sshd是否在工作
如果執行的過程中有提示缺少動態連線庫,可以在主機上搜索相應檔案,拷貝到目標板/lib/目錄下面,注意建立軟連線!
OK!不出意外的話可以成功,如不成功請留言!

最後,可以訪問了,然而檔案傳輸還有點問題:如下圖:


整了好一會還是沒有用,開發板上沒有.bashrc ,改良使用方法:scp命令,其實 也更方便啊。

SCP 的使用