我已经设置了ssh密钥,但是VSCode一直要求输入密码



我正在使用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 ~/

事实上,以上这些都不适用于我。我经过一点研究后遵循了以下步骤:

  1. 在我的Mac终端上,我尝试使用verbose标签ssh来查看更多日志:ssh -v myUser@myIp

  2. 在这里,我看到私钥要打开,出于安全原因,它跳过了pub密钥登录,所以我这样做了:chmod 600 ~/.ssh/id_rsa

  3. 在我通过使用以下标签运行VS代码与VM建立新连接后:ssh -T myUser@myIp -A

    -A允许转发来自身份验证代理(如ssh代理(1))的连接。这也可以在配置文件中按主机指定。

    -T禁用伪终端分配。

我最近遇到了这个问题这为我解决了

  1. 设置参数以强制非密码身份验证
Host <ip>
HostName <ip>
User <user>
PasswordAuthentication no
IdentityFile /home/<user>/.ssh/<key_name>
  1. 确保您的密钥具有正确的权限
chmod 600 ~/.ssh/id_rsa

相关内容

  • 没有找到相关文章

最新更新