![配置 OSX 防火墙以允许 SSH 服务器?](https://linux22.com/image/1270863/%E9%85%8D%E7%BD%AE%20OSX%20%E9%98%B2%E7%81%AB%E5%A2%99%E4%BB%A5%E5%85%81%E8%AE%B8%20SSH%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
如果我打开 OSX 防火墙,则不允许使用 ssh。如果我将其关闭,ssh 可以正常连接。这些是 ssh 的设置主持人:虽然我不知道自己在做什么,但我认为提供/usr/sbin/sshd
“允许传入连接”(以及“远程登录(SSH)”)就足够了,但事实并非如此。我还需要为 ssh(sshd?不确定)添加什么才能允许连接?
我正在通过系统偏好设置中的共享菜单“远程登录”专门配置 ssh。
答案1
下面的命令在 Yosemite 上对我有用
cd /usr/libexec/ApplicationFirewall
sudo ./socketfilterfw --setloggingmode on
sudo ./socketfilterfw --setloggingopt detail
sudo tail -f /var/log/appfirewall.log
尝试通过 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
然后只需将 /usr/libexec/sshd-keygen-wrapper(按照 mehaase 的建议)添加到允许的应用程序列表中,但无需重新启动
切换回日志记录级别
./socketfilterfw --setloggingopt throttled
答案2
我也看到了这种情况 - 似乎 OSX 应用程序防火墙变得混乱了。我通过执行以下操作设法使我的防火墙正常运行:
sudo rm /Library/Preferences/com.apple.alf.plist
然后重新启动。
机器恢复后,当您进入防火墙 > 高级设置时,您应该只会看到您已启用的系统服务(在您的例子中是 SSH 和屏幕共享)。其余条目将消失,但当您启动任何需要通过防火墙访问的应用程序时,OSX 会再次询问您是否允许该应用程序,然后应将其重新添加到防火墙例外列表中(如果您允许其传入连接)。
答案3
就我而言,我将 /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)。
答案4
在 El Capitan 10.11.5 中,它sshd-keygen-wrapper
位于允许连接列表中,但被设置为阻止。只需将其设置为允许,远程 SSH 登录即可。无需重启。