当 github 帐户使用 2 因子身份验证时,是不是可以将 Jenkins Webhooks 与 Github 一起使用

Posted

技术标签:

【中文标题】当 github 帐户使用 2 因子身份验证时,是不是可以将 Jenkins Webhooks 与 Github 一起使用【英文标题】:Is it possible to use Jenkins Webhooks with Github when the github account uses 2 factor auth当 github 帐户使用 2 因子身份验证时,是否可以将 Jenkins Webhooks 与 Github 一起使用 【发布时间】:2020-04-03 14:50:24 【问题描述】:

我正在为 jenkins 使用最新的 docker 镜像(jenkins/jenkins:lts JENKINS_VERSION 2.208)。我已经启动了容器,配置了 jenkins,并且可以针对公共 repo 手动构建。但是,在我的 github 帐户上,我有 2FA,必须保留。我在 Github 中创建了一个个人访问令牌,并在我的 jenkins config for github server 部分中使用了它。我通过按下测试连接链接验证了连接是否正常工作(我添加了使用来自 github 的个人访问令牌的秘密文本):

在 Github 中,我有 wekhook 设置,其中包含 jenkins 托管位置的 IP 地址(docker 容器的 IP),然后是 github-webhook(我也尝试过为 jenkins 使用 dns 映射地址,例如,@ 987654322@),内容类型为application/json:。

我在 jenkins 中也启用了 github 轮询,但是,它不适用于对 repo 的推送请求。我在 webhook 部分的 Github 中看到失败日志,每次推送时都会增加(请求不断失败)。我在互联网上进行了广泛搜索,并找到了有关该做什么的建议文档,包括此处的此链接:securing your webhooks,但是当启动推送并触发构建时,没有什么能给我想要的轮询效果。所以我的问题是,是否可以使用 2FA 和 github webhooks?如果可能,那么具体的步骤是什么?

【问题讨论】:

【参考方案1】:

如果您启用了 2FA,您将无法再通过您的工具通过登录名/密码进行身份验证。您需要创建一个令牌来代替您的密码。

official documentation 应该很快就能让你到达那里。

【讨论】:

所以我添加了我的个人访问令牌代替用户名和密码作为 Jenkins > 配置 - Github - Github 服务器部分中的凭据作为秘密文本。当我使用 PAT 测试该连接时,我会收到一个速率限制响应,所以我相信该连接可以正常工作。但这并不能解决 webhook 问题,该问题继续失败。 好吧,这似乎是一个不同的问题:要么您的 IP 以匿名的方式发出了太多请求,因此您没有被识别和限制……或者您的帐户发出了太多的请求。【参考方案2】:

最终解决方案是下载 ngrok。我之前尝试过的 IP 地址和 dns 映射地址不公开。我也尝试使用我的公共 IP 地址,但这也没有用。最后,下载 ngrok 给了我一个可公开访问的 ip 地址(该地址将如下所示:http://1212344a.ngrok.io)。如果您还计划使用 ngrok,请确保当您从命令行/终端启动它时,您还为本地运行的应用程序传递相同的端口(如果需要)。接下来,在 github-settings-webhooks 中将有效负载 url 设置为 ngrok 在终端输出中提供的 url,但还将 /github-webhook/ 附加到地址末尾以完成有效负载 url(在我的情况下是 @ 987654322@ 作为完整的有效载荷 url)。

【讨论】:

以上是关于当 github 帐户使用 2 因子身份验证时,是不是可以将 Jenkins Webhooks 与 Github 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

为啥身份验证类型 - 当我们创建新的 Web APi 服务时,.NET Core 中 Web API 的个人用户帐户不可用

使用 Pycharm 和两因素身份验证推送到 GitHub

登录sql时 window身份验证登录和sqlserver验证登录有啥区别?

启用 2 因素身份验证时,如何通过 HTTPS 签出私有 github 存储库?

无法从具有相同身份验证器的不同应用添加新的自定义帐户

Jenkins GitHub 插件:无法验证帐户