busybox 配置 dropbear 的问题

问题遇到的现象和发生背景

最近需要构建一个基于 busybox 的嵌入式 rootfs,而且需要能够 ssh 登录。所以决定采用 dropbear

但是现在遇到的问题是,dropbear 启动之后,从 PC ssh 登录,提示“Permission denied, please try again”

最初是怀疑密码设置错误,我尝试修改密码和添加用户,问题依然存在

问题相关代码,请勿粘贴截图

下面是嵌入式设备的输出

Please press Enter to activate this console. [    8.287749] macb ff0e0000.ethernet eth0: link up (1000/Full)
[    8.293431] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   10.983708] random: fast init done

/ # 
/ # passwd root                                        #  设置 root 的密码,防止 ssh 登录的时候密码不一致
Changing password for root
New password: 
Retype password: 
passwd: password for root changed by root
/ # 
/ # dropbear -F -E -p 2222                     # 启动 dropbear
[1890] Jan 01 12:35:03 Failed loading /etc/dropbear/dropbear_ecdsa_host_key
[1890] Jan 01 12:35:03 Failed loading /etc/dropbear/dropbear_ed25519_host_key
[1890] Jan 01 12:35:03 Not backgrounding
[1891] Jan 01 12:35:23 Child connection from 192.168.8.1:50397
[1891] Jan 01 12:35:23 Login attempt for nonexistent user              # 提示没有此用户?
[1891] Jan 01 12:35:30 Exit before auth from <192.168.8.1:50397>: Exited normally

下面是 PC 登录的输出

osrc@osrc-virtual-machine:~$ ssh -p 2222 root@192.168.8.35
root@192.168.8.35's password:                                       # 输入密码
Permission denied, please try again.                               # 提示错误
root@192.168.8.35's password: 
Permission denied, please try again.
root@192.168.8.35's password:
我想要达到的结果

是我的配置问题吗?有没有熟悉 dropbear 的朋友帮忙看一下呢

跟进发现是 getpwnam 返回错误。错误原因有二: 1、getpwnam 需要依赖 /etc/passwd 和 /etc/nsswitch.conf 文件,由于后者缺失,导致失败;2、getpwnam 函数静态编译会有问题,因为为了方便,我的 rootfs 中没有添加动态库,dropbear 是静态编译的
解决办法:1、添加 /etc/passwd 和 /etc/nsswitch.conf 文件;2、rootfs 中添加动态库,并动态编译 dropbear

可能是系统安全策略的问题?试试不要登录root用户,使用其他用户登录,或者开启root用户登录权限

需要看下你的 /etc/ssh/sshd_config的配置文件:

img

要设置允许root用户登录