(git bash)推送到bitbucket忽略SSH密钥

我跟随了一些networking博客的踪迹,以了解如何设置一切,我有以下情况:

首先, ssh -T git@bitbucket.org返回以下结果

 conq:以myuser身份login。 
您可以使用git或hg连接到Bitbucket。 shell访问被禁用。

这意味着我有正确的SSH密钥设置本地和bitbucket,同意?

我有一个〜/ .ssh /configuration以下内容:

主机bitbucket.org
  IdentityFile〜/ .ssh / id_rsa

那个关键在于那里。

但是,当我尝试命令(从另一个教程采取) git push origin master ,我会得到一个popup窗口说:

 ---------------------------
 PuTTY致命错误
 ---------------------------
已断开连接:没有支持的身份validation方法可用(服务器发送:publickey)
 ---------------------------
好   

通过错误PuTTY Fatal Error判断,它看起来像Git试图使用PuTTY与ssh进行身份验证。 PuTTY的东西根本不知道你在~/.ssh中的设置。 在~/.ssh的设置只有在使用openssh时才有意义,它随Git Bash提供。 看起来好像您已将GIT_SSH环境变量设置为plink.exe ,这是一个部分为PuTTY的工具。

您有两种选择:您可以使用PuTTY和plink.exe进行ssh操作,也可以使用属于Git Bash的openssh

如果您使用PuTTY,那么您需要使用pageant.exe管理您的ssh密钥,这也是PuTTY的一部分。 这是一个相当不错的工具。 运行它,并在任务栏中,您应该看到一个图标。 右键单击该图标以添加您的私钥。 另一个使用PuTTY的步骤是设置GIT_SSH但是看起来你已经完成了。 在这个设置中, git push会使用属于PuTTY的plink.exe来正确地查找pageant.ext存储的pageant.ext

如果你想使用Git Bash中的openssh ,那么你所要做的就是摆脱GIT_SSH设置。 确保使用git push的设置真的是空的一种方法是如果你像这样运行命令:

 GIT_SSH= git push origin master 

在所有其他答案都没有做我的同事之一,我想到了以下几点:

由于推送到远程控制像beanstalk工作(https)甚至ssh使用git bash控制台,我认为它必须与如何调用SSH有关,我们的远程是这样的:

 user@server:/path/to/repo.git 

所以一个简单的which ssh给了我们/bin/ssh

在我们刚刚添加的.bashrc配置文件中

 export GIT_SSH=/bin/ssh.exe 

和瞧。

更简单的解决方案是购买一个mac! 🙂

快乐的打洞

你正尝试通过SSH连接到Bitbucket,而不是通过Git,这是第一个错误告诉你的。 你不能以这种方式连接到Bitbucket。

当你设置你的repo时,如果你不在Bitbucket中的一个现有的,你需要做的是:

git clone git@bitbucket.org:<UserName>/<Name of the Repo>.git

你会得到一个关于接受一个关键的消息,你会被全部设置。

现在,如果您有一个已经存在的回购,您可以自己添加远程,但您将添加到.git/config

您可以将url=git@bitbucket.org:<UserName>/<Name of the Repo>.git添加到[remote "origin"]

尝试使用cmd.exe。 Git Bash似乎有我的机器上的环境变量的问题。

在CMD中, echo %GIT_SSH%来查看它是否被设置(PuTTY / Plink做那个)。 如果已设置,并且您想使用openssh,请使用set GIT_SSH=清除它。

做完这些之后,我可以在CMD中使用ssh进行推送,但是没有问题,尽管Git Bash仍然不起作用。

我遇到了同样的问题,并使压缩解决了它。 在.hgrc

 [ui] ssh = ssh -C