AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1531248
Accepted
trolley
trolley
Asked: 2024-10-27 05:13:33 +0800 CST2024-10-27 05:13:33 +0800 CST 2024-10-27 05:13:33 +0800 CST

当为 SSH 启用双因素身份验证时,SCP 选项卡完成不起作用

  • 772

我按照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 键,消息总是成对出现。

有人知道我可以做什么(如果有的话)来实现这个目标吗?

pam
  • 2 2 个回答
  • 48 Views

2 个回答

  • Voted
  1. user10489
    2024-10-27T12:34:52+08:002024-10-27T12:34:52+08:00

    为了使制表符补全功能正常工作,ssh 必须在不需要交互式身份验证的情况下工作。

    有两种方法可以做到这一点。常用的方法是使用创建的 ssh 密钥ssh-keygen,并将公共部分(使用ssh-copy-id)复制到authorized_keys远程 ssh 配置中的文件中。如果不绕过或禁用 2fa,这种方法很可能无法奏效,并且会破坏您的目标。

    另一种方法是使用启用了该ControlMaster选项的共享 ssh 连接,并使用其他几个选项进行了调整。这样实际上您只需使用 ssh 登录一次,所有后续 ssh 连接都使用原始连接,而无需重新进行身份验证。当第一个(“主”)连接关闭时,所有连接都将断开。或者,您可以设置超时来限制ControlPersist在第一个连接关闭且其余连接处于空闲状态后后台连接保持打开的时间。(或者随时手动强制关闭它……)

    但请注意,使用 ControlMaster 选项时,所有 ssh 连接都通过单个 tcp 套接字进行多路复用,并共享该带宽。因此,如果您依靠多个 tcp 套接字来获得更大的带宽,则需要绕过这些流的主连接。

    • 1
  2. Best Answer
    trolley
    2024-10-27T21:04:24+08:002024-10-27T21:04:24+08:00

    @user10489 的回答让我找到了解决方案。我的sshd_confighadAuthenticationMethods publickey,keyboard-interactive和删除keyboard-interactive解决了问题,但也导致不再调用 PAM 模块来请求 TOTP 代码。

    我像这样修改了它,并且必须将它移动到我的底部sshd_config,现在我不会在我的 LAN 上提示 TOTP,但在 LAN 外可以,并且制表符补全至少在我的 LAN 上有效,这确实是我想要的:

    AuthenticationMethods publickey,keyboard-interactive
    
    Match Address 192.168.1.*
        AuthenticationMethods publickey
    
    • 0

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve