我正在尝试找到一种配置,该配置默认需要公钥和 2fa,但对于同一用户只需要来自白名单 IP 的公钥。

使用下面的配置,从外部 IP 登录可以按预期工作,但从白名单 IP 登录会失败,并且我看到此消息。

Authenticated with partial success.
Permission denied (keyboard-interactive).

我相信访问文件在跳过 2fa 时具有预期的效果,但是 AuthenticationMethods 键盘交互失败。

跳过 2fa 时可以跳过键盘交互吗?

我当前的配置如下

sshd 配置文件

# success=1 skips pam_google_authenticator when local ip
auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth required pam_google_authenticator.so

access-local.conf 其中 ### 是本地 IP

+ : ALL : ###.###.###.### 
- : ALL : ALL

/etc/ssh/sshd_config

ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive

我确实有一个可行的替代方法并证明了我关于键盘交互的观点,但我想使用访问文件。

Match address ###.###.###.###
  AuthenticationMethods publickey

Match all
  AuthenticationMethods publickey,keyboard-interactive

2

  • 1
    KeyboardInteractive(以前称为ChallengeResponseSSH 协议中唯一可用于实现 TOTP 2FA(Google Authenticator 实现的那种)的身份验证机制。它是一种类似于聊天的通用身份验证,在这种情况下,它应该传输一次性密码代码(而不是传统的 PAM 设置,通过它请求未加密的用户密码)。


    – 


  • 请参阅了解更详细的解释。我的观点是,没有跳过任何内容;您的 KbdInteractive您的 2FA,因此当您看到 KbdInteractive 失败的报告时,这是因为 2FA PAM 插件报告失败。


    – 


0