如何让用户能够使用 ssh 密钥登录但不能使用密码登录?

如何让用户能够使用 ssh 密钥登录但不能使用密码登录?

我想创建一个用户并且没有密码。就像您无法使用密码登录一样。我想使用root 将密钥添加到其authorized_keys 中。这是用于我的自动备份系统的。

答案1

使用passwd -d是完全错误的,至少在 Fedora 上,在任何基于 Shadow-utils 的 Linux 发行版上。如果您使用 删除密码passwd -d,则意味着任何人都可以在不提供密码的情况下登录该用户(在控制台或图形上)。

为了阻止使用密码身份验证的登录,请运行,这会锁定帐户,使其仅对 root 用户可用。锁定是通过将​​加密密码呈现为无效字符串(通过在加密字符串前添加 !)来执行的。passwd -l username

任何登录尝试,无论是本地还是远程,都将导致“密码错误”,而公钥登录仍然有效。然后可以使用 解锁该帐户。passwd -u username

如果您想完全锁定帐户而不删除它,请编辑/etc/passwd并设置/sbin/nologin/bin/false在最后一个字段中。前者将导致“此帐户目前无法使用。”对于任何登录尝试。

请参阅passwd(1)手册页。

答案2

您不是询问特定于 SSH 守护程序的问题,不接受基于密码的身份验证,而是接受密钥/密码短语身份验证吗?

寻找 的更改sshd_config

PasswordAuthentication No
PreferredAuthentications publickey,hostbased,keyboard-interactive
Protocol 2,1

查找更多配置参数人 ssh_config

答案3

只是不要为用户设置密码。如果已有密码,请使用 删除它passwd -l <username>

但仍然可以以该用户身份登录 - 通过使用authorized_keys,或通过某些特权帐户的 su 或 sudo 。

相关内容