完成ARM Linux的SSHD移植

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. 完成











你可能感兴趣的:(LINUX编程)