譯器arm-linux-gcc和arm-none-linux-gnueabi-gcc成功,。
步驟: 1.下載源碼包,,地址如下: opensshopenssl zlib 2.交叉編譯 創(chuàng)建工作目錄: #mkdir /work#cd /work 在/work目下面創(chuàng)建ssh目錄 # mkdir /work/lib
解壓安裝包: # cd /work/ssh/compressed/# tar zxvf zlib-1.2.3.tar.gz # tar zxvf openssl-0.9.8e.tar.gz # tar zxvf openssh-4.6p1.tar.gz 交叉編譯 zlib: # make 交叉編譯openssl # make # cd #./configure --host=arm-none-linux-gnueabi #make 注意:openssh不需要make install 3.操作目標(biāo)板 3.1確保目標(biāo)板上有以下目錄,若沒有,則新建: /usr/local/bin//usr/local/sbin/
/usr/local/etc/
/usr/local/libexec/
/var/run/
/var/empty/
3.2從PC機上將以下文件拷貝到目標(biāo)板Linux系統(tǒng)中 PC機 /work/ssh/source/openssh-4.6p1/ 目錄下的 scp moduli ssh_config sshd_config拷貝到目標(biāo)板 /usr/local/etc sftp-server sshd 拷貝到目標(biāo)板 /usr/local/sbin/ 3.3生成Key文件 將生成的 ssh_host_*_key這3個文件copy到目標(biāo)板的 /usr/local/etc/目錄下
4.測試 在目標(biāo)板上運行:#/usr/local/sbin/sshd 可以用ps命令查看sshd是否在工作 如果運行的過程中有提示缺少動態(tài)連接庫,,可以在主機上搜索相應(yīng)文件,拷貝到目標(biāo)板/lib/目錄下面,,注意創(chuàng)建軟連接,! OK!不出意外的話可以成功,, 主機上: #ssh root@192.168.0.34(開發(fā)板的ip) 然后輸入開發(fā)板的root密碼就就可以了,。 //root密碼就是你開發(fā)板上root的密碼,如果之前root沒有密碼,,需要重新設(shè)置,,用passwd root,,然后輸入密碼即可,。 登錄成功后如下圖: putty登錄
linux主機登錄
問題總結(jié) sshd: /lib/libc.so.6: version `GLIBC_2.7' not found (required by sshd) 問題分析:說明你編譯等時候指定等glibc和目標(biāo)板所使用的不一致。 解決辦法:配置openssh,,即./configure時,使用對用等--host參數(shù),,如--host=arm-linux/arm-none-linux-gnueabi。 2.make openssl的時候,指定的prefix目錄已經(jīng)存在,,無法創(chuàng)建。 問題分析:這是因為在prefix目錄的時候,,使用了相對路徑,,如../../install,。 解決辦法:openssl需要用指定絕對路徑來安裝,,prefix參數(shù)應(yīng)該如:--prefix=/work/ssh/install/openssl-1.0.0 3.使用arm-2007q3-51-arm-none-linux-gnueabi.bin的make編譯ssh和gdbserver時出錯: /root/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lgcc_s collect2: ld returned 1 exit status make: *** [example] 錯誤 1 問題解析: cannot find -lgcc_s,即沒有發(fā)現(xiàn)-libgcc_s.so,。
解決辦法: 可能一解決:查找/root/CodeSourcery/Sourcery_G++_Lite/arm-none-linux-gnueabi/libc/lib目錄,,如果有l(wèi)ibgcc_s.so.1,做一個鏈接:ln -s libgcc_s.so.1 libgcc_s.so,,重新make,,此問題可以解決。如果再出現(xiàn)以下問題: 同理,,其他的問題,,也在/arm-none-linux-gnueabi/libc/lib目錄下,
問題:cannot find /lib/libc.so.6 inside,,解決:ln -s libc-2.5.so libc.so.6
問題:cannot find /lib/ld-linux.so.3
4.用nfs從主機復(fù)制到目標(biāo)板時出現(xiàn): cp: omitting directory '/etc/boa' 等錯誤,。 問題分析:權(quán)限不夠,,或者目標(biāo)板中等/usr/local/etc已經(jīng)有文件。 解決辦法:在cp命令后加-r參數(shù),,如:cp -r /etc/* /usr/local/etc/ 5.運行sshd時出現(xiàn): Could not load host key: /usr/local/etc/ssh_host_dsa_key Could not load host key: /usr/local/etc/ssh_host_ecdsa_key 問題解析:在/usr/local/etc目錄中沒有相應(yīng)等key,。 解決辦法:按照操作步驟,運行: 生成ssh_host_das_key 和ssh_host_ecdas_key后復(fù)制到目標(biāo)板/usr/local/etc/目錄下,。 6.從nfs復(fù)制key文件到usr/local/etc時出現(xiàn): cp: can't open 'ssh_host_dsa_key': Permission denied 問題分析:目標(biāo)板復(fù)制權(quán)限不夠,。 解決辦法:在主機中修改他們等權(quán)限為777,命令:chmod 777 * 7.Privilege separation user sshd does not exist //需要在開發(fā)板的系統(tǒng)里adduser shhd //或者在/etc/passwd 中添加下面這一行 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 8.Permissions 0755 for '/usr/local/etc/ssh_host_dsa_key' are too open. //則把目標(biāo)板/usr/local/etc/下的ssh_host_*幾個文件的權(quán)限改為700。如果出現(xiàn)權(quán)限不夠問題,,用su - root進入root用戶再改,。 命令:#chmod 700 ssh_host_* 9.Permission denied (publickey,password,keyboard-interactive). //打開開發(fā)板/usr/local/sshd_config,將PermitRootLogin yes前的注釋“#”號去掉,。 10.configure配置openssh的時候出錯: configure: error: *** zlib missing - please install first or check config.log *** 問題分析:沒有找到zlib,。 問題解決:重新交叉編譯zlib,再configure即可。 11.以下兩個函數(shù)沒找到: /home/arm/ssh-omap/source/openssh-5.8p2/ssh-keygen.c:1410: undefined reference to `pkcs11_init' /home/arm/ssh-omap/source/openssh-5.8p2/ssh-keygen.c:1493: undefined reference to `pkcs11_terminate' 問題解決: 打開ssh-keygen.c:vi ssh-keygen.c 屏蔽這1410和1493這兩行函數(shù),。 12.開啟sshd后,,沒有找到sftp-server服務(wù)。如DS-5軟件在連接時就出現(xiàn)以下錯誤,,雖然還可以用終端,,不過不能傳輸文件,還是很不爽的:
Failed to connect SFTP subsystem: Remote host may not have sftp-server installed : java.io.IOException: inputstream is closed
問題分析:明顯的,,這是沒有找到sftp子服務(wù),。
問題解決:打開/usr/local/etc/sshd_config,找到這么一行:
Subsystem sftp /usr/libexec/sftp-server
看出問題了吧?配置文件中指明的sftp子服務(wù)并不是我們放的目錄,,所以修改為:
Subsystem sftp /usr/local/libexec/sftp-server
然后kill掉sshd,,再啟動就可以用sftp-server了。
|
|
來自: SamBookshelf > 《ssh》