我正在使用macbook(MacOS)连接到远程Ubuntu服务器。我使用ssh-copy-id
将公共ssh密钥复制到服务器,并检查ssh密钥在终端上是否有效。当我执行ssh username@x.x.x.x
时,无需询问密码即可进行连接)。但是,当我尝试通过Visual Studio代码连接到服务器时,VSCode会不断询问密码。有办法解决这个问题吗?
提前感谢!
配置文件有问题
VSCode需要";绝对";路径
在MacOS的情况下,ssh-copy-id
似乎只复制相对于用户的绝对路径
换句话说,它省略了"CCD_ 4";在";/.ssh
";。
添加";CCD_ 6";在CCD_ 8中的CCD_。
检查此microsoft/vscode-remote-release
问题2518是否适用:
您应该能够通过删除日志中的文件(在远程服务器端,作为sudo root)
/home/#####/.vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/vscode-remote-lock.#####.78a4c91400152c0f27ba4d363eb56d2835f9903a
(带有unlink
)或运行命令"来摆脱这种状态;终止主机上的VS代码服务器">如果再次发生这种情况,您可以尝试设置
remote.SSH.useFlock
。
要在命令调色板(View->command palette)中运行的确切命令是:
Remote-SSH: Kill VS Code Server on Host...
还有:
在我的例子中,使用终端通过ssh连接到容器后删除整个
~/.vscode-server
目录是有效的
(仅删除~/.vscode-server/bin
无效。)
OP sukrama在评论中确认已解决问题
配置文件中的ssh密钥路径有问题。
这里有一个快速方便的解决方案:您不必每次都删除整个.vscode服务器文件夹!问题似乎是名为"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将用户设置为DOMAINuser
而不是user
。我在.ssh/config文件中配置了正确的用户,解决了这个问题:
Host dados
HostName vrt1234
User xxxxx
如果您在Windows中遇到此问题,请记住,您可能用于从WSL连接到远程计算机的公钥/私钥与VS Code用于从Windows连接的公钥/公钥不同。您需要为Windows创建一个单独的公钥/私钥对,并将该私钥导出到远程服务器。
从VS代码远程调试提示和技巧:
在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 'nr' < "$PUBKEYPATH")'"
请确保您可以通过PowerShell通过无密码SSH进行连接。
最后,在VS代码中。按Ctrl+Shift+P打开命令调色板;远程SSH:打开SSH配置文件"并像这样编辑配置文件:
Host [convenient name]
HostName [hostname]
User [username]
IdentityFile C:/Users/[username]/.ssh/id_rsa*
然后当你运行";远程SSH:连接到主机"在VS Code中,并选择上面的主机,它应该在不提示输入密码的情况下连接。
我不得不在~/.ssh/config
文件中使用UseKeychain yes
。
配置文件如下所示:
Host server.tld
HostName server.tld
User user
UseKeychain yes
IdentityFile ~/.ssh/key
您必须输入ssh-add -K ~/.ssh/key
才能首先将密码短语添加到KeyChain。
没有足够的代表发表评论,但如果您遵循了此Stack Overflow帖子中的步骤,但仍遇到问题,则可能无法设置VSCode Remote SSH配置文件路径。
确保设置远程。SSH.configFile设置为~/.ssh/config
。
您也可以键入Ctrl + Shift + P
来打开Command Palette
。
在Command Palette
型内部,
Remote-SSH: Kill VS Code Server on Host...
您需要键入服务器密码才能使其工作。
(macos+vscode)
只有这一点对我有效:https://www.backarapper.com/add-ssh-keys-to-ssh-agent-on-startup-in-macos/
即:通过ssh-add添加密钥,然后将其写入~/.ssh/config文件:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/[your-secure-ssh-key-name]
如果这对某人有帮助,我也遇到了类似的问题,VSC要求输入密码(而不是密码短语)。我注意到我的钥匙在网络驱动器上,看起来VSC无法在那里读取。我把它移到一个本地文件(C:)中,它就工作了。
对我来说,是我的公共auth-ssh不工作,我的主目录权限有问题。我不得不删除组和其他写入权限到我的主目录,然后一切都正常:
chmod go-w ~/
事实上,以上这些都不适用于我。我经过一点研究后遵循了以下步骤:
-
在我的Mac终端上,我尝试使用verbose标签ssh来查看更多日志:
ssh -v myUser@myIp
-
在这里,我看到私钥要打开,出于安全原因,它跳过了pub密钥登录,所以我这样做了:
chmod 600 ~/.ssh/id_rsa
-
在我通过使用以下标签运行VS代码与VM建立新连接后:
ssh -T myUser@myIp -A
-A
允许转发来自身份验证代理(如ssh代理(1))的连接。这也可以在配置文件中按主机指定。-T
禁用伪终端分配。
我最近遇到了这个问题这为我解决了
- 设置参数以强制非密码身份验证
Host <ip>
HostName <ip>
User <user>
PasswordAuthentication no
IdentityFile /home/<user>/.ssh/<key_name>
- 确保您的密钥具有正确的权限
chmod 600 ~/.ssh/id_rsa