无法在sourcetree和github之间获取SSH密钥

时间:2013-12-17 20:37:26

标签: github putty ssh-keys atlassian-sourcetree

我能够通过命令提示符成功创建密钥并按照这些说明连接到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存储库中拉出分支
  7. 我也尝试打开从github命令行指令生成的密钥,它希望我将它转换为我做过并保存的putty类型密钥,尝试使用该密钥。也没有运气。

    我做错了什么?

6 个答案:

答案 0 :(得分:48)

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

答案 1 :(得分:22)

就我而言,我需要切换到基于//select first item spnReport.setSelection(0);git的回购路径,而不是基于ssh的回购路径。这会导致SourceTree切换到基于SSH的身份验证。

此设置位于https

示例:

更正回购路径

Repository => Repository setting => Paths

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

(注意:如果您使用的是不属于您的回购,请将ssh://git@github.com/<username>/<reponame>.git 替换为username

错误回购路径

organization name

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

答案 2 :(得分:1)

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

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

Steps

答案 3 :(得分:1)

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

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

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

lst = list(range(0,10))
import random

span = 3
def get_random(lst, span):
    starting_first = random.sample(lst[:-span*2+1], 1)[0]
    first_return = [starting_first, starting_first+1, starting_first+2]
    second_start = random.sample(lst[lst.index(first_return[-1]):-span+1],1)[0]
    second_return = [second_start, second_start+1, second_start+2]
    return (first_return, second_return)

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

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

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

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

enter image description here enter image description here

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

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