我不想完全禁用使用密码的远程登录,但我想这样做,以便我的帐户只能通过密钥对身份验证访问(还有其他用户想要使用密码登录)。是否可以在每个用户的基础上更改此设置,最好不更改系统设置?
需要明确的是,我的帐户具有 sudo 访问权限,因此我不想锁定密码。
答案1
您可以使用“匹配”选项sshd_config
匹配 引入条件块。如果满足“匹配”行上的所有条件,则以下行中的关键字将覆盖配置文件全局部分中设置的关键字,直到另一个“匹配”行或文件末尾。[1]
所以,在该文件的末尾你可以指定:
Match User yourusername
PasswordAuthentication no
请参阅man 5 sshd_config
参考资料 获取所有可用选项。
[1]http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5
答案2
这贾森·乌赖恩的回答将是做出这一改变的正确方法。我要做的唯一补充是,您可以将匹配设置为基于组,以便轮组中的任何用户都需要使用密钥身份验证,而其他用户可以使用密码。
我知道您想在不更改系统配置文件的情况下执行此操作,但有充分的理由说明这是不可能的。在您看来,您的用户应该能够制定更安全的登录策略是有道理的,但仅仅因为在您看来这是一个更安全的选项,并不能改变这样一个事实,即它仍然是对系统登录要求的更改远程用户。
要理解为什么这是一个问题,请想象一下相反的场景。系统管理员(可以更改系统配置文件)将系统设置为仅基于密钥登录。然后,某个用户出现并且只能访问自己的用户文件,并将其帐户设置为允许密码身份验证,从而覆盖系统策略。蜂鸣。安全问题!
这是否解释了为什么您想要进行的更改只能从系统配置文件中进行?
答案3
给自己添加限制,不改变任何东西
如果确定 ssh 将是用于登录尝试的客户端,为什么不在客户端呢?如果是,请尝试更改 ssh_config 而不是 sshd_config。检查参数“PasswordAuthentication No”和 PreferredAuthentications