YOCTO - Dropbear 拒绝密码

问题描述

我正在开发基于 Yocto 的 Linux。我已经安装了 Dropbear SSH。如果调试调整包含在 IMAGE-FEATURES 中,我可以在没有密码的情况下通过 SSH 正确登录。现在,我想设置一个基于密码的登录。所以我删除了调试调整,并在我的配方中添加了以下几行:

inherit extrausers
EXTRA_USERS_ParaMS = "usermod -P mypassword root;"

现在,当我尝试通过 SSH 登录时,出现以下错误

root@IP:权限被拒绝(公钥、密码)。

有什么问题?我检查了密码是否正确。

解决方法

我创建了一个简单的 poky 构建,其中包含一个简单的元测试层,附加到 core-image-minimal 这个:

ARCHFLAGS="-arch x86_64" pip3 install python-ldap

我在构建完成后启动了 runqemu,这就是我发现的:

起初我尝试连接到 ssh,但它实际上拒绝了我。

默认dropbear禁用root登录,可以找到默认文件:

inherit extrausers
EXTRA_USERS_PARAMS = "usermod -P 123 root;"
IMAGE_FEATURES_remove = "debug-tweaks"
IMAGE_FEATURES_append = " ssh-server-dropbear"
IMAGE_INSTALL_append = " dropbear"

其内容:

/etc/default/dropbear

所以,我删除了“-w”选项,然后运行:

# Disallow root logins by default
DROPBEAR_EXTRA_ARGS="-w"

我在 dropbear ssh 服务器上成功登录。

此外,您可以将其自动添加到您的自定义图层:

/etc/init.d/dropbear restart

dropbear_%.bbappend

meta-custom/
    --> recipes-core/
        --> dropbear/
            --> dropbear_%.bbappend
,

BelHadjSalem TALEL's answer 描述的方法,包括直接修改 /etc/default/dropbear 文件以自定义 DROPBEAR_EXTRA_ARGS,将起作用。然而,有一种更优雅的方式来完成同样的事情。

只需在您的 allow-root-login(或您的自定义图像 IMAGE_FEATURES 文件)中将 local.conf 添加到 .bb

这会导致 BitBake 管道执行相同的操作(删除 -w 标志),而无需您对其进行处理或维护。作为奖励,即使您将映像切换为使用 OpenSSH 而不是 Dropbear(通过将 ssh-server-dropbear 列表中的 ssh-server-openssh 更改为 IMAGE_FEATURE),它也会继续工作。

请注意,allow-root-login 隐式启用了 debug-tweaks,但您可以只添加 allow-root-login,而无需打开所有 debug-tweaks