11

我在网络上跟踪了一堆博客路径,以了解应如何设置所有内容,并且遇到以下情况:

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

conq:以 myuser 身份登录。
您可以使用 git 或 hg 连接到 Bitbucket。外壳访问被禁用。

这意味着我在本地和 bitbucket 中都正确设置了 ssh 密钥,同意吗?

我有一个~/.ssh/config包含以下内容:

托管 bitbucket.org
 身份文件 ~/.ssh/id_rsa

那把钥匙当然在那里。

但是,当我尝试命令(取自另一个教程)git push origin master时,我会得到一个弹出窗口:

--------------------------
腻子致命错误
--------------------------
断开连接:没有可用的受支持的身份验证方法(服务器发送:publickey)
--------------------------
好的   

4

4 回答 4

20

从错误来看PuTTY Fatal Error,看起来 Git 正在尝试使用 PuTTY 来通过 ssh 进行身份验证。问题是 PuTTY 根本不知道您的设置~/.ssh。中的设置仅在使用Git Bash 附带~/.ssh的 时才有意义。openssh看起来好像您已将GIT_SSH环境变量设置为plink.exe,这是一个属于 PuTTY 的工具。

您有两个选择:您可以使用 PuTTY 和plink.exessh 操作,或者您可以使用opensshGit Bash 的一部分。

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

如果您想使用opensshGit Bash 的一部分,那么您需要做的就是摆脱该GIT_SSH设置。使用时确保设置为空的一种方法git push运行如下命令:

GIT_SSH= git push origin master
于 2013-06-25T21:11:34.507 回答
3

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

由于推送到像 beanstalk 这样的遥控器可以工作(https),甚至 ssh 也可以使用 git bash 控制台工作,我认为它一定与 SSH 的调用方式有关,我们的遥控器是这样的:

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

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

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

export GIT_SSH=/bin/ssh.exe

瞧。

一个更简单的解决方案是购买 Mac!:)

快乐的吉丁

于 2015-04-15T09:55:19.337 回答
1

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

当您设置您的存储库时,如果您不在 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"]

于 2013-06-25T20:54:54.213 回答
1

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

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

之后,我可以毫无问题地在 CMD 中使用 ssh 进行推送和拉取,尽管 Git Bash 仍然无法正常工作。

于 2014-03-18T15:28:17.307 回答