我已经设置了 ssh 密钥,但 VSCode 一直要求输入密码

suk*_*ama 10 ssh ssh-keys visual-studio-code vscode-remote

我正在使用 macbook(MacOS) 连接到远程 Ubuntu 服务器。我将公共 ssh 密钥复制到服务器,ssh-copy-id并检查了 ssh 密钥在终端上是否有效。当我这样做时ssh username@x.x.x.x,无需输入密码即可建立连接)。但是,当我尝试通过 Visual Studio Code 连接到服务器时,VSCode 不断要求输入密码。有没有办法来解决这个问题?

提前致谢!

Von*_*onC 9

检查此microsoft/vscode-remote-release问题 2518是否适用:

您应该能够通过删除日志中的文件(在远程服务器端,作为 sudo root)或运行命令“Kill VS Code Server on Host...”来摆脱此/home/#####/.vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/vscode-remote-lock.#####.78a4c91400152c0f27ba4d363eb56d2835f9903a状态unlink

如果再次出现这种情况,您可以尝试设置remote.SSH.useFlock

在命令选项板(视图->命令选项板)中运行的确切命令是:

Remote-SSH: Kill VS Code Server on Host...
Run Code Online (Sandbox Code Playgroud)

还:

就我而言,~/.vscode-server使用终端通过 ssh 连接到容器后删除整个目录是可行的。
(仅删除~/.vscode-server/bin无效。)

OP sukrama在评论中确认已解决该问题

这是配置文件中 ssh 密钥路径的问题。


suk*_*ama 6

是配置文件有问题。
VSCode 需要“绝对”路径。

在 MacOS 的情况下,ssh-copy-id似乎只复制相对于用户的绝对路径。
换句话说,它在“ /Users/username”之前省略了“ /.ssh”。

/Users/usernameIdentityFile属性中添加“ ”.ssh/config解决了问题。


Sat*_*lva 5

这是一个快速方便的修复方法:您不必每次都删除整个 .vscode-server 文件夹!问题似乎是一个名为“vscode-remote-lock...”的文件。它可以位于 ~/.vscode-server/bin/ 中的文件夹内。该文件是在每次通过 vscode ssh 登录时创建的。在远程主机上运行以下脚本。每当创建该文件时,它都会删除该文件:

while true
do
  if ls /home/<your-username>/.vscode-server/bin/*/vscode-remote-lock.<your-username>.* 1> /dev/null 2>&1; then
    find /home/<your-username>/.vscode-server/bin/*/ -name vscode-remote-lock.<your-username>.* -delete
    echo "Killed the troublemaker! ^_^"
  fi
done
Run Code Online (Sandbox Code Playgroud)

文件名和文件夹名称可能因机器而异。因此,找到您计算机上的名称并将其粘贴到脚本中。然后运行脚本就可以了。