git produce Gtk-WARNING: no se puede abrir la pantalla


138

He estado trabajando en mi proyecto de forma remota a través de la línea de comandos en una máquina para la que no tengo derechos de administrador y después de ejecutar git push origin masterrecibo el siguiente mensaje de error:

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

Mi .git/configarchivo tiene los siguientes contenidos:

    [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

Estaba recibiendo el error 403 antes. Siguiendo el comentario aquí , puse mi nombre de usuario antes del signo @ en la url remota y desde entonces recibí el error Gtk.

Cuando inicio sesión en la máquina usando ssh -Xe intento presionar, aparece el siguiente error:

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

Si cambio la url del control remoto a git@github.com:username/repository.git, entonces el error es:

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

¿Sabes cómo arreglar ésto?


2
Supongo que estás usando ssh. Use ssh -X en su lugar. Esto significa que un diálogo de contraseña está intentando abrirse, pero no pudo porque no hay una X.
positron

Gracias, pero no estoy usando ssh explícitamente, solo llamo git push origin master, así que no sé cómo aplicar lo que estás diciendo.
John Manak

¿Puedo saber desde dónde está empujando al servidor? Quiero decir de qué máquina? ¿Cómo has iniciado sesión en esa máquina?
positron

1
Ups Lo siento. No leí completamente tu pregunta. Su "url" debería ser git@github.com:username/repo.gito https://github.com/username/repo.gitPero está utilizando una combinación de ambos.
positron

Oh lo siento, entiendo lo que quieres decir ahora. Intenté iniciar sesión en la máquina usando ssh -X, pero eso tampoco ayudó. Vea la pregunta actualizada arriba.
John Manak

Respuestas:


336

Finalmente he descubierto una solución al problema. Como se describió aquí , ejecuté el siguiente comando en la terminal:

  unset SSH_ASKPASS

y luego correr git push origin masterfunciona como debería. También puede agregar la línea a su .bashrcarchivo.


55
Gracias ... eso ahorró mucho tiempo. Dios te bendiga
Poonam Bhatt

¡Gracias por eso! :-)
ItayB

1
Gracias ... eso funcionó para mí! Recibía un error similar al intentar clonar de Bitbucket a Linux.
Blesson Jose

2
Solo quería agregar que fue este script el que configuró esta variable en mi sistema CentOS 6.7: /etc/profile.d/gnome-ssh-askpass.sh
hshib el

Ahora estoy unerror: RPC failed; result=22, HTTP code = 417
pmiranda

19

Recientemente me ocupé de este comportamiento en una máquina RedHat 5 donde nuestra versión de Git era 1.7.4.1.

No tenía un alto grado de confianza que unset SSH_ASKPASS no tuviera consecuencias no deseadas, así que quería ver si había otra solución.

No podía decirlo con certeza, pero parece que se estaba preparando un parche para este problema en al mismo tiempo que se había publicado nuestra versión de Git. Entonces, me pareció que era razonable esperar que una versión más reciente corrigiera el comportamiento.

Y de hecho lo hizo. La actualización a la rama 1.8 de Git resolvió el problema. El mensaje de error todavía se muestra por algún motivo extraño, pero se le solicita correctamente su contraseña y se le permite continuar.


2
El problema en RHEL 5 (CentOS 5, etc.) está en el archivo /etc/profile.d/gnome-ssh-askpass.sh (propiedad del paquete openssh-askpass) donde la variable de entorno SSH_ASKPASS está configurada a ciegas en / usr / libexec / openssh / gnome-ssh-askpass y esto no funciona si no hay una X (es decir, conectado a través de PuTTY a través de SSH). Simplemente puede comentar la línea en este archivo (no elimine el archivo o se recuperará después de la actualización del paquete openssh-askpass). O elimine el paquete openssh-askpass por completo (yum remove openssh-askpass).
Milan Kerslager

0

Ninguna de estas respuestas funcionó para mí (enviando a través de Cygwin en Windows 10 a un servidor RHEL 6.8 e intentando clonar un repositorio de github.com desde el cuadro RHEL), así que lo que hice fue clonar a través de una clave SSH en lugar de un nombre de usuario HTTPS / contraseña. por ejemplo, utilicé git@github.com: MyUsername / myproject.git en lugar de la URL https. También cargué apropiadamente mi clave pública en Github. Este método funcionó bien.

Nota: De las soluciones anteriores, en realidad no intenté actualizar a la rama 1.8 de git


0

También puede intentar iniciar sesión usando ssh -Y en el servidor remoto para que el cuadro de diálogo pueda aparecer gráficamente.

Al igual que el OP, iniciar sesión a través de ssh -X no funcionó. Al intentar presionar, el servidor simplemente repitió el mismo mensaje de error:(gnome-ssh-askpass:29241): Gtk-WARNING **: cannot open display: , como lo hizo al iniciar sesión a través de ssh sin reenvío X11. Este es un comportamiento ligeramente diferente de lo que informó el OP cuando intentó ssh -X ya que su mensaje de error cambió ligeramente con solo usar ssh.

Sin embargo, para mí, una vez que inicié sesión con ssh -Y: no hubo ningún error, apareció el cuadro de diálogo de contraseña, escribí la contraseña y GitHub aceptó el envío.

Como advertencia previa, ssh -Y puede abrir problemas de seguridad ya que trata al servidor remoto como un cliente confiable ( /ubuntu/35512/what-is-the-difference-between-ssh-y- confiable-x11-reenvío-y-ssh-xu ). Así que ten cuidado al usarlo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.