SSH協定族可以用來進行遠端控制, 附加的SFTP協定可輕松實作在計算機之間傳送檔案。而實作此功能的傳統方式,如telnet(終端仿真協定)、 rcp ftp、 rlogin、rsh都是極為不安全的,因為它們使用明文傳送密碼。 OpenSSH常常被誤認以為與OpenSSL有關聯,但實際上這兩個計劃的有不同的目的,不同的發展團隊,名稱相近隻是因為兩者有同樣的軟體發展目标── 提供開放源代碼的加密通訊軟體。
1 、下載下傳
首先下載下傳幾個源碼包
1、移植openssh需要三個包:openssh、openssl 和 zlib,位址如下:
- zlib官方下載下傳:http://www.zlib.net/
- openssl官方下載下傳:http://www.openssl.org/source
- openssh官網下載下傳:http://www.openssh.com/portable.html
因為它們之間沒有版本所謂的版本沖突,是以都下載下傳最新闆的即可。本文以zlib-1.2.3.tar.gz、openssl-0.9.8e.tar.gz、openssh-5.6p1.tar.gz這三個版本為例,其他版本過程一樣。
2 、部署
1、建立工作目錄:
mkdir /work
cd /work
2、在/work目下面建立ssh目錄
mkdir /work/ssh
cd /work/ssh
mkdir compressed install source
//Install 軟體安裝目錄
//source 源碼包解壓目錄
mv tarpakgs/openssh-5.6p1.tar.gz /work/ssh/compressed
mv tarpakgs/openssl-0.9.8e.tar.gz /work/ssh/compressed
mv tarpakgs/zlib-1.2.3.tar.gz /work/ssh/compressed
3、解壓安裝包:
cd /work/ssh/compressed/
tar zxvf zlib-1.2.3.tar.gz –C ../source
tar zxvf openssl-0.9.8e.tar.gz –C ../source
tar zxvf openssh-5.6p1.tar.gz –C ../source
3 、交叉編譯 zlib
1、編譯zlib
修改Makefile :
CC=gcc 改為:
CROSS=/usr/local/arm/3.4.1/bin/arm-linux-
CC=$( CROSS ) gcc
LDSHARED= gcc 改為:LDSHARED=$( CROSS ) gcc
CPP= gcc - E 改為:CPP=$( CROSS ) gcc - E
AR= ar rc 改為:AR=$( CROSS ) ar rc
開始編譯:
make
make install
2、編譯openssl
./configure --prefix=/home/zuopeng/work/ssh/install/openssl os/compiler:arm-linux-gcc
make
make install
3、編譯openssh
./configure --host=arm-linux --with-libs --with-zlib=/home/zuopeng/work/ssh/install/zlib --with-ssl-dir=/home/zuopeng/work/ssh/install/openssl --disable-etc-default-login CC=arm-linux-gcc AR=arm-linux-ar
make(記住不需要make install,具體原因未知)
4、ARM開發闆準備
確定目标闆上有以下目錄,若沒有,則建立:
/usr/local/bin
/usr/local/etc
/usr/libexec
/var/run
/var/empty/sshd
将 openssh目錄下檔案拷貝到開發闆系統中,具體為:
- scp、sftp、ssh 、ssh-add、ssh-agent、ssh-keygen、ssh-keyscan共7個檔案拷貝到開發闆/usr/local/bin
- moduli、ssh_config、sshd_config共3個檔案拷貝到開發闆 /usr/local/etc
- sftp-server、ssh-keysign 共2個檔案拷貝到開發闆 /usr/libexec
- sshd 拷貝到/usr/sbin
在主機上:
ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""
ssh-keygen -t dsa -f ssh_host_ed25519_key -N ""
修改 ssh_host_ed25519_key 權限為 600:
$ chmod 600 ssh_host_ed25519_key
其中 ssh_host_ed25519_key 是SSH第二版協定用到的key,需要修改權限,否則會提示以下錯誤:
Permissions 0644 for '/usr/local/etc/ssh_host_ed25519_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /usr/local/etc/ssh_host_ed25519_key
Could not load host key: /usr/local/etc/ssh_host_ed25519_key
将生成的 ssh_host_* 4個檔案copy到目标闆的 /usr/local/etc/目錄下
(5) 添加使用者(這一步不要做)
将主機上/etc/ 目下的 passwd, shadow, group 三個檔案copy到目标闆的 /etc 目錄下, 同時記得将passwd的最後 /bin/bash 該為 /bin/sh
//這一步以後,開發闆上的使用者結構與你本機的結構就是一樣的了,是以在cp之前先把你自己的root密碼設好
//#passwd設定root密碼,然後在把上面3個檔案cp到開發闆/etc下
其實可以删除不需要的一些使用者。
5、注意事項(開發闆上操作)
1、/打開開發闆/usr/local/sshd_config,将PermitRootLogin yes前的注釋“#”号去掉。
2、 打開 /etc/passwd 檔案,在最後添加下面這一行:
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
如果開發闆的 root 使用者還沒有密碼,鍵入以下指令然輸入兩次密碼來修改,否其他裝置無法連:
$ passwd root
密碼更改失敗,查詢/etc/目錄下是否有shadow檔案夾,沒有請建立
ssh [email protected] 即可登入 重新開機開發闆之後,發現ssh 失敗了,原因是因為sshd 服務沒有啟動,需要在/etc/init.d/rcS 中添加一行,設定為開機啟動
/usr/sbin/sshd