我跟随了一些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