源树SSH公钥被拒绝

时间:2014-02-25 17:13:33

标签: git ssh bitbucket

我正在https://www.bitbucket.com上的私人存储库中处理项目。

我在本地编码,然后通过BitBucket的Windows Git客户端Sourcetree暂存,提交和推送更新。

之后,我从远程共享服务器中提取文件,这需要SSH身份验证。

为了将git repo与bitbucket帐户连接,我尝试了以下操作:

  1. 推出嵌入式Sourcetree SSH代理(Pageant)
  2. 使用我的密码短语
  3. 将我的.ppk(PuTTY私钥)添加到Pageant
  4. 在我的项目位置打开SourceTree终端,我们称之为C:/Project
  5. 使用git init初始化存储库。
  6. 使用git push -u origin --all将repo从我的计算机推送到BitBucket。
  7. 出现此错误:Permission denied (publickey).
  8. 试图查看我是否可以ssh -Tv git@bitbucket.org - 仍然是Permission denied
  9. 我正在试图找出究竟出了什么问题 - 它是否找到了我的SSH密钥?密钥是否未加载到特定位置?

    注意:我在BitBucket上的个人资料中加载了公钥。

6 个答案:

答案 0 :(得分:79)

对于新的Sierra,Mac上的人可能会遇到同样的问题。解决方案是通过以下方式将私钥添加到SSH代理:

ssh-add -K ~/.ssh/id_rsa

看起来身份[id_rsa]不会被SSH代理持续存在。

请注意,这不是永久性解决方案。每次克隆新存储库时都需要这样做。至少不需要为每次推送提供私钥。

--------更新28.Sep.2017 --------

永久解决方案(On Sierra):

步骤:

1-在做任何事情之前,请确保您在后台运行ssh-agent。

通过以下方式检查ssh-agent是否正在运行:

pgrep 'ssh-agent'

如果该进程正在运行,该命令将返回该进程的PID(ProcessID)。 如果您看到一个值..转到步骤#2。如果没有,那么你需要在后台运行该代理:

eval "$(ssh-agent -s)"

2-编辑~/.ssh/config(如果它不存在为su则创建):

Host *
 AddKeysToAgent yes
 UseKeychain yes
 IdentityFile ~/.ssh/id_rsa

3-然后添加该密钥代理(将是一次):

ssh-add -K ~/.ssh/id_rsa

就是这样。

实际上步骤#2是至关重要的一步。我只是想提供一份完整的指南。

我希望这可以帮助你。'。

答案 1 :(得分:15)

我需要进一步修改这些设置SourceTree:enter image description here

答案 2 :(得分:10)

我知道这已经解决了,但是要添加到已接受的答案中,您实际上并不需要Git Bash才能使其正常工作。正如Cupcake所说,PuTTY确实为私钥提供了String cyclicLeftShift(String s, int k){ String result=""; int n = k % s.length(); result = s.substring(n) + s.substring(0,n); return result; } 个文件,这些文件在通常的PuTTY / Pageant环境之外无法工作。

这是因为终端默认需要在.ppk中找到名为id_rsa的文件,而PuTTY默认不生成该文件。然而Git Bash的~/.ssh确实如此,这就是Tom Granot的解决方案有效的原因。 但是,您可以通过PuTTY密钥生成器通过菜单中的ssh-keygen选项导出相同的文件。请务必将其命名为Conversions/Export OpenSSH Key...,并将其放在id_rsa文件旁边,一切正常。

答案 3 :(得分:9)

嗯 - 经过多次试验和错误后我找到了解决方案。 显然,使用PUTTY的keygen并将新公钥存储在我的.ssh文件夹中不起作用。 但是,使用ssh-keygen IN GIT BASH ,然后尝试使用新生成的密钥对登录,工作正常。 出于好奇,虽然比什么都重要 - 我很想知道为什么会这样。

答案 4 :(得分:2)

在我的Mac上更新我的Sourcetree后发生了这种情况。 对我有用的只是删除~/.ssh/文件夹中除.configknown_hosts文件夹之外的所有内容。然后只需转到首选项下的sourcetree,删除你的github帐户,删除所有.ssh公钥和私钥后再次重新添加配置文件,sourcetree应该在本地重新添加密钥并添加到GitHub

答案 5 :(得分:0)

这是一个古老的问题,但是每次有MacOS更新时,我都会遇到此问题。卡塔琳娜也不例外。

首先,您应该检查配置文件以确认旧密钥是否仍然存在...它应该:

~ ls -al ~/.ssh

然后,您必须通过上面列出的名称再次添加密钥:

~ ssh-add -K ~/.ssh/[key-name]