键盘交互认证

键盘交互认证

我正在运行 Debian Linux jessie 和 OpenSSH 版本 6.7。我使用AuthenticationMethods中的指令/etc/ssh/sshd_config。我知道这些字符串可以被识别AuthenticationMethods

keyboard-interactive
gssapi-with-mic
password
publickey

在哪里可以找到全部可以与 ? 一起使用的有效字符串AuthenticationMethods(这样的列表不在 的手册页中sshd_config)。

答案1

这一点没有得到非常明确的记录(或者根本没有记录)。但这是我能找到的。在 OpenSSH 6.2 中,只有 4 种方法

只有四种允许的方法:publickey、password、hostbased 和 keyboard-interactive。

其他人则认为需要更多文档也一样。参见附件 3045对于 OpenSSH 7.5 的规定如下:

可用的身份验证方法有:gssapi-with-mic、hostbased、keyboard-interactive、none(用于在启用PermitEmptyPassword时访问无密码账户)、password和publickey。

希望有所帮助。

答案2

网络上永远没有办法提前列出 OpenSSH 的所有活动身份验证方法:您只能选择第一个,然后再选择下一个……

这是一项安全功能。你想知道吗?/etc/ssh/sshd_config直接在服务器上查看。哦,你不能?这是设计上的安全性。

因此,我将进一步扩展该列表,超出官方 OpenSSL 文档所涵盖的范围,因为我已经对 OpenSSH 代码进行审查一段时间了。

可用的身份验证方法包括:

  • gssapi-with-mic”,
  • hostbased”,
  • keyboard-interactive”,
  • “ ”(启用none后用于访问无密码账户),PermitEmptyPassword
  • password“ 和
  • publickey”。

AuthenticationMethods指定必须成功完成才能授予用户访问权限的身份验证方法。此选项后面必须跟一个或多个以逗号分隔的身份验证方法名称列表,或跟单个字符串any以指示接受任何单个身份验证方法的默认行为。如果覆盖了默认值,则成功的身份验证需要完成至少一个列表中的每种方法。

公钥认证

例如,

AuthenticationMethods publickey,password publickey,keyboard-interactive

要求用户完成公钥身份验证,然后进行密码或键盘交互身份验证。每个阶段只提供一个或多个列表中的下一个方法,因此对于此示例,在公钥之前无法尝试password或身份验证。keyboard-interactive

键盘交互认证

对于键盘交互式身份验证,还可以通过添加冒号后跟设备标识符bsdauthpam根据服务器配置将身份验证限制到特定设备。例如,

AuthenticationMethods keyboard-interactive:bsdauth

将限制对bsdauth设备的键盘交互式身份验证。

多重公钥认证

如果 publickey 方法列出多次,sshd(8)则验证已成功使用的密钥不会在后续身份验证中重复使用。

例如,

AuthenticationMethods publickey,publickey

需要使用两个不同的公钥进行成功的身份验证。

笔记

分隔一对身份验证选项的逗号 ( ,) 分隔符会首先一起尝试(AND 逻辑),然后再尝试任何空格分隔符。

使用空格 ( ) 分隔符符号来分隔一个或多个身份验证选项(这些选项可以用逗号连接),并分别进行尝试(或逻辑)。

注意:冒号 ( :) 分隔符用于将其附带的身份验证方法限制为特定的身份验证设备路径机制,例如pambsdauth和。对于键盘交互式身份验证,还可以通过附加冒号后跟设备标识符、或skey来将身份验证限制为特定设备,具体取决于服务器配置。例如,将键盘交互式身份验证限制为设备。bsdauthpamskeykeyboard-interactive:bsdauthbsdauth

none请注意,列出的每个身份验证选项(除)AuthenticationMethods也应在配置中明确启用其相应的配置设置。例如,如果在设置pubkey中使用了选项AuthenticationMethods,则其附带的配置行PubkeyAuthentication on也必须在其配置文件中。

OpenSSH 代码审阅者的详细信息

  • 渠道类型:预认证(预通道)
  • CLI 选项:-oAuthenticationMethods=XXXX”
  • 进程上下文:main
  • SSH 服务:ssh-userauth(SSH2_MSG_USERAUTH_REQUEST)
  • 选项.auth_methods[]/auth2_setup_methods_lists()/input_userauth_request()
  • AuthenticationMethods 默认为“ any”。

相关内容