1

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

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

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

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

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

4

2 回答 2

0

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

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

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

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

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

/etc/default/dropbear

其内容:

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

因此,我删除了“-w”选项并运行:

/etc/init.d/dropbear restart

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

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

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

dropbear_%.bbappend

do_install_append(){
    sed -i 's/-w//g' ${D}/etc/default/dropbear
}
于 2021-06-28T16:37:11.073 回答
0

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

只需添加allow-root-loginIMAGE_FEATURES您的local.conf(或您的自定义图像.bb文件)。

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

请注意,它allow-root-login是由 隐式启用的debug-tweaks,但您可以只添加allow-root-login而不打开所有debug-tweaks.

于 2021-07-23T00:31:17.830 回答