账户 SSH 密钥与部署 SSH 密钥之间的区别

20

有人可以解释一下账户 ssh-key 和部署 ssh-key 之间的区别吗?

我经常使用它们,但从未尝试过了解它们的区别。

1个回答

11

SSH帐户密钥可以识别您的身份,并允许您与GitHub进行交互(例如,您可以向自己的仓库推送代码)。

正如在“只读部署密钥”中提到的,您的ssh部署密钥是具有只读访问权限的密钥。
它不能对您进行身份验证

部署密钥是存储在您的服务器上并授予对单个GitHub存储库的访问权限的SSH密钥。 它们经常用于在部署或持续集成运行期间克隆存储库
部署有时涉及合并分支和推送代码,因此部署密钥始终允许读取和写入访问。由于在许多情况下不需要写入访问,现在您可以创建具有只读访问权限的部署密钥

您可以创建读/写部署密钥,但是它的只读能力与帐户SSH密钥形成对比:后者(SSH密钥)将始终用于读/写访问您的存储库。

您可以在BitBucket上使用部署密钥达到同样的目的:

部署密钥授予公共或私有存储库的只读访问权限。使用部署密钥,用户或进程可以通过SSH拉取或克隆存储库。部署密钥具有以下特性和限制:

  • 部署密钥不适用于您的计划限制。
  • 您可以将相同的部署密钥添加到多个存储库中。
  • 部署密钥必须是唯一的 - 它不能与帐户关联。

所以基本上,您在“BitBucket设置”中使用相同的SSH密钥进行身份验证,并在“存储库设置”中用于只读使用。如果我错了,请纠正我? - Labanino
1
不,这将是一个单独的SSH密钥,作为部署密钥在Bitbucket上注册。 - VonC
@VonC 这个答案需要更新吗?我理解的部署密钥是可以允许写入访问权限的(在创建时有一个复选框)。 - stevec
@user5783745 我提到的链接确实包括“因此部署密钥始终允许读写访问”。我从未说过相反的话。我只是强调它们可以是只读的(与帐户SSH密钥相反,后者始终提供读/写访问权限)。 - VonC
如果我有一个SSH密钥,我就不需要部署仓库密钥了吗?如果我使用像Travis这样的CI工具呢?那我还需要一个部署仓库密钥吗? - Timo
1
@Timo,部署密钥更像是 CI 访问您的 repo 的技术方式。而 SSH 密钥则是用于认证您的身份。如果您需要推送代码,请使用您的 SSH 密钥。如果您只需要让 CI 访问您的 repo,请使用部署密钥。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接