Visual Studio 2022配对Mac后iOS模拟器连接停滞求助
解决VS2022远程iOS模拟器卡在“连接到Mac”且SSH被拒绝的问题
问题背景
此前可正常通过Microsoft Visual Studio 2022(17.5.3版)连接sickcodes Docker镜像中运行的Ventura 13.3版Mac OSX,重装PC后出现以下异常:
- Windows端iOS模拟器启动后卡在“连接到Mac...”状态
- 取消VS中“远程模拟器到Windows”选项后,Mac虚拟机上的iOS模拟器可正常加载应用,但来回切换开发不便
- Xamarin.Simulator日志显示SSH连接被目标机器主动拒绝,但通过PowerShell可正常SSH连接Mac虚拟机,Mac也能反向SSH连接Windows
- VS终端日志确认已设置正确的SSH端口50922,且VS可正常配对Mac
- 已排查并关闭Windows和Mac防火墙、添加SSH防火墙规则、配置Docker环境变量、调整WSL2配置等,均未解决问题
- 确认非VM、Docker或Sickcodes本身问题,此前曾正常运行
解决方案
1. 指定VS的SSH密钥路径
VS可能未正确识别SSH密钥,手动指定密钥:
- 打开VS2022,进入工具 > 选项 > Xamarin > iOS设置
- 在“SSH密钥”栏,手动选择本地用户目录下的
id_rsa文件(默认路径:C:\Users\<你的用户名>\.ssh\id_rsa) - 重启VS后重新配对Mac,尝试启动远程模拟器
2. 清除Xamarin模拟器缓存
删除Xamarin的SSH缓存文件,强制重建连接:
- 关闭VS2022及所有相关进程
- 删除以下目录的所有文件:
C:\Users\<你的用户名>\AppData\Local\Xamarin\iOS\SimulatorC:\Users\<你的用户名>\AppData\Local\Xamarin\Logs
- 重新打开VS,重新配对Mac并测试远程模拟器
3. 检查WSL2端口转发与Docker集成
由于Docker默认使用Ubuntu WSL2,可能存在端口转发冲突:
- 打开PowerShell,执行
wsl --list --verbose确认默认WSL发行版为Ubuntu - 执行
wsl --shutdown停止所有WSL实例 - 重启Docker Desktop,确保Docker的WSL集成功能正常
- 执行
docker ps查看容器端口映射,确认Mac虚拟机的22端口已映射为主机的50922端口(格式为0.0.0.0:50922->22/tcp)
4. 调整Mac虚拟机的SSH配置
手动SSH登录Mac虚拟机,修改SSH服务配置以适配VS的SSH客户端:
- 编辑
/etc/ssh/sshd_config文件:sudo nano /etc/ssh/sshd_config - 确保以下配置项正确设置:
PasswordAuthentication yes PubkeyAuthentication yes AllowUsers <你的Mac虚拟机用户名> - 重启SSH服务:
sudo launchctl stop com.openssh.sshd && sudo launchctl start com.openssh.sshd
5. 重置VS的Xamarin相关设置
重置VS的配置以消除可能的损坏项:
- 打开VS2022,进入工具 > 导入和导出设置
- 选择“重置所有设置”,按提示完成配置重置
- 重新配置Xamarin iOS的Mac连接并测试
内容的提问来源于stack exchange,提问作者Patrick Hume
相关产品推荐
相关产品推荐

