多个Bitbucket账户

80

我有一个用于工作的Bitbucket帐户和一个个人Bitbucket帐户,我的目标是能够在同一台计算机上使用两个帐户。 我已经在Windows 7 PC上安装了最新的git。

目前,我公司的Bitbucket帐户一切正常,可以正常进行拉取/推送操作。 我使用ssh-keygen创建了一个新的ssh密钥,并为其分配了一个新的名称,例如“tech”。但是,我遇到了如何告诉本地存储库使用我创建的新ssh密钥的问题。 我假设每次尝试连接时都使用第一个ssh密钥。

我收到以下错误:

$ git push conq:无法访问存储库。 致命错误:远程端意外挂断

我在互联网上找到了一些建议,但似乎与Linux / Git设置相关,例如我找不到Windows上的“config”文件。


可能是多个GitHub帐户和SSH配置的重复问题。 - MrTux
5个回答

125

这篇博客文章介绍了一种简单的方法,可以将多个SSH密钥添加到一台计算机上,并为每个Bitbucket帐户使用一个SSH密钥。它比官方Bitbucket文档更清晰易懂。总之:

首先,通过像Github上的这份教程一样的教程设置默认帐户。

对于第二个帐户:

  1. 创建一个新的SSH密钥:

ssh-keygen -f ~/.ssh/<your second account name> -C "<you email>"
  • 添加SSH密钥:

  • ssh-add ~/.ssh/<key file name> 
    
  • 使用pbcopy < ~/.ssh/<你的第二账户名>.pub复制公钥,并将此密钥添加到您的bitbucket帐户(在设置区域中)

  • (在Windows上,您可以使用ssh-keygen -f ~/.ssh/<your account name> -c "<your email>" | clip复制ssh密钥,或者您可以按照Linux的这些说明进行操作。)

    1. 将以下内容添加到您的~/.ssh/config文件中。第一个设置了bitbucket.org的默认密钥。第二个将您的第二个密钥设置为别名bitbucket-account2,用于bitbucket.org:

      Host bitbucket.org
        Hostname bitbucket.org
        IdentityFile ~/.ssh/id_rsa
      
      Host bitbucket-account2
        Hostname bitbucket.org
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/<your second account name>
      
      你现在可以像之前一样使用默认帐户克隆项目:
    2. git clone git@bitbucket.org:username/project.git
      
    3. 要使用第二个身份克隆项目,请将 bitbucket.org 替换为 ~/.ssh/config 文件中指定的主机(即上面的bitbucket-account2):

    4. git clone git@bitbucket-account2:username/project.git
      

    完成了!


    6
    我需要使用以下命令添加ssh密钥:ssh-add ~/.ssh/<密钥文件名>。 - Samik Bandyopadhyay
    正如@SamikBandyopadhyay所指出的那样,在使用ssh-agent(例如自Leopard以来的Mac)的任何系统上,您还需要使用ssh-add将密钥添加到代理中。我发现如果不执行此步骤,ssh仍将使用标准id_rsa用于别名域,即使使用ssh -i参数明确路径到第二个身份也是如此。非常令人困惑! ssh-add立即解决了这个问题。 - scipilot
    Windows系统上没有pbcopy命令,因此这个指令是不完整的。 - Stepan Yakovenko
    1
    @StepanYakovenko 更新内容包括 Windows 和 Linux 中的 pbcopy 等价物。 - ZenBalance
    这个答案应该被标记为解决方案 - 真的! - Tomasz Kapłoński
    @SamikBandyopadhyay 谢谢您的建议 - 已将其添加到答案中。 - ZenBalance

    54

    如果您没有将密钥添加到密钥管理器(ssh-agent)中,则可能会出现此错误。要做到这一点:

    ssh-add ~/.ssh/tech
    

    顺便提一下,如果您有多个Bitbucket帐户,则需要为每个帐户获取唯一的密钥。您不能重复使用密钥。


    4
    这解决了我的问题,文档中缺少了这个步骤。谢谢 Bitbucket 网站。 - ams

    0
    如上所述,您只需要生成一次公钥 - 因为您已经在BitBucket上设置好了,那么您的id_rsa(或您命名的任何文件)在哪里? 在我们的Windows安装中,它位于用户的主目录下的隐藏文件夹.ssh中。 您应该能够在那里创建一个config文件。

    -1

    您可以在个人的Bitbucket账户中添加公司邮箱,在Bitbucket账户管理页面:

    enter image description here

    您可以登录您的个人电子邮件帐户,并在单个Bitbucket帐户中访问个人项目和公司项目,该帐户仅使用一个SSH私钥。

    错误!您得到了“my@googmail.com已被另一个用户使用”的提示。 - Green

    -1
    你应该只生成一次公钥/私钥配对,然后所有拥有你公钥的主机都会允许你连接,如果你提供了私钥。

    2
    如果您只有一对公钥/私钥,那么无法访问 Bitbucket 上的两个代码库。当您尝试将您的公共 SSH 密钥添加到第二个代码库时,系统会提示此密钥已经被添加到另一个账户下。 - tadasajon
    @JonCrowell 听起来有点奇怪。我没有使用过Bitbucket,但是Github允许将一个密钥分配给多个仓库。为不同设备使用几个密钥是有意义的。例如,一个用于笔记本电脑,另一个用于台式机。如果你的笔记本电脑被盗,你可以撤销它的密钥,但继续使用台式机。 - kan
    1
    我认为这不应该是被接受的答案,因为在问题中访问Bitbucket是一个要求。 - Andrew
    @Andrew “如果您有两个不同的Bitbucket帐户,那么您只需要创建两个身份(密钥)”。这句话是说,如果您有两个帐户,在问题中有两个存储库,而不是帐户。 - kan
    3
    “@kan- 问题上不是说‘我有一个用于我的9-5工作的Bitbucket账户,我还有一个个人Bitbucket账户。我的目标是能够在同一台电脑上使用两个账户。’吗?听起来像是他有两个Bitbucket账户?” - Andrew
    @Andrew Hm,看起来你是对的。然而,奇怪的是为什么他可以运行,可能他的设置不同。 - kan

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