ssh -o PreferredAuthentications:“密码”和“键盘交互”之间有什么区别?


36

双方PreferredAuthentications=passwordPreferredAuthentications=keyboard-interactive会提示输入密码,有啥它们之间的区别?

我用关键字ssh PreferredAuthentications和键盘交互的方式在Google上搜索了Google,但没有找到答案。

我注意到的唯一区别是提示字符串(user@host's password:vs. Password:):

$ ssh -o PreferredAuthentications=password,keyboard-interactive my-host
root@my-host's password:
Password:
Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive).

更新(2018-04-09):

为便于参考,以下内容摘自jouell的answer中提到的SSH:TDG书

"keyboard-interactive"用户身份验证主要用于适应PAM服务器端的身份验证。它为用户提供了多个质询-响应对话框,服务器在其中向用户发送文本查询,用户键入响应,并且此过程可以重复任意多次。因此,例如,您可以PAM为SSH 配置一个模块,该模块使用RSA安全令牌一次性密码方案执行身份验证。人们对此感到困惑,因为默认情况下,"keyboard-interactive"身份验证通常仅在单个质询-响应周期中实施密码身份验证,该周期仅提示输入密码,因此看起来与"password"身份验证。如果您不是故意将两者用于不同的目的,则可能要禁用一个或另一个以避免最终用户的困惑。


1
有关密码 auth的信息,请参阅RFC 4252;对于Keyboard-interactive,请参阅RFC 4256
pynexj

Answers:


37

SSH协议具有多种身份验证方法。该密码键盘交互是其中的两个。

密码验证是一个密码一个简单的请求。服务器没有发送特定的提示。所以,它的客户端,选择如何标记提示(在“用户@主机的密码”的提示是从OpenSSH的客户,如sshsftp等)。

键盘交互认证是为信息的任意数量的更复杂的要求。对于每条信息,服务器都会发送提示标签。此外,它允许服务器对整个“表单”进行冗长的描述。服务器还可以指定哪些输入是秘密的(用户键入时需要混淆),哪些不是。

尽管在大多数情况下,键盘交互式身份验证用于请求单个“秘密”密码提示,所以密码身份验证几乎没有什么区别。

从协议角度来看,这是不同的。


从实现的角度来看,使用OpenSSH服务器,可以将键盘交互式身份验证挂接到双因素(或多因素)身份验证,例如由通用PAM机制Kerberos提供的身份验证。

从客户的角度来看,另一个差异是本地化。使用密码身份验证,客户端可以本地化“ Password”标签,因为它知道服务器要求输入密码。使用键盘交互式身份验证,即使服务器仅要求输入一个密码,客户端也无法本地化提示(除非使用AI),因为它是通用提示。


2

您已经知道什么是“密码”。从非常高级的级别(不是砖级协议的东西)开始,将“交互式键盘”视为您使用Radius和/或SecurID等使用2FA的方法。它提供了质询和响应对话框:ssh.com有一个不错的选择简短说明。进一步强调键盘交互是密码的保护伞。尊重作者,这有点令人困惑。

另请参阅蜗牛书定义。我们经常将其用于受RSA保护的盒子。

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.