有人可以在/ etc / ssh / sshd_config文件中解释“ PasswordAuthentication”吗?


28

此页面上,给出的解释是:

选项PasswordAuthentication指定是否应使用基于密码的身份验证。为了增强安全性,必须始终将此选项设置为yes。

但是,它无法提供任何用例场景来阐明“是”或“否”何时合适。有人可以进一步详细说明吗?

Answers:


21

您的链接指向过期10年的文档。

SSH支持多种验证用户身份的方法,最常见的一种方法是询问登录名和密码,但是您也可以验证用户的登录名和公共密钥。如果将PasswordAuthentication设置为no,则将不再能够使用登录名和密码进行身份验证,而必须使用登录名和公共密钥(如果PubkeyAuthentication设置为yes)。


好的,所以仅适用于authorized_key2:(1)注释掉AuthorizedKeysFile(2)PasswordAuthentication否(3)PubkeyAuthentication是(4)ChallengeResponseAuthentication否(5)测试它……如果它仍然接受密码,还请添加UsePam否
YumYumYum

使用以下设置:fpaste.org/114544/04202660仅允许通过〜/ .ssh / authorized_keys2而不允许使用用户名/密码进行SSH登录
YumYumYum 2014年

1
它的默认值是多少?我的意思是,如果我不指定任何“ PasswordAuthentication”怎么办?
Riccardo SCE 2014年

@TSERiccardo:没人回答你的问题吗?真可惜,怪!
Timo

1
@RiccardoSCE根据sshd_config手册页,PasswordAuthentication的默认值为“是”。
海星

53

请注意,PasswordAuthentication设置不控制所有基于密码的身份验证。ChallengeResponseAuthentication通常还要求输入密码。

PasswordAuthentication控件支持RFC-4252(第8节)中定义的“密码”身份验证方案。ChallengeResponseAuthentication控件支持RFC-4256中定义的“键盘交互”身份验证方案。从理论上讲,“键盘交互”身份验证方案可以向用户提出许多多问的问题。在实践中,它通常仅询问用户密码。

如果要完全禁用基于密码的身份验证,请将BOTH PasswordAuthentication和ChallengeResponseAuthentication都设置为“ no”。如果您是腰带式的,请考虑将UsePAM也设置为“ no”。

基于公钥/私钥的身份验证(由PubkeyAuthentication设置启用)是一种独立的身份验证类型,当然不涉及将用户密码发送到服务器。

有人会认为,使用ChallengeResponseAuthentication比PasswordAuthentication更安全,因为它很难自动化。因此,他们建议禁用密码认证,而启用挑战响应认证。此配置还鼓励(但不一定阻止)将公钥身份验证用于任何自动系统登录。但是,由于SSH是基于网络的协议,因此服务器无法保证坐在挑战键盘上的用户实际上提供对ChallengeResponseAuthentication(又称“键盘交互”)的响应,只要挑战始终并且仅包含询问用户密码。


7
我希望能对某些功能有一些解释UsePAM……
Alexey 2016年

3

PasswordAuthentication是最简单的实现,因为无需执行任何操作。相对的部分是您通过加密连接将密码发送到服务器。如果服务器受到攻击,这可能是一个安全问题,因为这样便可以捕获密码。
使用公钥,您的密码不会传输到服务器,虽然更安全,但需要更多设置。


这个答案有点老了,但我想补充一点:关于Pubkey身份验证的妙处在于,根本没有秘密传输到服务器。私钥在您的计算机上仍然是秘密的,即,您不会意外地将任何类型的秘密传输到受感染或MITM服务器。因此,Pubkey绝对优于密码身份验证。但是无论如何,是的,密码身份验证更容易实现。
扬d

设置它并不是一件麻烦事,只是与懒惰不做它一样。
sudo

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.