我们可以为两个不同的帐户使用相同的ssh密钥

时间:2017-11-19 09:13:05

标签: git github

如果我的计算机只有一个ssh密钥,那么我们可以为两个github帐户使用相同的密钥

1 个答案:

答案 0 :(得分:1)

可能这是因为auth系统当前无法使用相同的SSH密钥处理多个用户。可以改进的唯一方法是,如果多个用户拥有相同的SSH密钥,当您使用该密钥进行授权时,您将获得具有该密钥的所有用户的权限。但是,这不是一个好主意。为什么?因为您不应该在机器之间或角色之间共享密钥。在机器之间共享密钥会增加密钥泄露的可能性(如果你做得对,这个概率仍然很低,但是对于你放置相同密钥的每台机器,它仍然会增加)。一旦共享密钥被泄露,您不仅必须在使用它的每个服务上终止它,而且还必须到每台机器更新到新密钥。由于同样的原因,跨角色共享密钥是不好的,但实际上更糟糕,因为一旦它受到攻击,攻击者就拥有了比他们更多的权限。 更进一步,每个服务器每个服务器应该有一个密钥。当然,这听起来像是很多要管理的关键,但事实并非如此。您可以轻松运行多个ssh-agent(您的密钥在磁盘上加密,对吧?),只需在您的环境中更改SSH_AUTH_SOCK即可根据需要指向正确的代理。您甚至可以使用ssh-agent -a / path / to / socket将套接字命名为方便,允许您通过计算机上的角色和服务来命名套接字。如果密钥被泄露(单个密钥泄露的可能性比计算机上的所有密钥都受到损害。 所以,不 - 你需要为每个帐户分别使用一个密钥。虽然您需要为多个帐户使用多个ssh密钥对,但您可以配置多个ssh标识并在计算机上使用别名。您也可以使用您的用户名代替“git”或“hg”。但是仍然需要单独的键。关于推送到团队存储库,只要您对团队下的存储库具有写入或管理访问权限,就可以在您的个人帐户下执行此操作,就像使用个人帐户下的存储库一样。作为Github / Bitbucket登录的团队帐户不再有效。

但是在实践中,你经常没有机会知道密钥何时,哪个,哪里或如何被泄露,所以如果我怀疑它发生在我的一个密钥上,我会改变它们的所有和每一个我使用它们的单一服务,以防万一。 Imho最好的保护是养成定期更换钥匙的习惯,频率越高,安全性越好。在这样的方案中,我认为每台机器只有一个SSH密钥就足够安全了,而且我认为你可以想象如果我每台机器有一个角色,每月更换一次我的密钥会很痛苦。并按照你的建议服务。 我认为这毕竟只是一个品味问题,而且这两种安全方案都足够有效,不会随意决定支持另一种,而是阻止另一种,特别是在像Github这样的平台上。

我唯一发现的是通过http克隆个人回购,并通过ssh克隆公司回购。

我只使用多个键,一个用于工作,一个用于个人。我使用Putty Ageant,所以我不必一直登录。然后在hgrc中,在[ui]下为ssh添加别名,并添加命令行选项以指定用于该存储库的键:

[ui]
ssh = TortoisePlink.exe -ssh -2 -batch -C -i H:\Users\myname\.ssh\my_company_private_key.ppk 

克隆后必须更改hgrc是有点烦人,但是可行。但我后来决定将我的个人和工作合并。我的所有工作代码都在一个团队之下,所以并不是什么大不了的事,我的个人资料仍然在我的名下。