博主在折腾 Github Actions 自动化构建前端项目并部署至服务器时用到了 SCP 和 SSH ,但由于 Github Actions 的 Windows 和 Ubuntu 运行程序是托管在 Azure 的,并不属于常用登录地,于是乎,请看 VCR :
怎么最后还有个总结(笑cry.jpg
那么怎样才能在不关闭异常登录提醒(好像也不能关)的情况下,通过白名单配置,减少 Github Actions 自动化部署带来的打扰呢?
先看看相关文档吧~
Github 在 Github Actions 的文档中提到了运行器的 IP 地址 和 通信要求,直接配置 Github 提供的 CNAME 地址理论可行,但很可惜腾讯云并不支持这种操作…
好在 Github 的 REST API 提供了获取 Github 元数据的接口,所以根据 Github 文档,我们可以通过 API 来获取 Github Actions 的 IP 地址范围。
在请求 API 之前,我们需要创建一个 Github 令牌(Token)。
创建 Github 令牌
登录 Github 之后,便可以在 这里 生成一个令牌。
点击右上角的 Generate new token (classic)
之后,会进入到令牌的配置页面,Notes
部分用作密钥标识,任意即可,随后不需要授予任何权限,在页面最底部直接点击 Generate token
创建令牌。
随后你会在一个浅绿色的框中看到一串以 ghp_
开头的内容,点击复制按钮,这就是你刚创建的 Github 令牌。
获取 Github Actions 的 IP 地址
参照 Github 文档 ,我们可以在终端使用 cURL 工具发起如下请求(需要将 <YOUR-TOKEN>
替换为上一步得到的令牌值)
1 | curl -L \ |
Github API 返回的内容是 JSON 格式的数据,并且包含了不止一个服务的 IP 地址和域名,Github Actions 的 IP 地址在 action
字段
对于 Linux 用户,可以使用 jq
工具进行解析:
1 | curl -L -H "Accept: application/vnd.github+json" \ |
对于 Windows 用户,可以使用 PowerShell 来完成:
1 | curl.exe -L -H "Accept: application/vnd.github+json" ` |
这两种方案均可解析 JSON 并将 Github Actions 的 IP 存入当前目录下的 actions.txt
文件,一行一个。
配置腾讯云主机安全白名单
登录腾讯云控制台,进入 异常登录白名单管理 ,点击添加白名单,将 actions.txt
中的内容粘贴至 登录源IP
的输入框中,配置相应的生效范围并保存。
emm…似乎不太行 ::>_<::
经过测试,腾讯云的白名单有字数限制,因此只能扩大 IP 地址范围来满足字数限制。
超聚合的 IPv4 的结果如下:
1 | 4.0.0.0/8 |
用超聚合后的地址进行配置显然会降低安全性,因此建议同时配置登录用户名,并将登录时间设置为工作时间来降低风险。
这显然不是最优方法,但是聊胜于无。博主暂时没有找到更好的方法来完整填入这些地址范围,或许只有等腾讯云增大输入框的字数限制了orz.
什么,你说分批配置?也不是不行 :D