我也见过这个 - OSX 应用程序防火墙似乎变得混乱了。我通过执行以下操作设法使我的工作顺利进行:
sudo rm /Library/Preferences/com.apple.alf.plist
Run Code Online (Sandbox Code Playgroud)
然后重启。
机器恢复后,当您转到防火墙 > 高级设置时,您应该只会看到已启用的系统服务(在您的情况下,SSH 和屏幕共享)。其余的条目将消失,但是当您启动任何需要通过防火墙访问的应用程序时,OSX 将要求您再次允许或不允许该应用程序,然后应将其添加回防火墙例外列表(如果您允许它传入)连接)。
小智 7
以下命令在优胜美地对我有用
cd /usr/libexec/ApplicationFirewall
sudo ./socketfilterfw --setloggingmode on
sudo ./socketfilterfw --setloggingopt detail
sudo tail -f /var/log/appfirewall.log
Run Code Online (Sandbox Code Playgroud)
尝试通过 SSH 连接到您的 Mac。你应该看到一个拒绝条目,在我的例子中是 sshd-keygen-wrapper
Oct 27 15:22:12 myhost socketfilterfw[4940] <Info>: Deny sshd-keygen-wrapper connecting from 192.168.0.2:49470 to port 22 proto=6
Run Code Online (Sandbox Code Playgroud)
然后只需将 /usr/libexec/sshd-keygen-wrapper(如 mehaase 建议的)添加到允许的应用程序列表中,但无需重新启动
切换回日志记录级别
./socketfilterfw --setloggingopt throttled
Run Code Online (Sandbox Code Playgroud)
就我而言,我将 /usr/libexec/sshd-keygen-wrapper 添加到防火墙设置并重新启动。
我在这里找到了这个想法:https : //discussions.apple.com/thread/2174585?threadID=2174585
一种很好的故障排除技术:打开 Console.app 并查看 /var/log/appfirewall.log(或从命令行查看 tail -f /var/log/appfirewall.log)。