使用VS Code Remote-SSH的2FA?

4
我正在使用Visual Studio Code中的Remote-SSH扩展连接到远程机器。这台远程机器受到Duo的双因素认证保护。当我在终端中进行SSH登录(不在VS Code中),我能够完美地登录 - 终端会提示我通过2FA过程。然而,在使用扩展时,我无法登录。在输入我的SSH主机名和ID之后,VS Code界面一遍又一遍地提示我输入密码,但没有进展。

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

3个回答

9

进入 VS Code 设置并启用此设置,remote.SSH.showLoginTerminal。这将弹出终端以便通过 2FA 登录。


谢谢您的回答。我尝试了这个方法,但好像不起作用。我正在使用WSL中的代码来远程探索到OSX笔记本电脑。在更新了showLoginTerminal设置后,我现在可以看到终端出现在底部窗格中。但是,在我输入密码后,连接会以“[21:04:08.803]无法从服务器输出解析远程端口”的错误信息终止。 - a5af
@a5af 我不知道你是否已经找到解决方案。我做了一些搜索,其他人也报告了类似的错误。这个链接提供了两种解决方案,也许其中之一适用于你。最好的问候。 - Ifeanyichukwu Nwosu

7
我遇到了同样的问题,并通过使用SSH ControlMaster进行单点登录来解决它。
如果您使用@连接到相关机器,则可以将以下内容添加到您的~/.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将自动使用已经建立的连接连接您。 enter image description here 在我的情况下,我选择的昵称是“ody”。连接VSC的远程开发扩展后,左下角会显示以下内容,并允许我浏览远程计算机上的文件。

enter image description here

来自FASCR

请注意,所有后续连接都依赖于初始连接 - 如果您退出或关闭初始连接,则所有其他连接也将终止。如果意外发生这种情况,显然会很烦人。通过在后台设置主连接可以轻松避免这种情况:

ssh -CX -o ServerAliveInterval=30 -fN <nickname>

-fN 让它进入后台并保持空闲状态,身份验证后。(C代表压缩,Y代表X转发,o ServerAliveInterval=30是为了防止断开连接,与ControlMaster无关但几乎总是有帮助的。)

请注意,包括X显示转发在内的所有端口转发都必须由初始连接设置,并且不能更改。


1
很遗憾,在Windows上似乎无法使用控制主机。 - Jack
哦,可能是这样。我只在MacOS上检查了。抱歉 :/ - L.Lauenburg

0

您可以使用~/.ssh/config文件来配置您的主机名和密钥。但我不知道是否有一种方法可以保存密码以方便使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接