我正在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 回答
对于新的Sierra,在Mac上可能有同样的问题 . 解决方案是通过以下方式将私钥添加到SSH代理:
看起来身份[id_rsa]不会被SSH代理持久存在 .
请注意,这不是一个永久的解决方案 . 每次克隆新的存储库时都需要这样做 . 至少不需要为每次推送提供私钥到远程 .
-------- Update 28.Sep.2017 --------
永久解决方案(On Sierra):
脚步:
1-在执行任何操作之前,请确保在后台运行ssh-agent .
要检查ssh-agent是否正在运行:
如果该进程正在运行,该命令将返回该进程的PID(ProcessID) . 如果您看到一个值..转到步骤#2 . 如果没有,那么你需要在后台运行该代理:
2-编辑
~/.ssh/config
(如果su
不存在则创建):3-然后添加该密钥代理(即一次):
而已 .
实际上,步骤#2是至关重要的一步 . 我只是想提供一个完整的指南 .
我希望这可以帮到你 . '
我需要进一步修改这些设置SourceTree:
我知道这已经解决了,但是要添加到已接受的答案中,您实际上并不需要Git Bash才能使其正常工作 . 正如Cupcake所说,PuTTY确实为私钥提供了
.ppk
个文件,这些文件在普通的PuTTY / Pageant语境之外无法正常工作 .这是因为终端在默认情况下需要在
~/.ssh
中找到名为id_rsa
的文件,而PuTTY却没有't generate that by default. Git Bash' sssh-keygen
,这就是Tom Granot解决方案的工作原理 . 但是,您可以通过PuTTY密钥生成器通过菜单中的Conversions/Export OpenSSH Key...
选项导出相同的文件 . 请务必将其命名为id_rsa
并将其放在id_rsa.pub
文件旁边,一切都应该正常工作 .好吧 - 我've found the solution after much trial and error. Apparently, using PUTTY'的keygen并将新公钥存储在我的
.ssh
文件夹中不起作用 . 但是,使用ssh-keygen
IN GIT BASH ,然后尝试使用新生成的密钥对登录,工作正常 . 出于好奇,虽然比什么都重要 - 我很想知道为什么会这样 .在我的Mac上更新我的Sourcetree之后发生了这种情况 . 对我有用的只是删除
~/.ssh/
文件夹中的所有内容,除了.config
和known_hosts
文件夹 . 然后只需转到首选项下的sourcetree,删除你的github帐户,删除所有.ssh
公钥和私钥后再次重新添加配置文件,sourcetree应该在本地重新添加密钥并添加到GitHub