cd <buildrootdir> #
make menuconfig
# 进入配置界面
Target packages > Networking applications--->
# 按 'y' 选中 dropbear 然后保持默认如下
[*]dropbear
[*] client programs
[ ] disable reverse DNS lookups
[*] optimize for size
[ ] log dropbear access to wtmp
[ ] log dropbear access to lastlog
[ ] enable legacy crypto
() path to custom localoptions.h definitions file
# 保存退出
make # 生成 output/image/roofs.tar.gz
以下操作在上位机 ubuntu 执行
# 解压上述根文件系统
cd <buildrootdir>/output/image
mkdir rootfs
mv rootfs.tar.gz rootfs
cd rootfs
tar xvf rootfs.tar.gz
cd etc
# 这里看到原本 etc 目录下有一个链接文件 dropbear,可以查看 etc/init.d/S50dropbear 获取该文件的解释,这里不用它,因为用它的话将导致每次开机主机的hostkey都不一样,这样导致即使创建了可信任秘钥对,下次板子重启之后客户端登录时由于主机 hostkey 改变依然会认证失败
rm dropbear
mkdir dropbear && cd dropbear
dropbearkey -t dss -f dropbear_dss_host_key
dropbearkey -t ecdsa -f dropbear_ecdsa_host_key
dropbearkey -t rsa -f dropbear_rsa_host_key
以下操作在上位机 ubuntu 执行
ssh-keygen -t rsa # 回车默认
# 该操作将生成 id_rsa(私钥) 和 id_rsa.pub(公钥) 到目录 ~/.ssh/
ls ~/.ssh/
id_rsa id_rsa.pub known_hosts known_hosts.old
# 我们需要将公钥复制到板卡文件系统中并修改其权限
mkdir <your rootfs dir>/root/.ssh/
cp ~/.ssh/id_rsa.pub <your rootfs dir>/root/.ssh/authorized_keys
chmod 0600 <your rootfs dir>/root/.ssh/authorized_keys
使用上位机主机登录板卡时可能会出现如下情况,这是因为之前使用过该主机登陆过该板卡,但刚刚我们换过板卡的host key 导致这是主机认为板卡不可信,只需将host key 删除重写登录即可。
ping 192.168.0.12
ssh root@192.168.0.12
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:iqSrnROCXrKIhng2C+0NI367y7LrVLQH3jFkrzOozKU.
Please contact your system administrator.
Add correct host key in /home/socbis/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/socbis/.ssh/known_hosts:1
remove with:
ssh-keygen -f "/home/socbis/.ssh/known_hosts" -R "192.168.0.12"
ECDSA host key for 192.168.0.12 has changed and you have requested strict checking.
Host key verification failed.
删除:ssh-keygen -f "/home/socbis/.ssh/known_hosts" -R "192.168.0.12"
在上述配置完成后,依然有可能因为根文件系统权限配置不对仍然无法登录。
我们可以在下位机启动后,查看系统日志分析登录失败原因:tail -f /var/log/messages
,如果/root
文件夹权限不正确,在其它机器登录时会出现以下log:
Jan 1 06:47:36 buildroot authpriv.info dropbear[1177]: /root must be owned by user or root, and not writable by others
该问题参考链接.
在下位机执行:
chown root /root -R
chgrp root /root -R
如果使用只读文件系统或ramdisk,将上述指令加入到 /etc/init.d/rcS
,貌似这是歪门邪道的解决方案,谁知道如何解决根文件系统移植后权限不对的问题啊,MD。