如何设置 sshd 以使其永远不会要求特定用户输入密码?

如何设置 sshd 以使其永远不会要求特定用户输入密码?

我有一个名为“git”的专用系统帐户,由 gitlab/gitolite 管理。连接到此帐户的用户始终使用 SSH 密钥,“git”用户没有密码。如果用户在没有 SSH 密钥或错误配置的密钥的情况下进行连接,他们会因为被要求输入密码而感到困惑。我正在寻找一种方法来设置服务器,以便在这种情况下它不会要求输入密码,而是显示某种用户友好的消息(“您的密钥丢失或无效”等)并断开连接。这是否可行,无论是在 sshd 配置中,还是以其他方式(可能是 PAM)?

请注意我不是询问如何设置公共/私人无密码连接。只是如何防止服务器要求单个特定用户输入密码。

(我理解这样的设置会向潜在的攻击者透露系统中存在用户“git”。但由于“git”没有密码,攻击者可以轻松确定其存在,所以我认为风险很低。)

答案1

您可以为该特定用户禁用密码登录。您无法提供特定消息,但至少不会提示他们输入密码。在中添加以下内容/etc/ssh/sshd_config

Match user git
    PasswordAuthentication no
    ChallengeResponseAuthentication no

相关内容