我即将强制使用 进行 ssh 登录时进行双因素身份验证libpam_google_authenticator
。我希望能够在用户从某些 IP 地址登录时免除此要求。
我有这个/etc/pam.d/sshd
:
身份验证需要 pam_google_authenticator.so
这是/etc/ssh/sshd_config
:
ChallengeResponseAuthentication 是
我考虑过使用Match
中的指令sshd_config
,但手册页建议ChallengeResponseAuthentication
不能这样使用。无论如何,我不确定这是否能满足pam
要求。
有没有办法免除具有特定 IP 地址的客户端的质询-响应?
答案1
我没有专门使用 google auth 执行此操作,但我使用 pam_access 和 substack 执行了类似操作。我执行的操作是在 /etc/pam.d 中创建一个名为 yubi-auth 的文件。它包含:
auth sufficient pam_yubico.so
auth required pam_combo.so
然后在 password-auth 中,我使用auth substack yubi-auth
。结果是,如果用户来自 acceess.conf 中批准的 ip 地址,他们不必使用 yubikey,否则他们必须使用它。(如果他们愿意,他们可以随时使用它)。
我还没有用 google auth 测试过这种方法,但我认为相同的逻辑应该可行。
答案2
您可以运行具有不同配置的两个 sshd 实例。在极端情况下:使用一个修补版本(因为通过配置文件可能无法实现),该版本使用与 ssh 不同的 PAM 字符串,以便您可以为两个实例创建不同的 PAM 配置。或者,您可以在 chroot / lxc 中启动一个实例,以便它看到不同的 PAM 配置。这可能更容易(维护)。
然后可以通过 iptables (DNAT) 进行客户端选择。只需将相应的客户端发送到第二个实例的端口(或 lxc IP)。