升级到Ventura后,Visual Studio 2022无法在macOS上通过SSH进行连接

回答 5 浏览 6826 2022-10-27

我在一台Windows笔记本电脑和运行macOS 12.6.1的Mac M1上使用Visual Studio 2022 17.3.6进行了工作设置。当我运行一个Uno项目或一个Xamarin项目时,它能像预期的那样连接到Mac上。我刚刚把Mac升级到Ventura,现在已经不能连接了。我知道唯一的变化是转移到Ventura,但我被困于如何继续。

确切的错误是:

An error occurred while trying to establish an SSH connection with SSH keys to 'ip:22'

我已经尝试了以下的方法。

  • 在Ubuntu中从我的笔记本电脑上进行SSH操作--成功了。
  • 从另一台电脑上进行SSH--成功了
  • 核实Mac上的远程登录设置
  • 运行ssh username@macip 'ls',它工作了。
  • 删除了%LOCALAPPDATA%\Xamarin\Monotouch - 没有变化。
  • 审查了Visual Studio的日志--没有额外的信息
  • 审查了Mac上的日志,没有其他信息。
Jt5 提问于2022-10-27
5 个回答
#1楼 已采纳
得票数 39

一个原因可能是Ventura带有OpenSSH_9.0p1。从OpenSSH v8.8开始,使用SHA-1的RSA签名被禁用。

This release disables RSA signatures using the SHA-1 hash algorithm by default”

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

  1. 编辑 /etc/ssh/sshd_config,并保存它。

    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa
    
  2. 重启sshd

macOS Monterey和旧版本分别使用了OpenSSH v8.6或更早的版本。

monagano 提问于2022-10-27
TylerH 修改于2022-11-02
编辑sshd_config 如monagano建议的那样应该可以,但如果你没有编辑sshd_config的权限,可以用sudo nano -w /etc/ssh/sshd_config试试。我后来不得不重新启动,然后就成功了。Matthias Raymann 2022-10-27
我从superuser.com/questions/1488060/… :sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist sudo launchctl loaded -w /System/Library/LaunchDaemons/ssh.plistJt5 2022-10-27
直到我删除了%LOCALAPPDATA%\Xamarin\Monotouch,然后重启了visual studio 2022,这才起了作用。AlexPi 2022-11-03
HostkeyAlgorithms +ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa 在添加了这两行后,它也没有工作。Srinivas Ch 2022-11-04
我编辑了sshd_config文件,把这两行放在文件的最后。我还重新启动了机器。在这之后,我得到的错误是"Couldn't retrieve SSH Fingerprint. Please ensure the host is reachable and Remote Login is enabled"。我尝试了这里的故障排除。learn.microsoft.com/en-us/xamarin/ios/get-started/installation/… ,当我进入测试ssh部分时,我得到这个错误:"kex_exchange_identification: read: Connection reset"。有什么建议吗?Wade Baird 2022-11-08
#2楼
得票数 1

这涉及所有的操作系统Ventura系统(如终端和Iterm),而不仅仅是VS。在ssh -vvv [my_concerned_host]之后,我可以在报告的最后看到send_pubkey_test: no mutual signature algorithm。然后。SSH自动切换到下一个认证方法:密码

对我来说,在root ssh配置中应用@TylerH的解决方法是不够的。我还必须在我的(配置文件)配置中这样做。~/.ssh/config + source ~/.bash_profile以应用变化。正如他们(已经)在03/21 [这里] (https://confluence.atlassian.com/bitbucketserverkb/ssh-rsa-key-rejected-with-message-no-mutual-signature-algorithm-1026057701.html)所说,RSA现在提供了太多的漏洞。** sshd_config中的补丁应该只被那些不能用更强的算法重新生成密钥对的人应用 ** (例如ECDSA或ED25519)

如果你有多个主机,那么添加的2行必须在前面。Host *

Host *
  HostkeyAlgorithms +ssh-rsa
  PubkeyAcceptedAlgorithms +ssh-rsa
Abpostman1 提问于2022-11-16
Abpostman1 修改于2022-11-16
谢谢你!"。在我的情况下,修改/etc/ssh/sshd_config是不够的,我还需要添加这个,之后就成功了。skupjoe 2022-12-06
#3楼
得票数 1

我已经试过@monogano的答案,但对我来说不起作用。

我已经添加了同样的句子。

HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

/etc/ssh/ssh_config文件的末尾(没有重新启动任何东西),现在我的ssh连接又开始工作了。

编辑 :

为了在更新之间保持配置,等等,必须在/etc/ssh/ssh_config.d创建一个新的文件,其行数与此目录中的所有文件都包含在/etc/ssh/ssh_config中一样。

WannaGetHigh 提问于2022-11-15
WannaGetHigh 修改于2022-11-22
#4楼
得票数 1

我认为更合适的修复方法是为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上。

Taylor Buchanan 提问于2023-02-15
#5楼
得票数 0

这个问题是由Ventura的OpenSSH_9.0p1引起的,它默认禁用了SHA-1的RSA签名。这意味着ssh-ing到任何使用SHA-1的RSA签名的服务器将无法工作(影响到许多旧服务器)。我终于设法解决了这个问题。这个解决方案无需重启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进行连接。

George Chalhoub 提问于2023-03-12