Git 始终需要从两台计算机更新使用Bitbucket的ssh密钥

Git 始终需要从两台计算机更新使用Bitbucket的ssh密钥,git,version-control,bitbucket,atlassian-sourcetree,Git,Version Control,Bitbucket,Atlassian Sourcetree,我在使用SSH连接和生成的密钥对处理Bitbucket上托管的repo时从来没有遇到过任何问题。但是,由于我从两台不同的机器(例如家庭机器、工作机器)访问我的回购协议,我总是 Permission denied (publickey).fatal: Could not read from remote repository. 每次我换机器。因此,我目前不是很好的解决办法是用 rm -r .ssh (我只是在使用一个)然后使用Sourcetree或Terminal生成一个新的。然后,我从我的B

我在使用SSH连接和生成的密钥对处理Bitbucket上托管的repo时从来没有遇到过任何问题。但是,由于我从两台不同的机器(例如家庭机器、工作机器)访问我的回购协议,我总是

Permission denied (publickey).fatal: Could not read from remote repository.
每次我换机器。因此,我目前不是很好的解决办法是用

rm -r .ssh
(我只是在使用一个)然后使用Sourcetree或Terminal生成一个新的。然后,我从我的Bitbucket帐户中删除我正在使用的机器的旧密钥,并粘贴到新密钥中


从那以后,这种方法一直有效,但必须有更好的解决方案。我浏览了Bitbucket文档,但它只是说为每台正在访问回购协议的机器添加一个新密钥,显然这不起作用。我肯定我错过了什么。谢谢你的帮助

确保添加第二个键时不会影响第一个键


如果你不能用2把钥匙使钻头铲斗工作,你可以在两台机器上使用相同的钥匙。只需将
~/.ssh
目录从当前工作的机器复制到另一台机器。

您应该将来自家庭机器和工作机器的ssh密钥添加到您的bitbucket帐户中

将ssh密钥添加到bitbucket的整个步骤如下(您可以跳过已经完成的步骤):

  • 在家庭计算机中生成SSH密钥

    在家用计算机中,执行
    ssh-keygen
    命令。它将在本地计算机中生成ssh密钥。复制公钥的内容
    id_rsa.pub
    ,将其添加到bitbucket中(如步骤2所示)

  • 将ssh密钥从主计算机添加到bitbucket

    在bitbucket主页->bitbucket设置()->SSH密钥->添加密钥->将
    id\u rsa.pub
    (在步骤1中)的内容粘贴到密钥选项->添加密钥

  • 在工作机器中生成SSH密钥

    在工作机中,执行ssh-keygen命令。它将在本地计算机中生成ssh密钥。粘贴公钥的内容
    id_rsa.pub
    ,将其添加到bitbucket中(如步骤4所示)

  • 将SSH密钥从工作机器添加到bitbucket

    单击bitbucket的SSH密钥中心中的添加密钥,然后粘贴
    id\u rsa.pub
    (在步骤3中)

  • 现在,将bitbucket repo与家庭机器和工作机器连接起来即可访问


    如果您仍然无法访问bitbucket repo vis ssh密钥,请通过命令
    ssh-T进行故障排除hg@bitbucket.org


    详细信息,您可以参考文档。

    因此,这里有一个链接,指向如何解决该问题的指南


    如评论中所述,苹果改变了Sierra/High Sierra中的SSH行为。关于这个主题()有一个状态为“已解决”的Sourcetree问题,因此Sourcetree向
    .ssh/config
    添加了自2.7.2以来所需的标志,但这对我来说仍然不起作用。我需要向我的launch Agent添加
    ssh add-A

    您尝试过向您的帐户添加多个密钥吗?那么这是macOS Sierra还是macOS High Sierra?
    ssh add-L
    是否列出您的密钥?这两台机器当前都在高速运行。命令的输出是
    代理没有标识。
    应该是这样的吗?似乎我必须在生成密钥后手动添加密钥,这可能是问题所在……所以我已经找到了问题所在,它不是由Bitbucket引起的,而是由两台机器引起的。当我通过Sourcetree或Terminal生成密钥时,即使我使用
    ssh add~/.ssh/id\u rsa
    手动添加密钥,也会在重启机器后从ssh列表中删除密钥。当我在重启后键入
    ssh add-L
    时,它返回
    代理没有标识。
    。任何想法,为什么要删除密钥以及如何修复它?忘记提到@jimredmondsho谢,但这正是我正在使用的过程,它工作不正常:/首先,请确保来自两台机器的ssh密钥都添加到bitbucket中。然后可以通过命令
    ssh-T测试连接hg@bitbucket.org
    (我在回答的最后更新了)。谢谢!这正是我使用的docs页面,但是我如何影响另一个键呢?我不需要在设置页面的列表中添加另一个键吗?那么这将如何改变第一个键中的任何数据呢?复制选项实际上似乎是一个可能的解决方案!当我再次访问我的工作机器时,我将尝试此操作!我将在这里发布结果。因此,您的方法当然有效,但与多台计算机共享一个密钥可能不是一个好主意。当您想撤销某台机器时,您不能仅使用一个密钥。不管怎样,我现在的问题是两台机器在重启后都会清除ssh密钥列表(请参阅顶部的注释)。