我一直在通过我没有管理员权限的计算机上的命令行远程处理我的项目,并且在运行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错误。在评论here之后,我将用户名放在远程网址的@符号之前,从那时起,我一直收到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
你知道如何解决这个问题吗?
答案 0 :(得分:320)
我终于找到了问题的解决方案。正如here所述,我在终端中运行了以下命令:
unset SSH_ASKPASS
然后运行git push origin master
按照应有的方式运行。您还可以将该行添加到.bashrc
文件中。
答案 1 :(得分:19)
我最近在RedHat 5机器上处理了这种行为,我们的Git版本是1.7.4.1。
我没有高度的信心unset SSH_ASKPASS
不会产生意想不到的后果,所以我想看看是否有另一种解决方案。
我无法确定,但似乎与我们的Git版本发布的时间差不多patch for this problem was in the works。因此,在我看来,希望更新版本可以纠正这种行为是合理的。
确实如此。 升级到Git的1.8分支解决了这个问题。由于某些奇怪的原因仍然显示错误消息,但是系统正确提示您输入密码并允许其继续。
答案 2 :(得分:0)
这些答案都不适用于我(ssh&#39通过Windows 10上的Cygwin进入RHEL 6.8服务器并尝试从RHEL框中克隆github.com repo)所以我所做的是通过SSH密钥克隆而不是HTTPS用户名/密码。例如我使用git@github.com:MyUsername/myproject.git而不是https网址。我还适当地将我的公钥上传到Github。这种方法运行良好。
注意:在上述解决方案中,我实际上没有尝试升级到git的1.8分支
答案 3 :(得分:0)
您还可以尝试使用ssh -Y登录到远程服务器,以便对话框可以图形方式显示。
与OP一样,通过ssh -X登录也不起作用。尝试推送时,服务器仅重复相同的错误消息-(gnome-ssh-askpass:29241): Gtk-WARNING **: cannot open display:
-与通过ssh进行日志记录(不进行X11转发)时一样。这与OP在尝试ssh -X时报告的行为略有不同,因为他的错误消息与仅使用ssh略有不同。
但是,对我来说,一旦使用ssh -Y登录:就没有错误,密码对话框弹出,我输入密码,GitHub接受了推送。
作为警告,当您将远程服务器视为可信客户端(https://askubuntu.com/questions/35512/what-is-the-difference-between-ssh-y-trusted-x11-forwarding-and-ssh-x-u)时,ssh -Y可能会引发安全问题。因此,在使用它时要小心。