SSH:使用密钥对身份验证,但如果不存在,则默认为密码

SSH:使用密钥对身份验证,但如果不存在,则默认为密码

我希望找到一种方法来配置我们的系统,以便它可以与 ssh 密钥对身份验证一起使用,但如果不存在,则故障转移到需要密码,如果提供了不正确的密码,则登录失败。

我们希望 ssh-keys 是默认的。我知道我们可以强制进行密码身份验证,但这会杀死密钥对身份验证。无论如何,只有在密钥对未配置或失败时才强制输入密码?

为什么? (要求澄清)

CIS9 5.3 配置权限升级
CIS9 5.3.4 确保用户必须提供升级密码(自动)

所以我很抱歉,我的想法被扭曲成椒盐卷饼,我不清楚。这是 ssh 和 sudo 升级。如果您在 RHEL 9 中通过 sudo 升级强制输入密码;它破坏了 SSH 的无密码身份验证。

来自我们的测试人员:

在配置新的 RHEL 9.x VM 后,无法立即以 sudo 身份使用其用户。第 5.3.4 节中存在问题 - (确保用户必须提供密码才能升级 (自动)| /etc/sudoers.d。

第 5.3.4 节的这一部分与我们的配置流程冲突。经过一番分析后,最好删除/评论该部分,因为其用户会在 14 天后自动删除。其他 sudoers 权限是在加入 Active Directory 后获得的。

当角色运行时,它会强制其用户使用 sudo 密码。根据设计,临时用户帐户没有密码,而是使用 ssh 密钥。

答案1

问题编辑后,问题的上下文更改了答案。您可能会留下一个问题,最好在https://security.stackexchange.com/

这里的安全要求是有效地讨论sudo命令。它实际上根本不是关于 SSH 的。

sudo我们用来允许用户获得额外权限的命令。例如,普通用户通常无法安装驱动器或修改/etc/.该sudo命令可用于授予访问权限root,从而可以执行更多操作。以这种方式添加权限称为“权限升级”。

因此,此安全要求告诉您该sudo命令必须要求用户提供密码。

您在这里遇到的问题是您的系统有一个用户(名为its-user?)可以sudo在不输入密码的情况下执行。之所以这样设置,是因为用户用于自动设置虚拟机。由于终端上没有人,询问密码只会让事情停止并永远等待。


从字里行间看,该用户需要执行 sudo 命令作为 Ansible 脚本的一部分。

我的第一反应是质疑 Ansible 脚本是否应该这样设置。有提示这里也许您可以更改 Ansible 脚本以不需要 sudo。我不是 Ansible 专家,所以我不确定是否become需要sudo

接下来我会看看你是否可以缩小sudo这个早期阶段的精确用途。您可以进行修改/etc/sudoers以允许该用户在没有密码的情况下执行特定命令,而不是允许其在没有密码的情况下执行任何它喜欢的操作。

接下来看看是否可以采取更好的措施来锁定它。也许您的 Ansible 脚本可能会在执行最后一个操作时将自己锁定。

如果一切都失败了,我会问这是否有问题?也许/也许不是。这更像是一个安全问题。

如果用户仅用于自动使用而无需人工登录,那么您可能不会太在意。但也许你这样做只是为了让审计员满意。

相关内容