PS:要转载请注明出处,本人版权所有。
PS: 这个只是基于《我自己》的理解,
如果和你的原则及想法相冲突,请谅解,勿喷。
环境说明
无
前言
此文的编译篇在:http://blog.csdn.net/u011728480/article/details/78037404
原本不想写这篇文章的,但是最近,新的需求下来,需要配置一个ssh服务端,但是板子的nand经过精打细算之后,只剩了几MB的空间了,于是得重新对编译和部署进行整理。然后将SSH部署到板子的SD卡上去。
openssh 的部署
首先根据编译篇的内容,将你要指定的SD卡的挂载目录参数添加上,而不是按照ssh的默认目录去部署。
最终,configure之后得到下图:

可以看到,我已经指定了我想要的路径,这个路径很重要,有些ssh相关的二进制文件根据编译时的参数写死了,所以,需要编译时指定。
开始部署:
-
首先根据前文,准备以下的文件到一个目录。
如图:(ssh相关的bin文件和配置文件)

(ssh 所依赖的so库)

-
创建相关的文件夹
mkdir -p /TFDISK/rootfs/bin/
mkdir -p /TFDISK/rootfs/sbin/
mkdir -p /TFDISK/rootfs/etc/
mkdir -p /TFDISK/rootfs/libexec/
mkdir -p /TFDISK/rootfs/share/
mkdir -p /TFDISK/rootfs/lib/
mkdir -p /var/run/
mkdir -p /var/empty/
-
修改相关文件夹权限以及添加ssh所需的用户组和用户
chown root:root /var/empty
chmod 755 /var/empty
addgroup sshd
adduser -G sshd -g 'sshd privsep' -h /var/empty -s /bin/ssh sshd
(添加用户时,也可直接修改/etc/passwd 文件,在最后一行添加sshd:x:74:74:Sky-SSH:/var/empty/sshd:/sbin/nologin)
//username:password:User ID:Group ID:comment:home directory:shell
-
复制相关文件及so库到相关的文件夹
cp sshd /TFDISK/rootfs/sbin/
cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan ssh-pkcs11-helper /TFDISK/rootfs/bin/
cp sftp-server ssh-keysign /TFDISK/rootfs/libexec/
cp sshd_config ssh_config moduli /TFDISK/rootfs/etc/
#libcrypto.so libssl.so libz.so
cp lib*.so* /TFDISK/rootfs/lib/
-
到开发板上,在ssh所需的etc/目录生成相关的秘钥文件,并修改权限
cd /TFDISK/rootfs/etc/
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 ""
chmod 600 ssh_host_ed25519_key
-
到此,直接可以通过/TFDISK/rootfs/sbin/sshd&运行,然后连接即可。(此时root和空密码是无法登录的)
号外号外:必须注意相关的额外配置
-
若想使用root登录,那么必须在sshd_config 里面,取消PermitRootLogin yes注释,并改值为yes,如果需要无密码登录,需要取消PermitEmptyPasswords yes注释,设置登录名密码为空(此选项不建议使用,因为我这里是开发板可以这样,毕竟不安全)。
-
因为上文实现了不安全的免密登录,安全的免密登录可以使用公钥来配置,具体可以去网上查找相关资料。
后记
无
参考文献
-
无

PS: 请尊重原创,不喜勿喷。
PS: 要转载请注明出处,本人版权所有。
PS: 有问题请留言,看到后我会第一时间回复。