如何使用密码通过远程ssh登录锁定自己的帐户?


10

我不想完全禁用使用密码进行的远程登录,但是我想这样做,以便只能通过密钥对身份验证来访问我的帐户(还有其他一些用户希望使用密码登录)。是否可以在每个用户的基础上进行更改,而理想情况下无需更改系统设置?

为了明确起见,我的帐户具有sudo访问权限,因此我不想锁定密码。

Answers:


9

您可以在 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


这已经很好了,但是我想看看是否可以不编辑sshd_config而完成。
phunehehe

2
考虑到您要进行系统更改,即影响其他用户的更改,这似乎不太可能...
jasonwryan 2011年

那〜/ .ssh / config呢?您是否尝试过在其中包含设置?
ttyS0

1
在客户端(而不是服务器)中使用AFAK〜/ .ssh / config。
亚当·伯特

1

jasonwryan答案将是进行此更改的正确方法。我唯一要添加的是,您可以将匹配设置为基于组,这样轮组中的任何用户都将需要使用密钥身份验证,而其他用户则可以使用密码。

我知道您想在不更改系统配置文件的情况下执行此操作,但是有充分的理由说明为什么这不可能。在您看来,您的用户应该能够制定更安全的登录策略是有道理的,但是仅仅因为您认为这是一个更安全的选项并不能改变它仍然更改了系统登录要求的事实。远程用户。

要了解为什么这是一个问题,可以想象一下相反的情况。系统管理员(可以更改系统配置文件)将系统设置为仅基于密钥的登录。然后,一些用户出现并且只能访问自己的用户文件,并设置其帐户以允许密码验证,从而覆盖了系统策略。蜂鸟。安全问题!

这是否解释了为什么您要进行的更改只能通过系统配置文件进行?


很难想一想,因为如果我是不使用sudo的普通用户,那么我可以很高兴设置我的密钥然后锁定密码,从而使我的帐户成为“仅密钥认证”。
phunehehe

换一种说法,我可以在每次注销时锁定密码,这将禁止我的帐户登录所有密码。然后,一旦我用密钥登录,便可以再次启用sudo密码。显然,这不是一个好的解决方案,但它使我认为这是可能的。
phunehehe

1
您只能这样做,因为系统管理员允许密钥身份验证,并且您只是为自己添加了限制,而不更改任何内容。禁用密码只会将其设置为无效值,不会更改系统守护程序允许的身份验证。
卡莱布

“为自己增加限制,什么也不要改变”,这正是我想要做的。
phunehehe

@Caleb:如phunehehe所希望的那样,允许authorized_keys施加更多限制不会有安全问题。例如,authorized_keys可以将某些键限制为某些命令。
吉尔(Gilles)'所以

0

为自己添加限制,不更改任何内容

如果确定ssh是用于尝试登录的客户端,为什么不在客户端?如果是,请尝试更改ssh_config而不是sshd_config。检查参数“ PasswordAuthentication No”和PreferredAuthentications

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.