我按照https://ubuntu.com/tutorials/configure-ssh-2fa在我的 Ubuntu 22.04.5 系统上设置了 SSH 的 2FA 保护。我只启用了基于密钥的身份验证,因此这可能有点过度,但感觉更安全,即使我的私钥以某种方式丢失了,它本身也不够。
我不想在从 LAN 上的系统连接时输入 TOTP 代码,因此我的/etc/pam.d/sshd
代码如下:
auth [success=done default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth required pam_google_authenticator.so
/etc/security/access-local.conf
有:
+ : ALL : 192.168.1.0/24
+ : ALL : LOCAL
- : ALL : ALL
一切正常。当我在局域网之外时,系统会提示我输入 TOTP 代码,而在局域网内时则不会。
我现在的问题是 tab 补全功能scp
不再起作用。例如,在另一个系统上,我尝试:
$ scp server:someth<TAB>
并且something
应该自动完成,假设该文件存在。当我没有启用 PAM 模块时,这可以正常工作,但启用后则不起作用。即使在我使用 LAN 并且没有提示输入 TOTP 代码的情况下,它也会失败。当我按 TAB 时,我会在服务器中收到如下消息/var/log/auth.log
:
Oct 26 17:08:13 server sshd[1136620]: Connection closed by authenticating user user 192.168.1.182 port 53145 [preauth]
Oct 26 17:08:13 server sshd[1136732]: Connection closed by authenticating user user 192.168.1.182 port 53146 [preauth]
每按一次 TAB 键,消息总是成对出现。
有人知道我可以做什么(如果有的话)来实现这个目标吗?