如何调试 root 账户通信失败(通过 SSH)

如何调试 root 账户通信失败(通过 SSH)

我有一台主机(名为 giggles),其 root 帐户不接受传入的 SSH 连接。它有一个用户 (kevin) 帐户接受传入的 SSH 连接。此外,这两个帐户对于传入的 root 帐户具有完全相同的凭据,并且这些凭据适用于用户帐户,但不适用于 root。

我从两台不同的呼叫机器执行了“ssh -v giggles”和“ssh -v kevin@giggles”。这验证了两种情况下显示的凭据相同,但只有用户帐户 (kevin) 接受了连接。

我使用 diff 和 vimdiff 来验证 giggles 上的 root 和 kevin 中的 authorized_keys 是否包含传入 root 连接的相同行。但只有 kevin 接受了呼叫。

这些机器都运行着 Xubuntu,要么是 20,要么是 22。

PermitRootLogin 保留为默认值:prohibit-password。由于我在这个集群(7 个主机)上工作时经常使用 root 权限,因此我打算经常使用 SSH,因此将保留此设置。

我的配置文件中没有提及 AllowUsers 或 DenyUsers,甚至没有被注释掉。

当然,我可以在进入用户帐户后使用 sudo 进入 root 帐户,但这对我执行的一些操作来说很不方便。而且这样做也不对。

错误信息是

root@giggles: Permission denied (publickey).

我还应该关注什么?

答案1

我找到了问题所在,很抱歉打扰了你们。事实证明,root 的authorized_keys文件不属于 root。这样一来,问题就消失了。

这是解决集群中多台主机上早期问题的工作成果。我可能错过了这台机器上的一个清理步骤。

答案2

正如其他评论已经提到的,您需要有PermitRootLogin yes才能允许 root ssh 访问该框。默认设置PermitRootLogin no更好,因为您可以使用其他一些帐户进行 ssh,因为从那里,su -l如果您知道 root 密码,您可以通过发出以下命令成为 root,或者您可以使用sudo -idoas等。

但是,如果您确实需要允许 root ssh 登录,则选项可以是PermitRootLogin without-password(旧形式)或PermitRootLogin prohibit-password(新形式),以允许登录但不进行键盘交互式身份验证(因此仅限密钥对)。即使在这种情况下,也要调整/root/.ssh/authorized_keys以仅接受众所周知的地址。
参考:man 5 sshd_config

相关内容