问题描述
我正在使用Macbook(MacOS)连接到远程ubuntu服务器。
我使用ssh-copy-id
将公共ssh密钥复制到服务器,并检查ssh密钥在终端上是否可用。当我执行ssh username@x.x.x.x
时,无需输入密码即可建立连接)。
但是,当我尝试通过Visual Studio Code连接到服务器时,VSCode会不断询问密码。有办法解决这个问题吗?
谢谢!
解决方法
配置文件有问题。
VSCode需要“绝对”路径。
对于MacOS,ssh-copy-id
似乎仅复制相对于用户的绝对路径。
换句话说,它在“ /Users/username
”之前省略了“ /.ssh
”。
在/Users/username
的{{1}}属性中添加“ IdentityFile
”解决了这个问题。
这里有一个快速而方便的修复方法:您不必每次都删除整个 .vscode-server 文件夹!问题似乎是一个名为“vscode-remote-lock ...”的文件。它可以位于 ~/.vscode-server/bin/ 中的文件夹内。该文件在每次 ssh 登录时通过 vscode 创建。在远程主机上运行以下脚本。每当创建该文件时,它都会删除该文件:
while true
do
if [ -f /home/your-username/.vscode-server/bin/*/vscode-remote-lock.* ]; then
rm /home/your-username/.vscode-server/bin/*/vscode-remote-lock.*
echo "Killed the troublemaker! ^_^"
fi
done
文件名和文件夹名可能因机器而异。因此,在您的机器上找到名称并将它们粘贴到脚本中。然后运行脚本,一切顺利。
,检查此microsoft/vscode-remote-release
issue 2518是否适用:
通过删除日志中的文件(在远程服务器端,作为sudo根),您应该能够摆脱此状态,
/home/#####/.vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/vscode-remote-lock.#####.78a4c91400152c0f27ba4d363eb56d2835f9903a
(使用unlink
)或运行命令“杀死主机上的VS代码服务器...”如果再次发生,则可以尝试设置
remote.SSH.useFlock
。
要在命令面板(查看->命令面板)中运行的确切命令是:
Remote-SSH: Kill VS Code Server on Host...
也:
在我的情况下,使用终端工作通过ssh连接到容器后,删除整个
~/.vscode-server
目录。
(仅删除~/.vscode-server/bin
无效。)
OP sukrama确认in the comments已解决问题
,配置文件中的ssh密钥路径存在问题。
即使我正确配置了密钥,我的 Windows 机器上的 VSCode 也要求输入密码(它可以在终端上运行)。
我的问题是 VSCode 选择了错误的用户。我使用的是在 ssh 配置文件中配置的主机,VSCode 将用户设置为 DOMAIN\user
而不是 user
。我解决了它在我的 .ssh/config 文件中配置正确用户的问题:
Host dados
HostName vrt1234
User xxxxx
,
我不得不在我的 UseKeychain yes
文件中使用 ~/.ssh/config
。
配置文件如下所示:
Host server.tld
HostName server.tld
User user
UseKeychain yes
IdentityFile ~/.ssh/key
您必须先输入 ssh-add -K ~/.ssh/key
才能将密码添加到 KeyChain。