git产生Gtk警告:无法打开显示


138

我一直在我没有管理员权限的计算机上通过命令行远程处理项目,运行后git push origin master出现以下错误消息:

(gnome-ssh-askpass:29241): Gtk-WARNING **: cannot open display:

我的.git/config文件包含以下内容:

    [core]
       repositoryformatversion = 0
       filemode = true
       bare = false
       logallrefupdates = true 
    [remote "origin"]
       fetch = +refs/heads/*:refs/remotes/origin/*
       url = https://username@github.com/username/repository.git 
    [branch "master"]
       remote = origin
       merge = refs/heads/master

我之前收到403错误。在这里发表评论之后,我将用户名放在远程URL的@符号之前,从那以后,我一直收到Gtk错误。

当我使用登录ssh -X并尝试推送到计算机时,出现以下错误:

X11 connection rejected because of wrong authentication.
(gnome-ssh-askpass:31922): Gtk-WARNING **: cannot open display:localhost:10.0

如果我将遥控器的网址更改为git@github.com:username/repository.git,则错误为:

ssh: connect to host github.com port 22: Connection timed out
fatal: The remote end hung up unexpectedly

你知道如何解决这个问题吗?


2
我猜您正在使用ssh。请改用ssh -X。这意味着密码对话框试图打开,但不能因为没有X.
正电子

谢谢,但是我没有显式地使用ssh,只是打电话给git push origin master,所以我不知道该如何运用你的意思?
John Manak

我可以知道您从哪里推送到服务器吗?我是说从哪台机器?您如何登录到该计算机?
positron

1
哎呀。抱歉。我没有完全阅读您的问题。您的“ url”应该为git@github.com:username/repo.git或,https://github.com/username/repo.git但是您同时使用了两者。
正子

哦,对不起,我明白你的意思了。我尝试使用登录到计算机ssh -X,但这也没有帮助。请参阅上面更新的问题。
John Manak

Answers:


336

我终于找到了解决该问题的方法。由于它被描述在这里,我跑在终端下面的命令:

  unset SSH_ASKPASS

然后git push origin master以应有的方式运行。您还可以将行添加到.bashrc文件中。


5
谢谢...节省了很多时间。祝福你
Poonam布哈特

感谢那!:-)
ItayB 2015年

1
谢谢..为我工作!尝试从bitbucket克隆到linux机器时出现类似错误。
Blesson Jose

2
只是想补充一点,这是在我的CentOS 6.7系统上通过此脚本设置此变量:/etc/profile.d/gnome-ssh-askpass.sh
hshib

现在我得到了error: RPC failed; result=22, HTTP code = 417
pmiranda

19

我最近在Git版本为1.7.4.1的RedHat 5机器上处理了这种行为。

我没有那么高的信心,unset SSH_ASKPASS不会有意想不到的后果,所以我想看看是否还有另一种解决方案。

我无法确定,但是似乎在发布我们的Git版本的同时,正在针对该问题进行补丁。因此,在我看来,希望有一个更新的版本可以纠正此现象是合理的。

确实做到了。升级到Git的1.8分支解决了该问题。 仍然由于某些奇怪的原因而显示错误消息,但是正确提示您输入密码并允许其继续。


2
RHEL 5(CentOS 5等)中的问题存在于文件/etc/profile.d/gnome-ssh-askpass.sh(由openssh-askpass软件包拥有)中,其中SSH_ASKPASS环境变量被盲目设置为/ usr / libexec / openssh / gnome-ssh-askpass,如果没有X(即通过SSH通过PuTTY登录),则此方法不起作用。您可以简单地注释掉此文件中的这一行(请勿删除文件,否则将在更新openssh-askpass软件包后将其恢复)。或者完全删除软件包openssh-askpass(百胜删除openssh-askpass)。
米兰·科尔斯拉格

0

这些答案对我都不起作用(通过Windows 10上的Cygwin插入RHEL 6.8服务器并尝试从RHEL框中克隆github.com仓库),所以我所做的是通过SSH密钥而不是HTTPS用户名/密码。例如我使用git@github.com:MyUsername / myproject.git而不是https url。我还适当地将我的公钥上传到了Github。这种方法效果很好。

注意:在上述解决方案中,我实际上并未尝试升级到git的1.8分支


0

您也可以尝试使用ssh -Y登录到远程服务器,以便对话框可以图形方式显示。

与OP一样,通过ssh -X登录也不起作用。尝试推送时,服务器仅重复相同的错误消息-- (gnome-ssh-askpass:29241): Gtk-WARNING **: cannot open display:与通过ssh进行日志记录(没有X11转发)时一样。这与OP在尝试ssh -X时报告的行为略有不同,因为他的错误消息与仅使用ssh时有所不同。

但是,对我来说,一旦使用ssh -Y登录:就没有错误,密码对话框弹出,我输入密码,GitHub接受了推送。

作为警告,当您将远程服务器视为受信任的客户端时,ssh -Y可能会引发安全问题(/ubuntu/35512/what-is-the-difference-between-ssh-y-信任的x11转发和ssh-xu)。因此,使用它时要小心。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.