【问题标题】:I've already setup the ssh key, but VSCode keeps asking for password我已经设置了 ssh 密钥,但是 VSCode 一直要求输入密码
【发布时间】:2020-12-20 18:30:54
【问题描述】:

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

提前致谢!

【问题讨论】:

    标签: visual-studio-code ssh ssh-keys vscode-remote


    【解决方案1】:

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

    您应该能够通过删除日志中的文件(在远程服务器端,以 sudo root 身份)/home/#####/.vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/vscode-remote-lock.#####.78a4c91400152c0f27ba4d363eb56d2835f9903a(带有unlink)或运行命令“Kill VS Code Server”来摆脱这种状态在主机上...”

    如果再次发生,您可以尝试设置remote.SSH.useFlock

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

    Remote-SSH: Kill VS Code Server on Host...
    

    还有:

    在我的情况下,使用终端通过 ssh 连接到容器后删除整个 ~/.vscode-server 目录有效。
    (仅删除 ~/.vscode-server/bin 无效。)

    OP sukrama 确认 in the comments 已解决问题

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

    【讨论】:

    • 我尝试删除 ~/.vscode-server 并重新安装 .vscode-server (通过再次打开 VSCode 上的远程服务器)。它没有用:(谢谢你的回答。
    • @sukrama 好的。关于该问题的其他建议如何? remote.SSH.useFlock, `Kill VS Code Server on Host...`, ...
    • 'Kill VS Code Server on Host' 不起作用。此外,设置 remote.SSH.useFlock 使情况变得更糟(VSCode 一直要求输入密码而没有连接到服务器)。
    • @sukrama 您的密钥受密码保护吗?
    • 不,它不受密码保护。我确实解决了这个问题。配置文件中的 ssh 密钥路径有问题。
    【解决方案2】:

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

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

    .ssh/configIdentityFile 属性中添加“/Users/username”解决了这个问题。

    【讨论】:

    【解决方案3】:

    这里有一个快速方便的解决方法:您不必每次都删除整个 .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
    

    文件名和文件夹名可能因机器而异。因此,在您的机器上找到名称并将它们粘贴到脚本中。然后运行脚本,一切顺利。

    【讨论】:

      【解决方案4】:

      我的 Windows 机器中的 VSCode 要求输入密码,即使我的密钥配置正确(它在终端上工作)。

      我的问题是 VSCode 选择了错误的用户。我使用的是在我的 ssh 配置文件中配置的主机,而 VSCode 将用户设置为 DOMAIN\user 而不是 user。我解决了它在我的 .ssh/config 文件中配置正确的用户:

      Host dados
          HostName vrt1234
          User xxxxx
      

      【讨论】:

        【解决方案5】:

        我必须在我的~/.ssh/config 文件中使用UseKeychain yes

        配置文件如下所示:

        Host server.tld
          HostName server.tld
          User user
          UseKeychain yes
          IdentityFile  ~/.ssh/key
        

        您必须先输入 ssh-add -K ~/.ssh/key 才能将密码添加到 KeyChain。

        【讨论】:

          【解决方案6】:

          如果您在 Windows 中遇到此问题,请记住,您可能用于从 WSL 连接到远程计算机的公钥/私钥与 VS Code 用于从 Windows 连接的公钥/私钥不同.您需要为 Windows 创建一个单独的公钥/私钥对,并将该私钥也导出到远程服务器。

          来自VS Code remote debug tips and tricks

          在 Powershell 窗口中,像在 Linux 终端中一样创建公钥/私钥对:

          ssh-keygen -t rsa -b 4096
          

          然后将其导出到远程服务器:

          export USER_AT_HOST="your-user-name-on-host@hostname"
          export PUBKEYPATH="$HOME/.ssh/id_rsa.pub"
          
          ssh $USER_AT_HOST "powershell New-Item -Force -ItemType Directory -Path \"\$HOME\\.ssh\"; Add-Content -Force -Path \"\$HOME\\.ssh\\authorized_keys\" -Value '$(tr -d '\n\r' < "$PUBKEYPATH")'"
          

          确保您可以通过 PowerShell 通过无密码 SSH 进行连接。

          最后,在 VS Code 中。按 Ctrl+Shift+P 打开命令面板并选择“Remote-SSH: Open SSH Configuration File...”并编辑配置文件,如下所示:

          Host [convenient name]
              HostName [hostname]
              User [username]
              IdentityFile C:\Users\[username]\.ssh\id_rsa*
          

          然后当你在 VS Code 中运行“Remote-SSH: Connect to Host...”并选择上面的主机时,它应该会在不提示输入密码的情况下连接。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-12-11
            • 2018-09-22
            • 2014-02-01
            • 1970-01-01
            • 1970-01-01
            • 2014-07-17
            • 2019-10-04
            • 1970-01-01
            相关资源
            最近更新 更多