最近需要构建一个基于 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的配置文件:
要设置允许root用户登录