我正在运行 Debian Linux jessie 和 OpenSSH 版本 6.7。我使用AuthenticationMethods
中的指令/etc/ssh/sshd_config
。我知道这些字符串可以被识别AuthenticationMethods
:
keyboard-interactive
gssapi-with-mic
password
publickey
在哪里可以找到全部可以与 ? 一起使用的有效字符串AuthenticationMethods
(这样的列表不在 的手册页中sshd_config
)。
答案1
答案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
键盘交互认证
对于键盘交互式身份验证,还可以通过添加冒号后跟设备标识符bsdauth
或pam
根据服务器配置将身份验证限制到特定设备。例如,
AuthenticationMethods keyboard-interactive:bsdauth
将限制对bsdauth
设备的键盘交互式身份验证。
多重公钥认证
如果 publickey 方法列出多次,sshd(8)
则验证已成功使用的密钥不会在后续身份验证中重复使用。
例如,
AuthenticationMethods publickey,publickey
需要使用两个不同的公钥进行成功的身份验证。
笔记
分隔一对身份验证选项的逗号 ( ,
) 分隔符会首先一起尝试(AND 逻辑),然后再尝试任何空格分隔符。
使用空格 ( ) 分隔符符号来分隔一个或多个身份验证选项(这些选项可以用逗号连接),并分别进行尝试(或逻辑)。
注意:冒号 ( :
) 分隔符用于将其附带的身份验证方法限制为特定的身份验证设备路径机制,例如pam
、bsdauth
和。对于键盘交互式身份验证,还可以通过附加冒号后跟设备标识符、或skey
来将身份验证限制为特定设备,具体取决于服务器配置。例如,将键盘交互式身份验证限制为设备。bsdauth
pam
skey
keyboard-interactive:bsdauth
bsdauth
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
”。