su.*_*oot 46 ssh authentication openssh
双方PreferredAuthentications=password并PreferredAuthentications=keyboard-interactive会提示输入密码,有啥它们之间的区别?
我谷歌搜索关键字ssh PreferredAuthentications password keyboard-interactive difference但没有找到答案。
我注意到的唯一区别是提示字符串(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).
Run Code Online (Sandbox Code Playgroud)
为便于参考,以下内容来自jouell 的回答中提到的SSH:TDG 一书。
"keyboard-interactive"用户身份验证主要用于PAM在服务器端进行身份验证。它提供与用户的多重质询-响应对话,其中服务器向用户发送文本查询,用户输入响应,并且该过程可以重复任意次数。因此,例如,您可以PAM为 SSH配置一个模块,该模块使用RSA 安全令牌或一次性密码方案执行身份验证。人们对此感到困惑,因为默认情况下,"keyboard-interactive"身份验证通常只是在单个质询-响应周期中实现密码身份验证,只是提示输入密码,因此看起来与"password"验证。如果您不是为了不同的目的故意使用这两者,您可能希望禁用其中一个以避免最终用户混淆。
Mar*_*ryl 43
SSH 协议具有多种身份验证方法。该密码和键盘交互是其中的两个。
该密码验证是一个密码一个简单的请求。服务器没有发送特定的提示。所以,它的客户端,选择如何标记提示(在“用户@主机的密码”的提示是从OpenSSH的客户,如ssh,sftp等)。
该键盘交互认证是为信息的任意数量的更复杂的要求。对于每条信息,服务器都会发送提示标签。此外,它允许服务器提供整个“表单”的详细描述。服务器还可以指定哪些输入是秘密的(用户输入时需要进行混淆),哪些不是。
尽管在大多数情况下,键盘交互身份验证用于请求单个“秘密”密码提示,因此与密码身份验证几乎没有任何区别。
这就是协议角度的不同之处。
从实现的角度来看,使用 OpenSSH 服务器,键盘交互身份验证可以连接到双因素(或多因素)身份验证,例如由通用 PAM 机制或Kerberos 提供。
从客户的角度来看,另一个区别是本地化。使用密码验证,客户端可以本地化“密码”标签,因为它知道服务器要求输入密码。使用键盘交互身份验证,即使服务器只要求输入一个密码,客户端也无法本地化提示(除非它使用 AI),因为它是一个通用提示。
| 归档时间: |
|
| 查看次数: |
43868 次 |
| 最近记录: |