源树SSH公钥被拒绝

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

我'm coding it locally, then staging, commiting and pushing the update vie BitBucket'的Windows Git客户端,Sourcetree .

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

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

  • 推出嵌入式Sourcetree SSH代理(选美)

  • 使用我的密码将我的.ppk(PuTTY私钥)添加到Pageant

  • 在我项目的位置打开SourceTree终端,我们称之为 C:/Project .

  • 使用 git init 初始化存储库 .

  • 使用 git push -u origin --all 以将repo从我的计算机推送到BitBucket .

  • 出现此错误: Permission denied (publickey).

  • 试图看看我是否能 ssh -Tv git@bitbucket.org - 仍然是 Permission denied .

我正在试图找出究竟出了什么问题 - 它是否找到了我的SSH密钥?密钥是否未加载到特定位置?

Note: 我在BitBucket上的 Profiles 中加载了公钥 .

回答(5)

2 years ago

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

ssh-add -K ~/.ssh/id_rsa

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

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

-------- Update 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是至关重要的一步 . 我只是想提供一个完整的指南 .

我希望这可以帮到你 . '

2 years ago

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

2 years ago

我知道这已经解决了,但是要添加到已接受的答案中,您实际上并不需要Git Bash才能使其正常工作 . 正如Cupcake所说,PuTTY确实为私钥提供了 .ppk 个文件,这些文件在普通的PuTTY / Pageant语境之外无法正常工作 .

这是因为终端在默认情况下需要在 ~/.ssh 中找到名为 id_rsa 的文件,而PuTTY却没有't generate that by default. Git Bash' s ssh-keygen ,这就是Tom Granot解决方案的工作原理 . 但是,您可以通过PuTTY密钥生成器通过菜单中的 Conversions/Export OpenSSH Key... 选项导出相同的文件 . 请务必将其命名为 id_rsa 并将其放在 id_rsa.pub 文件旁边,一切都应该正常工作 .

2 years ago

好吧 - 我've found the solution after much trial and error. Apparently, using PUTTY'的keygen并将新公钥存储在我的 .ssh 文件夹中不起作用 . 但是,使用 ssh-keygen IN GIT BASH ,然后尝试使用新生成的密钥对登录,工作正常 . 出于好奇,虽然比什么都重要 - 我很想知道为什么会这样 .

2 years ago

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