Answers:
您可以在 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
jasonwryan的答案将是进行此更改的正确方法。我唯一要添加的是,您可以将匹配设置为基于组,这样轮组中的任何用户都将需要使用密钥身份验证,而其他用户则可以使用密码。
我知道您想在不更改系统配置文件的情况下执行此操作,但是有充分的理由说明为什么这不可能。在您看来,您的用户应该能够制定更安全的登录策略是有道理的,但是仅仅因为您认为这是一个更安全的选项并不能改变它仍然更改了系统登录要求的事实。远程用户。
要了解为什么这是一个问题,可以想象一下相反的情况。系统管理员(可以更改系统配置文件)将系统设置为仅基于密钥的登录。然后,一些用户出现并且只能访问自己的用户文件,并设置其帐户以允许密码验证,从而覆盖了系统策略。蜂鸟。安全问题!
这是否解释了为什么您要进行的更改只能通过系统配置文件进行?
authorized_keys
施加更多限制不会有安全问题。例如,authorized_keys
可以将某些键限制为某些命令。
为自己添加限制,不更改任何内容
如果确定ssh是用于尝试登录的客户端,为什么不在客户端?如果是,请尝试更改ssh_config而不是sshd_config。检查参数“ PasswordAuthentication No”和PreferredAuthentications