我正在使用Visual Studio代码中的Remote-SSH扩展来连接到远程计算机。这台远程机器受Duo的双因素身份验证保护。当我在终端中SSH (在VS代码之外)时,我能够完美地登录-终端提示我通过2FA过程。但是,在VS代码中,当我使用扩展时,我无法登录。在输入我的SSH主机名和ID之后,VS Code界面会一次又一次地提示我输入密码,并且不会超过这一步。
以前有没有人遇到过这个问题?我很想知道是否有现有的解决方案。不幸的是,2FA是由我的公司管理的,我不能关闭它。
发布于 2021-11-15 10:11:21
我遇到了同样的问题,并通过使用单点登录的SSH ControlMaster解决了它。
如果您使用<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代码中,从命令面板(F1,Remote-SSH: Connect to Host... P)中选择Remote-SSH: Connect to Host...,然后简单地输入:<nickname>⇧⌘ControlMaster将使用已经建立的连接自动连接你。

在我的例子中,我选择的昵称是"ody“。连接VSC后,Remote Development扩展在左下角显示以下内容,让我浏览远程机器上的文件。

请注意,所有后续连接都依赖于初始连接-如果您退出或终止初始连接,则所有其他连接也将终止。如果这是偶然发生的,这显然会很烦人。通过在后台设置主连接可以轻松避免这种情况:
ssh -CX -o ServerAliveInterval=30 -fN <nickname>
-fN使其在身份验证后进入后台并处于空闲状态。(C表示压缩,Y表示X转发,o ServerAliveInterval=30表示防止连接丢失,这些与ControlMaster无关,但几乎总是有帮助的。)
请注意,所有端口转发,包括X显示转发,都必须由初始连接设置,并且不能更改。
发布于 2021-10-25 14:12:00
您可以使用~/.ssh/config文件来配置主机名和密钥。但我不知道是否有一种方法可以方便地保存密码。
发布于 2022-02-19 16:20:41
转到VS代码中的设置并启用此设置,remote.SSH.showLoginTerminal.这将启动终端,以便以这种方式通过2FA登录。
https://stackoverflow.com/questions/69277631
复制相似问题