无法在 GitHub 中添加 SSH 密钥
Unable to add SSH key in GitHub
在我们的 GitHub 中,我们有大约 20 个存储库。对于 CI 构建,我们启用了 Git 轮询选项。
我们的 Jenkins master 连接了多个节点。对于 Git 轮询,我们通常将 Jenkins Master ssh 密钥添加到相应用户的 GitHub 设置 SSH 密钥部分。添加密钥时出现错误:密钥已在使用中。让我知道添加相同的内容。
根据其他存储库构建的错误消息,我们已经添加了具有不同用户的 Jenkins 主密钥
帐号。
SSH 密钥只能附加到 GitHub 上的单个用户,因为它用于验证和授权该用户。无法添加到多个帐户。
GitHub 在此处提供了有关处理自动脚本的 SSH 密钥的指南:Managing deploy keys。两个有趣的选项是:
通常,您会使用 deploy keys 从服务器获取对存储库的访问权限。不过,部署密钥与用户的 SSH 密钥有类似的限制,并且只能附加到单个存储库。这减少了密钥被泄露时可能造成的潜在损害。对于构建服务器,它们通常不太适合,因为通常无法为每个存储库配置身份验证。
对于您的用例,machine user 似乎是最佳选择。这是一个专用用户帐户,仅供您的构建服务器使用。确保为此帐户使用强密码和双因素身份验证,并将 Jenkins 的主密钥添加到其中。然后,您可以在 Jenkins 中将机器用户添加为所需存储库的协作者。
关于安全性,尽可能限制:只有需要的存储库,并且只有读取权限。这也是您应该使用机器用户而不是实际用户帐户的原因。对于 Jenkins,您(通常)不需要对存储库的写入权限。通过限制服务器密钥的访问权限,减少了泄露密钥的影响。
在我们的 GitHub 中,我们有大约 20 个存储库。对于 CI 构建,我们启用了 Git 轮询选项。
我们的 Jenkins master 连接了多个节点。对于 Git 轮询,我们通常将 Jenkins Master ssh 密钥添加到相应用户的 GitHub 设置 SSH 密钥部分。添加密钥时出现错误:密钥已在使用中。让我知道添加相同的内容。
根据其他存储库构建的错误消息,我们已经添加了具有不同用户的 Jenkins 主密钥 帐号。
SSH 密钥只能附加到 GitHub 上的单个用户,因为它用于验证和授权该用户。无法添加到多个帐户。
GitHub 在此处提供了有关处理自动脚本的 SSH 密钥的指南:Managing deploy keys。两个有趣的选项是:
通常,您会使用 deploy keys 从服务器获取对存储库的访问权限。不过,部署密钥与用户的 SSH 密钥有类似的限制,并且只能附加到单个存储库。这减少了密钥被泄露时可能造成的潜在损害。对于构建服务器,它们通常不太适合,因为通常无法为每个存储库配置身份验证。
对于您的用例,machine user 似乎是最佳选择。这是一个专用用户帐户,仅供您的构建服务器使用。确保为此帐户使用强密码和双因素身份验证,并将 Jenkins 的主密钥添加到其中。然后,您可以在 Jenkins 中将机器用户添加为所需存储库的协作者。
关于安全性,尽可能限制:只有需要的存储库,并且只有读取权限。这也是您应该使用机器用户而不是实际用户帐户的原因。对于 Jenkins,您(通常)不需要对存储库的写入权限。通过限制服务器密钥的访问权限,减少了泄露密钥的影响。