【问题标题】:unable to get SSH keys working between sourcetree and github无法让 SSH 密钥在 sourcetree 和 github 之间工作
【发布时间】:2014-01-05 19:21:30
【问题描述】:

我能够按照这些说明通过命令提示符成功创建密钥并连接到 github:

https://help.github.com/articles/generating-ssh-keys

但是,当我尝试通过 Sourcetree 和 putty 进行连接时,我无法连接。我试过了:

  1. 使用 putty 密钥生成器 (SSH-2 RSA) 生成新密钥
  2. 输入密码
  3. 保存私钥
  4. 保存公钥并添加 .pub 扩展名
  5. 将密钥从 putty 密钥生成器窗口复制/粘贴到 github
  6. 尝试使用我从 github 获得的 SSH 克隆 URL 从我的本地存储库中从我的私有 github 存储库拉取时刷新分支

我还尝试打开从 github 命令行指令生成的密钥,它希望我将其转换为我所做并保存的 putty 类型的密钥,并尝试使用该密钥。也没有运气。

我做错了什么?

【问题讨论】:

    标签: github putty ssh-keys atlassian-sourcetree


    【解决方案1】:

    为了让它工作,我最终去了工具 -> 选项 -> SSH 客户端并将其更改为 OpenSSH。我生成并上传了几种不同类型的密钥,试图让它也能正常工作,但我认为这就是最终做到的。

    【讨论】:

    • Mac 客户端中缺少此选项。有什么线索可以在 mac sourcetree 中添加自定义 ssh 密钥吗?
    • 当“PuTTy/Plink”选项(SourceTree 默认选择)不起作用时,这似乎有效。请注意,“SSH 客户端”选项位于“常规”选项卡中。
    • 工具在哪里?我在我的 Mac 上的 SourceTree 中没有看到这个。
    • 在过去 2 小时内尝试了不同的方法,但无法解决问题。但是这个简单的步骤就像一个魅力。谢谢
    • 这在 Windows 设置中有效。我已经设置了我的 .ssh/id_rsa 密钥和 ssh-agent。
    【解决方案2】:

    就我而言,我需要切换到基于gitssh 的repo 路径,而不是基于https 的repo 路径。这会导致 SourceTree 切换到基于 SSH 的身份验证。

    这个设置可以在Repository => Repository setting => Paths找到

    例子:

    正确回购路径

    git@github.com:<username>/<reponame>.git
    

    ssh://git@github.com/<username>/<reponame>.git
    

    (注意:如果您正在使用不属于您的 repo,请将 username 替换为 organization name

    错误回购路径

    https://github.com/<username>/<reponame>.git
    

    HTTPS repo 路径导致 SourceTree 试图变得更加智能并且失败了。系统会提示您输入用户名/密码 GUI 对话框,如果您启用了 2 因素身份验证,该对话框将永远无法工作。

    【讨论】:

    • 这确实应该是选择的答案。需要注意的一件事是,如果这不是您的存储库,则 是组织名称。
    • 难道Repository =&gt; Repository setting =&gt; Paths的设置只能由组织设置?我找不到设置。或者它是sourcetree中的一个设置?不幸的是,我有双重身份验证和 ssh 密钥设置,但到目前为止我无法访问我的组织存储库...
    • 新信息:当我点击 repos github 页面上的clone or download 按钮时,我可以选择use SSH 并复制提供的路径。但是当我将它添加到 sourcetree 时,我仍然收到消息:Permission denied (publickey).... 但这不可能。我是那个 repo 的创建者和合作者。没有权限怎么办?
    • 将 repo 路径从 https:// 更改为 ssh:// 是我的解决方案。这么简单的事情,却让我困惑了好几个小时。
    【解决方案3】:

    您可能需要考虑从 OpenSSH 切换到 Putty / Plink 并使用嵌入式 Git 而不是主机操作系统提供的 Git。让 ssh-agent 在 Windows 上工作比直接从 SourceTree 和 PuttyGen 中单击要复杂一些。

    如果您仍想使用终端配置 SSH 并启动 ssh-agent,请参见底部两步。

    【讨论】:

      【解决方案4】:

      对于 MacOS 上的 Sourcetree,我必须从 OAuth 更改为 Basic 身份验证,使用“git”作为用户名(不是我的 GitHub 用户名),并生成 SSH 密钥并将其输入到 GitHub。只有这样我才能通过 Sourcetree 中的 SSH 克隆 GitHub 存储库。

      【讨论】:

        【解决方案5】:

        对于 Mac 版本的 SourceTree,工具菜单不存在。

        但是,您可以在 Mac OS 中将 ssh 密钥添加到您的钥匙串中。见:https://superuser.com/questions/879050/sourcetree-ssh-options-on-os-x

        在 Mac OSX 上,本机 SSH 客户端可以直接使用内置的钥匙串。要将您的私钥添加到钥匙串中,只需使用以下命令:

        ssh-add -K /path/of/private/key
        

        例如,如果您的私钥存储在 ~/.ssh 并命名为 id_rsa,您可以使用以下命令:

        ssh-add -K ~/.ssh/id_rsa
        

        然后系统会提示您输入密码,该密码将存储在您的钥匙串中。在此之后,您应该准备好进行无密码登录了。

        【讨论】:

          【解决方案6】:

          要使用SourceTree 登录Github 帐户,您可以使用访问令牌。要创建访问令牌,请按照以下步骤操作。

          1. 转到Settings
          2. 从左侧窗格中选择Developer settings
          3. 选择Personal access token
          4. 点击Generate new token按钮
          5. 给它一个名字
          6. 选择范围并生成令牌(将此令牌保存在安全的地方,因为您将无法再次访问此令牌)

          然后在 SourceTree 应用程序中按照以下步骤操作(对于 Mac 用户,不确定其他平台)

          1. 转到首选项->帐户
          2. 点击添加按钮
          3. Host下拉列表中选择GitHub
          4. Auth Type 下拉列表中选择Basic,从Protocol 下拉列表中选择HTTPS
          5. 在用户名字段中输入您的 GitHub username
          6. 将上一流程生成的access token粘贴到Password字段中
          7. 点击保存就完成了

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-01-14
            • 2018-12-15
            • 2013-05-16
            • 1970-01-01
            • 2017-04-12
            • 2021-12-08
            • 2012-03-22
            相关资源
            最近更新 更多