如何使OSX中sshd-keygen-wrapper防火墙允许规则重启后仍生效
解决macOS 10.13.3重启后sshd-keygen-wrapper防火墙规则被禁用的问题
我在使用High Sierra(10.13.3)的时候也碰到过一模一样的问题——每次重启后,防火墙里的sshd-keygen-wrapper就被自动禁用,得手动重新允许才能正常用SSH服务。折腾了几次后,找到了几个能让规则永久生效的办法,亲测有效:
方法一:用命令行添加永久防火墙规则
图形界面的防火墙设置有时候会被系统进程重置,用命令行添加的规则稳定性更高:
- 打开「终端」,先确认
sshd-keygen-wrapper的路径(一般系统默认路径是/usr/libexec/sshd-keygen-wrapper,可以用下面的命令验证):which sshd-keygen-wrapper - 用系统自带的防火墙工具添加并允许这个程序:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/libexec/sshd-keygen-wrapper sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/libexec/sshd-keygen-wrapper - 确保防火墙处于启用状态:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on - 最后,开启“自动允许已签名软件接收传入连接”,这样系统会信任官方签名的程序,避免规则被重置:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsigned on
方法二:通过系统偏好设置固化规则
如果更习惯图形界面操作,可以试试这个步骤:
- 打开「系统偏好设置」→「安全性与隐私」→「防火墙」→点击左下角锁图标解锁,输入管理员密码。
- 点击「防火墙选项」,勾选「自动允许已签名的软件接收传入连接」。
- 点击「+」按钮,在弹出的文件选择窗口中,按下
Command+Shift+G,输入/usr/libexec/sshd-keygen-wrapper,选中后添加到列表里。 - 确保
sshd-keygen-wrapper对应的复选框是勾选状态,然后点击「确定」。 - 重启防火墙服务生效:回到终端执行下面的命令:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
方法三:排查第三方安全软件干扰
如果上面两个方法都没用,大概率是第三方杀毒、安全软件在篡改防火墙规则。比如某些杀毒软件会在重启后重置系统防火墙设置,建议暂时禁用这类软件,重启后测试sshd-keygen-wrapper的规则是否保持生效。
另外别忘了确认SSH服务本身是开启的:打开「系统偏好设置」→「共享」,勾选「远程登录」,或者用命令行开启:
sudo systemsetup -setremotelogin on
内容的提问来源于stack exchange,提问作者Yusuf N
相关产品推荐
相关产品推荐

