可以使用一个 SSH 密钥推送到不同的 Git 遥控器吗?

Posted

技术标签:

【中文标题】可以使用一个 SSH 密钥推送到不同的 Git 遥控器吗?【英文标题】:Can one single SSH key be used to push to different Git remotes? 【发布时间】:2013-09-05 15:58:14 【问题描述】:

通常,我会生成不同的 SSH 密钥来推送到多个 Git 服务器。

今天,我的同事向我展示了他使用相同的id_rsa.pub 文件来推送到 GitHub 和我们的 LAN GitLab 服务器。

可以使用一个 SSH 密钥推送到不同的 Git 远程吗?

我们必须为不同的远程服务器生成多个 SSH 密钥的原因是什么?

【问题讨论】:

【参考方案1】:

是的,您可以为多个服务器使用相同的公钥/私钥对,只要每台服务器都有您的公钥副本。

【讨论】:

【参考方案2】:

在 ssh 中,私钥是客户端上的私钥,您将公钥推送到要登录的服务器。

通常,您会为某些脚本中使用的每个无密码密钥生成单独的密钥,以尽量减少密钥被盗时造成的损失。

但我认为没有任何充分的理由生成多个身份以供手动使用。涉及我手动使用的所有内容始终使用相同的受密码保护的id_rsa,通常在 ssh-agent 中解锁。

出于类似原因,您也可以使用单独的密钥,但除非您使用不同的密码保护每个密钥,否则没有意义,因为所有私钥都位于同一磁盘上的同一目录中。

当然,在不同的工作站上,你肯定应该有不同的私钥,但它会再次用于从那台机器上完成的所有事情。

【讨论】:

【参考方案3】:

解决您的两个问题:

第一季度。可以使用一个 SSH 密钥推送到不同的 Git 远程吗?

是的,假设您在所有开发工作站上使用一个 id_rsa.pub 或其他名称的公钥以及您的私钥,那么只需将该一个公钥上传到多个 Git 主机即可允许您与您目前从多个键中获得。

这也将使您的生产生活更加轻松,无需管理多个密钥并确保每次与服务器通信时都连接到正确的密钥。

如果您使用多个工作站(即家庭和办公室),您还可以选择在每个本地工作站上使用相同的公钥/私钥对。这进一步减少了您需要跟踪的不同键的数量。

第二季度。我们必须为不同的远程服务器生成多个 SSH 密钥的目的是什么?

您没有理由必须为多个远程 Git 存储库服务器生成多个密钥,正如您对第一个问题的回答所表明的那样。

正如Jan Hudec 所提到的,人们可能选择为不同的 Git 存储库使用不同的密钥的原因是为了增加一层安全性或管理控制。

在 Bitbucket 和 GitHub 上可以找到更多关于在 Git 中使用 SSH 的信息

【讨论】:

感谢您的解释。

以上是关于可以使用一个 SSH 密钥推送到不同的 Git 遥控器吗?的主要内容,如果未能解决你的问题,请参考以下文章

Git总结笔记3-把本地仓库推送到github

Git以错误用户身份推送到远程GitHub存储库

如果未将 env 文件推送到 git,如何在服务器上使用 env 中提到的密钥

无法推送到我的 github 私有存储库

在 AngularJS 和 NodeJS 中隐藏 API 密钥并推送到 Git 和 Heroku

git简单教程