Visual Studio 连接管理器不接受私钥

Visual Studio 连接管理器不接受私钥

我希望将 Visual Studio (2022) 连接到我的笔记本电脑,以便交叉编译 C++ 项目。但我遇到了一个问题。它不接受连接。

我在另一个问题上读到,Visual Studio 仅接受 PEM 格式的 rsa 密钥,因此我使用 生成了该格式的密钥ssh-keygen -m PEM -t rsa -b 4096。我尝试过使用和不使用 pem 格式的各种不同密钥大小(1024、2048、4096、8192),使用和不使用密码。我通过将公钥添加到我的 ubuntu 笔记本电脑上的授权密钥文件中并使用生成的密钥(user@host)从 WSL2 连接来测试每个密钥ssh -i <key_file>。每次都有效。

我也读过这个问题您应该使用 puttygen 生成密钥,然后导出 openssh 密钥。我也尝试过,有密码和没有密码,但只使用默认密钥大小。再次使用这些密钥从 WSL2 的 bash 终端连接,效果很好,但我无法在 MSVS 中连接。

Visual Studio 连接管理器的错误消息也毫无意义。当我单击“连接”时,它会要求我确认主机的指纹,并将其添加到已知主机文件中。当我单击“是”时,连接管理器的输入字段变为红色。将鼠标悬停在红色字段上会产生结果:

对于“主机名:”以及“端口:”

无法协商主机密钥算法。仅支持 RSA 和 DSA 主机密钥。

我不太清楚这是什么意思。我的主机在其 home/.ssh 目录中有一个 rsa 密钥文件格式。Visual Studio 在首次连接时显示密钥指纹为“ecdsa-sha2-nistp256”,根据文档

对于“私钥文件:”

使用私钥“<密钥路径>”连接时发生错误。

之前使用空密码的密钥时,密码也会被标记为红色,现在这个指示已经消失。

要让它发挥作用,需要做什么?

在此处输入图片描述

答案1

我遇到了类似的问题,就我而言,我正试图连接到 ubuntu 服务器。

systemctl status ssh当我尝试连接 Visual Studio 时检查 sshd 服务状态( ),出现以下错误:

userauth_pubkey: signature algorithm ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

然后我将这一行添加PubkeyAcceptedAlgorithms +ssh-rsa/etc/ssh/sshd_config文件中,然后重新启动 sshd 服务(在服务器机器上)

经过这次更改后,我就能够使用 Visual Studio 连接到服务器了。

一些参考资料:

答案2

如果使用 ssh-keygen 创建私钥,则必须指定开关 -m pem,否则 Visual Studio 将不会接受该密钥。如果您的私钥以 -----BEGIN OPENSSH PRIVATE KEY----- 开头,则必须使用 ssh-keygen -p -f -m pem 进行转换。

https://learn.microsoft.com/en-us/cpp/linux/connect-to-your-remote-linux-computer?view=msvc-170

相关内容