【问题标题】:(git bash) push to bitbucket ignores SSH key(git bash) 推送到 bitbucket 忽略 SSH 密钥
【发布时间】:2013-06-22 19:54:53
【问题描述】:

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

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

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

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

我有一个~/.ssh/config,内容如下:

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

那把钥匙当然在那里。

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

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

【问题讨论】:

    标签: windows git ssh bitbucket git-bash


    【解决方案1】:

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

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

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

    如果你想使用 Git Bash 中的 openssh,那么你需要做的就是去掉 GIT_SSH 设置。使用git push 时确保设置真正为空的一种方法是运行如下命令:

    GIT_SSH= git push origin master
    

    【讨论】:

    • 正确!今天早上我醒来时顿悟了;记住错误实际上来自腻子,这次我重新安装了 Git Bash,配置了 openssh 而不是 turtoise/putty plink 等,它立即工作。问题是,我运行了 pageagent 并在那里导入了 .ssh 密钥,但它仍然无法正常工作。前一天花了我整个晚上......在处理与 ssh 相关的事情时很容易忘记时间。
    • 对于那些使用 plink 的 PuTTY 选美比赛的人,那么以下命令应该是等效的(假设 plink 在 PATH 中)plink -ssh git@bitbucket.org
    • 使用GIT_SSH= git push origin master 时出现致命错误。我在这里错过了什么?
    【解决方案2】:

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

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

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

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

    在我们刚刚添加的.bashrc 个人资料中

    export GIT_SSH=/bin/ssh.exe
    

    瞧瞧。

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

    祝你好运

    【讨论】:

    • 您先生 - 真是个天才!我已经挣扎了好几个小时,而你的单线在一秒钟内就把它修好了。 提示 Fedora
    • 您说的太对了,非常感谢您的回答。我挣扎了好几个小时
    【解决方案3】:

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

    当您设置您的存储库时,如果您不在 Bitbucket 中的现有存储库中,您需要做的就是:

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

    您会收到一条关于接受密钥的消息,并且一切就绪。

    现在,如果您有一个已经存在的 repo,您​​可以自己添加遥控器,但您可以将其添加到 .git/config

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

    【讨论】:

    • 是的,我已经有了,但它仍然不会使用 SSH。原来是因为我安装了 GIT 来使用 TurtoisePlink 和 puttygen.exe,而不是 Git Bash 提供的 ssh 客户端。
    【解决方案4】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 2019-05-21
      相关资源
      最近更新 更多