如何在Windows Server 2012防火墙中白名单GitHub Actions的IP地址?
针对GitHub Actions IP创建Windows Server 2012 SSH防火墙入站规则方案
是的,完全可以基于GitHub官方公布的Actions IP地址范围,创建Windows Server 2012的SSH入站防火墙规则,以此限制仅GitHub Actions环境能访问服务器的SSH端口,进一步提升安全性。
具体操作步骤:
1. 获取GitHub Actions的IP地址段
GitHub会通过官方元数据接口维护Actions的IP范围,你可以用PowerShell快速获取并整理这些IP段:
$metaData = Invoke-RestMethod -Uri "https://api.github.com/meta" $actionsIps = $metaData.actions
执行后,$actionsIps变量会存储所有GitHub Actions使用的IP段。
2. 创建防火墙入站规则
你可以选择图形界面操作或PowerShell批量创建:
方式一:图形界面操作
- 打开「Windows防火墙高级设置」→ 「入站规则」→ 「新建规则」
- 规则类型选择「自定义」,点击下一步
- 程序选择「特定程序」,找到你的SSH服务程序(如
sshd.exe,路径根据实际安装的SSH服务而定),点击下一步 - 协议选择「TCP」,本地端口填写SSH服务使用的端口(默认22,若已修改则填对应端口),点击下一步
- 远程IP地址选择「下列IP地址」,将第一步获取的所有Actions IP段逐一添加,点击下一步
- 操作选择「允许连接」,点击下一步
- 勾选适用的网络类型(如域、专用,根据服务器环境选择),点击下一步
- 为规则命名(如「允许GitHub Actions访问SSH」),完成创建
方式二:PowerShell批量创建(高效推荐)
使用PowerShell脚本一键创建规则,适合批量管理IP段:
$metaData = Invoke-RestMethod -Uri "https://api.github.com/meta" $actionsIps = $metaData.actions $ruleName = "允许GitHub Actions访问SSH" # 先删除同名旧规则(如果存在) Remove-NetFirewallRule -DisplayName $ruleName -ErrorAction SilentlyContinue # 创建新规则 New-NetFirewallRule -DisplayName $ruleName ` -Direction Inbound ` -Protocol TCP ` -LocalPort 22 ` # 若SSH端口已修改,替换为对应端口 -RemoteAddress $actionsIps ` -Action Allow ` -Enabled True ` -Profile Domain,Private # 根据服务器网络环境调整
关键注意事项
- GitHub的Actions IP范围会不定期更新,建议编写定时脚本(如每周执行一次)同步IP段到防火墙规则,避免IP更新导致Actions无法连接服务器。
- 确保已禁用SSH密码登录,仅保留密钥认证,结合IP白名单实现双重安全防护。
- 规则创建完成后,触发一次GitHub Action构建,验证文件上传功能是否正常,确认规则未阻止合法连接。
内容的提问来源于stack exchange,提问作者Martin Kršek
相关产品推荐
相关产品推荐

