我已经设置了 ssh 密钥,但是 VSCode 一直要求输入密码
I've already setup the ssh key, but VSCode keeps asking for password
我正在使用 macbook(MacOS) 连接到远程 Ubuntu 服务器。
我使用 ssh-copy-id
将 public ssh 密钥复制到服务器并检查 ssh 密钥在终端上是否有效。当我执行 ssh username@x.x.x.x
时,无需输入密码即可建立连接)。
但是,当我尝试通过 Visual Studio 代码连接到服务器时,VSCode 一直要求输入密码。有办法解决这个问题吗?
提前致谢!
检查microsoft/vscode-remote-release
issue 2518是否适用:
You should be able to get out of this state by deleting the file (on the remote server side, as sudo root) in the log, /home/#####/.vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/vscode-remote-lock.#####.78a4c91400152c0f27ba4d363eb56d2835f9903a
(with unlink
) or running the command "Kill VS Code Server on Host..."
If it happens again, you might try setting remote.SSH.useFlock
.
The exact command to run in the command palette (View->Command Palette) is:
Remote-SSH: Kill VS Code Server on Host...
还有:
In my case, deleting entire ~/.vscode-server
directory after connecting to the container through ssh using terminal worked.
(Deleting only ~/.vscode-server/bin
did not work.)
OP sukrama confirms 已解决问题
It was a problem with ssh key path in config file.
配置文件有问题。
VSCode 需要“绝对”路径。
对于 MacOS,ssh-copy-id
似乎只复制相对于用户的绝对路径。
换句话说,它在“/.ssh
”之前省略了“/Users/username
”。
在 .ssh/config
的 IdentityFile
属性中添加“/Users/username
” 解决了问题。
这里有一个快速方便的解决方法:您不必每次都删除整个 .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
文件名和文件夹名可能因机器而异。因此,在您的机器上找到名称并将它们粘贴到脚本中。然后 运行 脚本,你就可以开始了。
VSCode 在我的 Windows 机器中要求输入密码,即使我的密钥配置正确(它在终端上工作)。
我的问题是 VSCode 选择了错误的用户。我正在使用在我的 ssh 配置文件中配置的主机,并且 VSCode 将用户设置为 DOMAIN\user
而不是 user
。我解决了它在我的 .ssh/config 文件中配置正确的用户:
Host dados
HostName vrt1234
User xxxxx
我不得不在我的 ~/.ssh/config
文件中使用 UseKeychain yes
。
配置文件如下所示:
Host server.tld
HostName server.tld
User user
UseKeychain yes
IdentityFile ~/.ssh/key
您必须先输入 ssh-add -K ~/.ssh/key
才能将您的密码添加到 KeyChain。
如果您在 Windows 中遇到此问题,请记住,您可能用于从 WSL 连接到远程计算机的 public/private 密钥与VS Code 将用于从 Windows 进行连接。您需要为 Windows 创建一个单独的 public/private 密钥对,并将该私钥也导出到远程服务器。
来自VS Code remote debug tips and tricks:
在 Powershell window 中,创建一个 public/private 密钥对,就像在 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 打开命令选项板,然后 select“Remote-SSH: 打开 SSH 配置文件...”并像这样编辑配置文件:
Host [convenient name]
HostName [hostname]
User [username]
IdentityFile C:\Users\[username]\.ssh\id_rsa*
然后当您在 VS Code 中 运行“Remote-SSH: 连接到主机...”并选择上面的主机时,它应该会在不提示输入密码的情况下连接。
如果这对某人有帮助,我遇到了类似的问题,即 VSC 要求输入密码(而不是密码)。
我注意到我的密钥在网络驱动器上,看起来 VSC 无法在那里读取它。
我将它移动到本地文件 (C:) 并且它有效。
我正在使用 macbook(MacOS) 连接到远程 Ubuntu 服务器。
我使用 ssh-copy-id
将 public ssh 密钥复制到服务器并检查 ssh 密钥在终端上是否有效。当我执行 ssh username@x.x.x.x
时,无需输入密码即可建立连接)。
但是,当我尝试通过 Visual Studio 代码连接到服务器时,VSCode 一直要求输入密码。有办法解决这个问题吗?
提前致谢!
检查microsoft/vscode-remote-release
issue 2518是否适用:
You should be able to get out of this state by deleting the file (on the remote server side, as sudo root) in the log,
/home/#####/.vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/vscode-remote-lock.#####.78a4c91400152c0f27ba4d363eb56d2835f9903a
(withunlink
) or running the command "Kill VS Code Server on Host..."If it happens again, you might try setting
remote.SSH.useFlock
.
The exact command to run in the command palette (View->Command Palette) is:
Remote-SSH: Kill VS Code Server on Host...
还有:
In my case, deleting entire
~/.vscode-server
directory after connecting to the container through ssh using terminal worked.
(Deleting only~/.vscode-server/bin
did not work.)
OP sukrama confirms
It was a problem with ssh key path in config file.
配置文件有问题。
VSCode 需要“绝对”路径。
对于 MacOS,ssh-copy-id
似乎只复制相对于用户的绝对路径。
换句话说,它在“/.ssh
”之前省略了“/Users/username
”。
在 .ssh/config
的 IdentityFile
属性中添加“/Users/username
” 解决了问题。
这里有一个快速方便的解决方法:您不必每次都删除整个 .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
文件名和文件夹名可能因机器而异。因此,在您的机器上找到名称并将它们粘贴到脚本中。然后 运行 脚本,你就可以开始了。
VSCode 在我的 Windows 机器中要求输入密码,即使我的密钥配置正确(它在终端上工作)。
我的问题是 VSCode 选择了错误的用户。我正在使用在我的 ssh 配置文件中配置的主机,并且 VSCode 将用户设置为 DOMAIN\user
而不是 user
。我解决了它在我的 .ssh/config 文件中配置正确的用户:
Host dados
HostName vrt1234
User xxxxx
我不得不在我的 ~/.ssh/config
文件中使用 UseKeychain yes
。
配置文件如下所示:
Host server.tld
HostName server.tld
User user
UseKeychain yes
IdentityFile ~/.ssh/key
您必须先输入 ssh-add -K ~/.ssh/key
才能将您的密码添加到 KeyChain。
如果您在 Windows 中遇到此问题,请记住,您可能用于从 WSL 连接到远程计算机的 public/private 密钥与VS Code 将用于从 Windows 进行连接。您需要为 Windows 创建一个单独的 public/private 密钥对,并将该私钥也导出到远程服务器。
来自VS Code remote debug tips and tricks:
在 Powershell window 中,创建一个 public/private 密钥对,就像在 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 打开命令选项板,然后 select“Remote-SSH: 打开 SSH 配置文件...”并像这样编辑配置文件:
Host [convenient name]
HostName [hostname]
User [username]
IdentityFile C:\Users\[username]\.ssh\id_rsa*
然后当您在 VS Code 中 运行“Remote-SSH: 连接到主机...”并选择上面的主机时,它应该会在不提示输入密码的情况下连接。
如果这对某人有帮助,我遇到了类似的问题,即 VSC 要求输入密码(而不是密码)。 我注意到我的密钥在网络驱动器上,看起来 VSC 无法在那里读取它。 我将它移动到本地文件 (C:) 并且它有效。