完成ARM Linux的SSHD移植
阿新 • • 發佈:2019-02-07
1.下載zlib-1.2.3.tar.gz
https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.3/zlib-1.2.3.tar.gz
2. 下載openssl-1.0.2k.tar.gz
https://www.openssl.org/source/openssl-1.0.2k.tar.gz
3. 下載
http://mirrors.evowise.com/pub/OpenBSD/OpenSSH/portable/openssh-7.4p1.tar.gz
4. 全部放到/work目錄下,並解壓,並分別重新命名資料夾名稱為zlib、openssl、openssh
5. 新建/work/install目錄, 在其目錄下分別建立zlib、openssl目錄
6. 編譯zlib
./configure --shared --prefix=/work/install/zlib
將CC=gcc 改為:
CROSS=/usr/local/arm/3.4.1/bin/arm-linux-
CC=$(CROSS)gcc
LDSHARED=gcc -shared -Wl,-soname,libz.so.1 改為:LDSHARED=$(CROSS)gcc -shared -Wl,-soname,libz.so.1
編譯,make;make install
7. 編譯openssl
轉到openssl目錄
./Configure --prefix=/work//install/openssl os/compiler:/opt/4.6.3/bin/arm-none-linux-gnueabi-gcc
編譯,make;make install
8. 編譯openssh
轉到openssh目錄
./configure CC=/opt/4.6.3/bin/arm-none-linux-gnueabi-gcc LDFLAGS=-L/opt/4.6.3/lib AR=/opt/4.6.3/bin/arm-none-linux-gnueabi-ar --host=arm-linux --with-ssl-dir=/work/insta
ll/openssl --with-zlib=/work/install/zlib --prefix=/work/install/openssh --disable-etc-default-login
make
scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan 拷貝到目標板/usr/bin
modulissh_config(未發現) sshd_config拷貝到目標板/usr/etc
sftp-server ssh-keysign 拷貝到目標板 /usr/libexec
sshd 拷貝到目標板 /usr/local/sbin/
在Ubuntu主機 /work/openssh目錄下執行:
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_*_key這4個檔案copy到目標板的 /usr/etc/目錄下
12、修改目標板passwd檔案
在/etc/passwd 中新增下面這一行
sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin
13、試執行發現問題
問題:sshd: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
解決辦法:找到相關檔案,拷貝到開發板lib目錄下。
問題:/work/install/openssh/etc/sshd_config: No such file or directory 路徑出了問題
解決辦法:修改--prefix=/usr引數,重新編譯。
問題:Missing privilege separation directory: /var/empty
解決辦法:手動建立或者在rcS檔案中自動建立
問題:ssh客戶端登入發現使用者名稱密碼不對
解決辦法:passwd設定新的密碼,並使用之
14. 完成
https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.3/zlib-1.2.3.tar.gz
2. 下載openssl-1.0.2k.tar.gz
https://www.openssl.org/source/openssl-1.0.2k.tar.gz
3. 下載
http://mirrors.evowise.com/pub/OpenBSD/OpenSSH/portable/openssh-7.4p1.tar.gz
4. 全部放到/work目錄下,並解壓,並分別重新命名資料夾名稱為zlib、openssl、openssh
5. 新建/work/install目錄, 在其目錄下分別建立zlib、openssl目錄
6. 編譯zlib
./configure --shared --prefix=/work/install/zlib
將CC=gcc 改為:
CROSS=/usr/local/arm/3.4.1/bin/arm-linux-
CC=$(CROSS)gcc
LDSHARED=gcc -shared -Wl,-soname,libz.so.1 改為:LDSHARED=$(CROSS)gcc -shared -Wl,-soname,libz.so.1
編譯,make;make install
7. 編譯openssl
轉到openssl目錄
./Configure --prefix=/work//install/openssl os/compiler:/opt/4.6.3/bin/arm-none-linux-gnueabi-gcc
編譯,make;make install
8. 編譯openssh
轉到openssh目錄
./configure CC=/opt/4.6.3/bin/arm-none-linux-gnueabi-gcc LDFLAGS=-L/opt/4.6.3/lib AR=/opt/4.6.3/bin/arm-none-linux-gnueabi-ar --host=arm-linux --with-ssl-dir=/work/insta
ll/openssl --with-zlib=/work/install/zlib --prefix=/work/install/openssh --disable-etc-default-login
make
scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan 拷貝到目標板/usr/bin
modulissh_config(未發現) sshd_config拷貝到目標板/usr/etc
sftp-server ssh-keysign 拷貝到目標板 /usr/libexec
sshd 拷貝到目標板 /usr/local/sbin/
在Ubuntu主機 /work/openssh目錄下執行:
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_*_key這4個檔案copy到目標板的 /usr/etc/目錄下
12、修改目標板passwd檔案
在/etc/passwd 中新增下面這一行
sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin
13、試執行發現問題
問題:sshd: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
解決辦法:找到相關檔案,拷貝到開發板lib目錄下。
問題:/work/install/openssh/etc/sshd_config: No such file or directory 路徑出了問題
解決辦法:修改--prefix=/usr引數,重新編譯。
問題:Missing privilege separation directory: /var/empty
解決辦法:手動建立或者在rcS檔案中自動建立
問題:ssh客戶端登入發現使用者名稱密碼不對
解決辦法:passwd設定新的密碼,並使用之
14. 完成