使用 VS Code 远程 SSH 进行 2FA?

问题描述 投票:0回答:3

我正在使用 Visual Studio Code 中的 Remote-SSH 扩展来连接到远程计算机。此远程计算机受 Duo 的双因素身份验证保护。当我在终端(VS Code 之外)中使用 SSH 时,我能够完美登录 - 终端会提示我完成 2FA 过程。但是,在 VS Code 中,当我使用该扩展时,我无法登录。输入我的 SSH 主机名和 ID 后,VS Code 界面一遍又一遍地提示我输入密码,并且不会再继续下去。

有人遇到过这个问题吗?我很想知道是否有现有的解决方案。不幸的是,2FA 由我的公司管理,我无法将其关闭。

visual-studio-code two-factor-authentication
3个回答
8
投票

进入 VS Code 中的设置并启用此设置,remote.SSH.showLoginTerminal。这会拉起终端,以便通过 2FA 登录。


6
投票

我遇到了同样的问题,并通过使用 SSH ControlMaster for Single Single-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 显示转发,都必须由初始连接设置且无法更改。


0
投票

您可以使用

~/.ssh/config
文件来配置主机名和密钥。但不知道有没有办法保存密码方便。

© www.soinside.com 2019 - 2024. All rights reserved.