我正在使用Macbook(MacOS)连接到远程Ubuntu服务器。
我使用ssh-copy-id
命令将公共SSH密钥复制到服务器上,并在终端中检查该SSH密钥是否有效。当我执行ssh username@x.x.x.x
时,连接会在不要求输入密码的情况下建立。
然而,当我尝试通过Visual Studio Code连接到服务器时,VSCode一直要求输入密码。有没有办法解决这个问题?
提前感谢你!
我正在使用Macbook(MacOS)连接到远程Ubuntu服务器。
我使用ssh-copy-id
命令将公共SSH密钥复制到服务器上,并在终端中检查该SSH密钥是否有效。当我执行ssh username@x.x.x.x
时,连接会在不要求输入密码的情况下建立。
然而,当我尝试通过Visual Studio Code连接到服务器时,VSCode一直要求输入密码。有没有办法解决这个问题?
提前感谢你!
这是一个配置文件的问题。
VSCode需要“绝对路径”。
在MacOS中,ssh-copy-id
似乎只复制相对于用户的绝对路径。
换句话说,在“/.ssh
”之前它省略了“/Users/username
”。
在.ssh/config
中添加“/Users/username
”到IdentityFile
属性中即可解决问题。
检查一下是否适用于microsoft/vscode-remote-release
问题2518:
你可以通过删除日志文件(在远程服务器上,以sudo root身份)中的文件来摆脱这种状态:
/home/#####/.vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/vscode-remote-lock.#####.78a4c91400152c0f27ba4d363eb56d2835f9903a
(使用unlink
),或运行“Kill VS Code Server on Host...”命令。如果再次发生,则可以尝试设置
remote.SSH.useFlock
。
The exact command to run in the command palette (View->Command Palette) is:
Remote-SSH: Kill VS Code Server on Host...
还有:
在我的情况下,通过终端使用ssh连接到容器后,删除整个
~/.vscode-server
目录起作用了。
(仅删除~/.vscode-server/bin
不起作用。)
OP sukrama 在 评论中确认已解决问题。
这是配置文件中ssh密钥路径的问题。
remote.SSH.useFlock
,在主机上杀死VS Code服务器...
,... - VonC以下是一个快速实用的解决方法:您不需要每次删除整个 .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
即使我已经正确配置了密钥(在终端中可以使用),但我的Windows机器中的VSCode仍然要求输入密码。
我的问题是VSCode选择了错误的用户。我使用了在我的ssh配置文件中配置的主机,而VSCode将用户设置为DOMAIN\user
,而不是user
。我通过在我的.ssh/config文件中配置正确的用户来解决这个问题:
Host dados
HostName vrt1234
User xxxxx
user
还是DOMAIN\user
? - undefinedDOMAIN\
。 - undefined如果您在Windows上遇到此问题,请记住,您可能用于从WSL连接到远程计算机的公钥/私钥与VS Code从Windows连接时使用的不同。您需要为Windows创建一个单独的公钥/私钥对,并将该私钥导出到远程服务器。
在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…”并选择上面的主机时,它应该无需提示即可连接。
~/.ssh/config
文件中使用UseKeychain yes
。Host server.tld
HostName server.tld
User user
UseKeychain yes
IdentityFile ~/.ssh/key
你需要先输入ssh-add -K ~/.ssh/key
将你的密钥密码添加到KeyChain中。
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/[your-secure-ssh-key-name]
Ctrl + Shift + P
来打开 命令面板
。命令面板
中,输入:Remote-SSH: Kill VS Code Server on Host...
为了使其正常工作,您需要输入服务器密码。
chmod go-w ~/
ssh-add /path/to/private/key
修复了它。 - Taaam