我遇到了同样的问题,并通过使用 SSH ControlMaster for Single Singe-On 解决了它。
如果您使用<user_name>@<host_name> 连接到相关机器,您只需将以下内容添加到您的~/.ssh/config:
Host <nickname>
User <user_name>
HostName <host_name>
ControlMaster auto
ControlPath ~/.ssh/%r@%h:%p
如果您现在在运行 ssh <nickname> 的终端中打开一个新会话,您将被要求输入密码和 2FA 密钥。但所有其他后续 ssh 会话(包括通过 ssh 运行的 svn、rsync 等)将搭载初始连接,无需重新验证。
您现在可以在 VS Code 中,从命令面板(F1,⇧⌘P)中选择Remote-SSH: Connect to Host...,然后输入:<nickname>,ControlMaster 将使用已经建立的连接自动连接您。
就我而言,我选择的昵称是“ody”。连接 VSC 的远程开发扩展后,左下角显示以下内容,让我浏览远程机器上的文件。
来自FASCR:
请注意,所有后续连接都依赖于初始连接 - 如果您退出或终止初始连接,所有其他连接也会死亡。如果意外发生,这显然会很烦人。通过在后台设置主连接很容易避免:
ssh -CX -o ServerAliveInterval=30 -fN <nickname>
-fN 使其在验证后进入后台并处于空闲状态。 (C 表示压缩,Y 表示 X 转发,o ServerAliveInterval=30 以防止连接断开与 ControlMaster 无关,但几乎总是有帮助。)
请注意,所有端口转发,包括X显示转发,都必须由初始连接设置,不能更改。