移植openssh服務器到ARM處理器上

https://wenku.baidu.com/view/9f05216eaf1ffc4ffe47ac47.html


移植opensshd到ARM開發板上
1. 環境 
硬件環境: 
Host:X86PC         
Target:ARM 開發板  
軟件環境: 
Host:VMware虛擬機下的redhat linux 9.0(完全安裝) Target:arm-linux                kernel:linux-2.6.13 
Crosstool: arm-linux-gcc-4.2.0  
2. 準備以下源碼包(下載) 
下載zlib:  http://www.zlib.net/zlib-1.2.3.tar.gz 
下載ssl:   http://www.openssl.org/source/openssl-0.9.8e.tar.gz 
下載ssh:  http://mirror.mcs.anl.gov/openssh/portable/openssh-4.6p1.tar.gz  
3. 交叉編譯 (1) 準備工作 
在redhat linux 9.0下新建工作目錄 mkdir /ssh              
工作目錄 cd /ssh                 進入工作目錄 
mkdir compressed install source     
再新建三個目錄 mkdir intall/zlib-1.2.3  install/openssl-0.9.8e 
compressed       用於存放源碼包 
install          軟件安裝目錄 
source           源碼包解壓目錄 
說明:把第2步下載的源碼包放到compressed目錄中  
(2) 交叉編譯zlib 
cd /ssh/compressed/ 
tar xzvf zlib-1.2.3.tar.gz  -C  ../source cd ../source/zlib-1.2.3 
./configure --prefix=/ssh/install/zlib-1.2.3 
修改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  
(3) 交叉編譯openssl cd /ssh/compressed/ 
tar zxvf openssl-0.9.8e.tar.gz  -C  ../source 
cd ../source/openssl-0.9.8e 
./Configure --prefix=/ssh/install/openssl-0.9.8e os/compiler:/usr/local/arm/3.4.1/bin/arm-linux-gcc  
make 
make install   
(4)交叉編譯openssh cd /ssh/compressed 
tar zxvf openssh-4.6p1.tar.gz  –C ../source 
cd ../source/openssh-4.6p1 
./configure --host=arm-linux --with-libs --with-zlib=/ssh/install/zlib-1.2.3 
--with-ssl-dir=/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 

##不要make install   

4. 安裝      
    (1) 將 openssh-4.6p1目錄下的 sshd 拷貝到 目標板的/usr/sbin目錄下     
    (2) 再拷貝 scp  sftp  ssh  ssh-add  ssh-agent  ssh-keygen  ssh-keyscan  到目標板/usr/local/bin目錄下 
    (3) 拷貝 sftp-server  ssh-keysign    到/usr/local/libexec目錄下         
    (4) 在目標板下: 
        mkdir -p /usr/local/etc/          
        mkdir -p /var/run;  
        mkdir -p /var/empty/sshd 
        chmod 755 /var/empty  
        然後將openssh-4.6p1下的sshd_config, ssh_config 拷貝到/usr/local/etc/目錄下 
    (5)在主機上:(openssh-4.6p1目錄下),重新編譯x86平臺 並且用超級終端運行如下命令         
        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 ""         
        將生存的 ssh_host_* 6個文件(即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/目錄下  
(6)修改目標板根文件系統/etc目錄下的 passwd 和group文件,添加上sshd用戶和組,步驟如下: 
    cd /etc 
    vi passwd 
    在打開的passwd文件修改後如下所示: 
root::0:0:root:/:/bin/sh 
bin:*:1:1:bin:/bin: 
daemon:*:2:2:daemon:/sbin: 
nobody:*:99:99:Nobody:/: 
sshd:*:74:74:Privilege-separated 
SSH:/var/empty/sshd:/sbin/nologin―――添加sshd用戶
    
vi group 
在打開的group文件修改後如下所示: 
root:*:0:
daemon:*:1:
bin:*:2:
sys:*:3:
adm:*:4:
tty:*:5:
disk:*:6:
lp:*:7:
mail:*:8:
news:*:9:
uucp:*:10:
man:*:12:
proxy:*:13:
kmem:*:15:
dialout:*:20:
fax:*:21:
voice:*:22:
cdrom:*:24:
floppy:*:25:
tape:*:26:
sshd:*74:-------------添加sshd組 
sudo:*:27:
audio:*:29:
dip:*:30:
www-data:*:33:
backup:*:34:
operator:*:37:
list:*:38:
irc:*:39:
src:*:40:
gnats:*:41:
shadow:*:42:
utmp:*:43:
video:*:44:
sasl:*:45:
plugdev:*:46:
staff:*:50:
games:*:60:
users:*:100:
mysql:*:64001:
nogroup:*:65534:
  
(7)修改sshd_config文件如下選項,其他按默認配置: 
# HostKey for protocol version 1 
HostKey /usr/local/etc/ssh_host_key 
#HostKeys for protocol version 2 
HostKey /usr/local/etc/ssh_host_rsa_key 
HostKey /usr/local/etc/ssh_host_dsa_key  
PermitRootLogin   yes――允許根用戶登陸 
PermitEmptyPasswords   yes――允許使用空密碼,即不需要密碼 
UsePrivilegeSeparation    no――把安全級別降低,因爲不會連接互聯網  
# override default of no subsystems 
Subsystem sftp /usr/local/libexec/sftp-server  ――指定sftp服務路徑,否則將不能啓動sftp服務,將不能進行文件的上傳和下載  
(8)在開發板上(即目標板)啓動sshd 
此時的你只要等開發板啓動好之後啓動sshd服務了,使用絕對路徑來啓動。 /usr/local/sbin/sshd  
上述啓動命令可以寫進啓動腳本文件裏,我把它添加到開發板上的/etc/init.d/rcS腳本里,系統啓動完後就能提供sshd服務。 

(9)特別注意的是  應用X86平臺編譯 當前版本的 host_key:
   cd /ssh/compressed/openssh-4.6p1
   
   ./configure  
   
   make

   ./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 ""
  
   生成相應版本的host_key

(10)Starting sshd:/var/empty/sshd must be owned by root and not group or world-writable.
                                                            [FAILED]
這個是權限的問題
可採取以下兩步解決
chown   -R   root.root    /var/empty/sshd
chmod 744 /var/empty/sshd
service sshd restart
就可以解決上述的問題

chown -R root.root /var/empty/


 

發佈了125 篇原創文章 · 獲贊 18 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章