今天拿到一个板子,想从公司的服务器上scp文件到板子上,结果发现板子上没有sshd(ssh 的守护进程),于是就想着手动安装,因为相同平台的其他板子上有sshd,所以没有手动编译安装sshd的过程,网上有很多这样的教程。这里列举遇到的问题:
1,拷贝sshd
设备有串口有网络,所以用挂载的方式,将其他地方准备好的sshd拷贝到板子上,存放在目录:/usr/bin
2, 无法启动 - 问题1
cd 到目录/usr/bin下,执行 ./sshd & 时,出现错误:privilege separation user sshd does not exist,网上搜索一番,修改/etc/passwd,在最后添加一行:sshd:x:74:74:Privilege-separated SSH:/usr/bin/sshd:/sbin/nologin,其中/usr/bin/sshd是sshd存放的路径,其他未进行深入了解。
3,无法启动 - 问题2
经过上面第2步的设备,继续执行:./sshd &,结果提示:sshd re-exec requires execution with an absolute path
网上查到sshd运行需要绝对路径,可以参考:为什么sshd需要绝对路径?
4,无法启动 - 问题3
当执行: /usr/bin/sshd 还是有问题,提示:usr/local/etc/sshd_config: No such file or directory,这可能不是普遍问题,因为我这个sshd是从别的板子上拷贝过来的,可以这个sshd定制过的,访问了文件/usr/local/etc/sshd_config。没关系中需要找一个sshd_config配置方的即可。
5,无法启动 - 问题4
错误提示:sshd: no hostkeys available -- exiting
解决办法:ssh-keygen -A ,这个过程会比较慢,慢慢等。
经过以上几个步骤,最终/usr/bin/sshd & 在后台运行起来了。
6,最后一步scp
问题是找不到库libz.so.1,串口登录上去查看/usr/lib/目录下,有这个库的,但看了一下/lib/目录下,确实没有libz相关库,于是直接拷贝/usr/lib/libz* 到/lib/下,网上有说修改LD_LIBRARY_PATH,添加libz.so.1的路径,但我实际操作无效不知为何,有知道原因的同学欢迎@我。