Visual Studio 2022在升级到Ventura后无法通过SSH连接macOS。

28

我在一台运行Windows的笔记本电脑和一台运行macOS 12.6.1的Mac M1上安装了Visual Studio 2022 17.3.6,目前可以连接到Mac并运行Uno或Xamarin项目。但是,我最近将Mac升级到了Ventura版本后无法连接。我知道唯一变化的是升级到Ventura,但我不知道该如何继续。

出现的确切错误如下:

尝试使用SSH密钥与'ip:22'建立SSH连接时发生错误

我尝试了以下方法:

  • 从Ubuntu for Windows的笔记本电脑进行SSH连接- 成功
  • 从另一台计算机进行SSH连接 - 成功
  • 验证了Mac上的远程登录设置
  • 运行ssh username@macip 'ls' 并且成功
  • 删除了% LOCALAPPDATA%\ Xamarin \ Monotouch-没有改变
  • 查看了Visual Studio日志 - 没有额外信息
  • 检查了Mac上的日志,并没有额外信息

我只是将我的Visual Studio从v17.4.x升级到v17.7.0(都是预览版),我的SSH连接又开始工作了。就像你一样,在我更新Mac上的Ventura之后,它停止工作了。在升级到Ventura之前,我还更新了Xcode和VS for Mac,然后才注意到SSH不再工作。 - Urk
5个回答

40

可能的一个原因是Ventura自带OpenSSH_9.0p1。从OpenSSH v8.8开始,默认禁用使用SHA-1算法的RSA签名:

该版本“默认禁用使用SHA-1哈希算法的RSA签名”。

修复在macOS Ventura中SSH(RSA SHA-1)无法工作的问题:

  1. 编辑/etc/ssh/sshd_config并保存:

HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
  • 重新启动sshd

  • macOS Monterey及早期版本分别使用OpenSSH v8.6或更旧版本。


    4
    根据monagano建议进行编辑sshd_config应该可以解决问题,但是如果没有编辑sshd_config的权限,可以尝试使用sudo nano -w /etc/ssh/sshd_config。之后我不得不重新启动,然后它就可以工作了。 - Matthias Raymann
    7
    直到我删除了 %LOCALAPPDATA%\Xamarin\Monotouch 并重新启动 Visual Studio 2022,才使这个方法起作用。 - AlexPi
    1
    HostkeyAlgorithms +ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa添加了这两行代码后仍然无法正常工作。 - Srinivas Ch
    谢谢,对我有用。在执行上述步骤并删除 %LOCALAPPDATA%\Xamarin\Monotouch 路径之后。 - Yevhenii Yerokhin
    1
    我编辑了sshd_config文件并在文件末尾添加了两行。我还重新启动了机器。之后,我遇到了“无法检索SSH指纹。请确保主机可达并启用远程登录”的错误。我尝试了这里的故障排除:https://learn.microsoft.com/en-us/xamarin/ios/get-started/installation/windows/connecting-to-mac/troubleshooting#Troubleshooting_Remote_Login ,当我进行ssh部分测试时,我得到了这个错误:“kex_exchange_identification: read: Connection reset”。有什么建议吗? - Wade Baird
    显示剩余6条评论

    2
    我认为更合适的修复方法是在Windows上安装更新版本的OpenSSH,而不是重新启用Mac端已废弃的RSA SHA-1签名。虽然在其他答案发布之后,v9.1.0.0p1直到2022年12月才可用:

    1. 在Windows机器上,打开“可选功能”
    2. 搜索“OpenSSH客户端”并展开它
    3. 单击“卸载”按钮
    4. 下载并安装OpenSSH for Windows v9.1.0.0p1或更高版本

    我发现Visual Studio会隐式使用新版本,您将能够再次连接到Mac。


    1
    Taylor Buchanan的答案应该是#1答案(大多数其他答案会降低Mac的安全性,这不是您想要的)。另外一点:您可以使用winget来安装最新的openssh:https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH - Erwin van Dijk
    我的Visual Studio没有隐式使用新版本。如何让VS使用新版本? - undefined

    1

    我尝试了@monogano的答案,但对我没有用。

    我添加了相同的行:

    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa
    

    /etc/ssh/ssh_config文件的末尾添加(无需重新启动任何内容),现在我的ssh连接又可以工作了。 编辑: 为了在更新等操作之间保持配置,必须在/etc/ssh/ssh_config.d中创建一个新文件,其中包含与该目录中所有文件相同的行,因为该目录中的所有文件都包含在/etc/ssh/ssh_config中。

    1
    这涉及所有OS Ventura系统(例如Terminal和Iterm),而不仅仅是VS。在ssh -vvv [my_concerned_host]之后,我可以看到报告的末尾有send_pubkey_test: no mutual signature algorithm。然后,SSH自动切换到下一个身份验证方法:密码。
    对于我来说,在根ssh配置中应用@TylerH的解决方法还不够。我还必须在我的(配置文件)配置:~/.ssh/config+source ~/.bash_profile以应用更改。正如他们在03/21中所说[Here] (https://confluence.atlassian.com/bitbucketserverkb/ssh-rsa-key-rejected-with-message-no-mutual-signature-algorithm-1026057701.html),RSA现在提供了过多的漏洞。**sshd_config中的修补程序只应由无法使用更强算法(例如ECDSA或ED25519)重新生成密钥对的人员应用。**
    如果您有多个主机,则这两行必须在Host *之前添加。
    Host *
      HostkeyAlgorithms +ssh-rsa
      PubkeyAcceptedAlgorithms +ssh-rsa
    

    谢谢!在我的情况下,修改/etc/ssh/sshd_config是不够的,我还需要添加这个,然后它就可以正常工作了。 - skupjoe

    0
    问题的原因是Ventura自带OpenSSH_9.0p1,该版本默认禁用SHA-1 RSA签名。这意味着使用RSA签名与SHA-1 ssh连接到任何服务器都将无法工作(影响许多旧服务器)。我终于成功解决了这个问题。这个解决方案立即生效,无需重新启动ssh,并且即使在更新macOS后也是持久的。修复问题的方法如下:

    步骤1:进入/etc/ssh/ssh_config.d目录

    sudo cd /etc/ssh/ssh_config.d
    

    步骤2:创建一个名为config的新文件:

    sudo nano config
    

    步骤3:添加以下内容并保存文件(Ctrl-O然后Ctrl-X)

    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa
    

    现在你应该能够通过SSH连接了。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接