SSH使用公鑰密碼學進行端到端通信的加密,並且相當容易使用和部署。我現在移植的是openssh,參考的文章主要是:
http://blog.chinaunix.net/u1/43047/showart_371372.html。這篇文章描述非常詳細,只是在編譯成功之後,我認爲好多部分是沒有必要的。所以結合上面文章和《構建嵌入式Linux系統》來總結一下。
(1)下載
openssh-4.6p1.tar.gz
http://www.openssh.com/portable.html
openssl-0.9.8e.tar.gz
http://www.openssl.org/source
zlib-1.2.3.tar.gz
http://www.zlib.net/
|
(2)編譯
讚一句,該作者的處理方式非常好,和《構建嵌入式Linux系統》上一樣優秀。主要思想就是壓縮包在單獨目錄內,源碼包和編譯在一個目錄內,安裝目標在一個目錄內。這樣就省卻了很多麻煩。
·編譯zlib
[root@lqm zlib-1.2.3]#
./configure
--prefix=/home/armlinux/fs/utilities/ssh/install/zlib-1.2.3
|
--- Makefile.orig
2008-03-24 14:44:48.000000000
+0800 +++ Makefile 2008-03-24 14:45:33.000000000
+0800
@@ -16,7
+16,8 @@
# To install in $HOME instead of
/usr/local, use:
# make install prefix=$HOME
-CC=gcc +CROSS=/usr/local/arm/3.4.1/bin/arm-linux- +CC=$(CROSS)gcc
CFLAGS=-O3
-DUSE_MMAP
#CFLAGS=-O
-DMAX_WBITS=14
-DMAX_MEM_LEVEL=7
@@ -25,15
+26,15 @@
# -Wstrict-prototypes
-Wmissing-prototypes
LDFLAGS=-L. libz.a -LDSHARED=gcc -CPP=gcc
-E +LDSHARED=$(CROSS)gcc +CPP=$(CROSS)gcc
-E
LIBS=libz.a
SHAREDLIB=libz.so
SHAREDLIBV=libz.so.1.2.3
SHAREDLIBM=libz.so.1
-AR=ar rc +AR=$(CROSS)ar rc
RANLIB=ranlib
TAR=tar
SHELL=/bin/sh
|
然後make; make install
·編譯openssl
[root@lqm openssl-0.9.8e]#
./Configure
--prefix=/home/armlinux/fs/utilities/ssh/install/openssl-0.9.8e
os/compiler:/usr/local/arm/3.4.1/bin/arm-linux-gcc
|
然後make; make install
·編譯openssh
[root@lqm openssh-4.6p1]#
./configure
--host=arm-linux
--with-libs
--with-zlib=/home/armlinux/fs/utilities/ssh/install/zlib-1.2.3
--with-ssl-dir=/home/armlinux/fs/utilities/ssh/install/openssl-0.9.8e
--disable-etc-default-login CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc
AR=/usr/local/arm/3.4.1/bin/arm-linux-ar
|
配置完成,然後make,主要不要安裝。
·首先把sshd複製到目標板的根文件系統的/usr/sbin,提前進行strip處理(約1.4M,比較大)。
其次,需要建立文件夾/usr/local/etc/。然後把openssh目錄下的sshd_config拷貝到該文件夾下面。否則出現錯誤:
/usr/local/etc/sshd_config:
No such file or directory
|
·再次,在主機上產生密鑰。按照《構建嵌入式Linux系統》的做法,會出現問題:
Could
not load host key:
/usr/local/etc/ssh_host_rsa_key
Could not load host key:
/usr/local/etc/ssh_host_dsa_key
|
所以,修改的方案爲:
[root@lqm nfs]# ssh-keygen
-t rsa1 -f ssh_host_key
-N "" [root@lqm nfs]# ssh-keygen
-t rsa -f ssh_host_rsa_key
-N "" [root@lqm nfs]# ssh-keygen
-t dsa -f ssh_host_dsa_key
-N ""
|
放到/usr/local/etc中。
·建立目錄/var/run /var/empty/sshd,並設定權限chmod 755 /var/empty
·增加sshd用戶。
這個我是從host上拷貝,然後保留必要的用戶,得到的。這樣不會出問題。
·啓動時,應該使用絕對路徑。
這樣就可以正常啓動了。只不過我在測試的時候,發現連接速度沒有在host快。相對來說,這個sshd佔用空間也大了很多,應該可以尋求替代方案。