git produce Gtk-WARNING: impossibile aprire il display


138

Ho lavorato sul mio progetto in remoto tramite la riga di comando su una macchina su cui non ho i diritti di amministratore e dopo l'esecuzione git push origin masterricevo il seguente messaggio di errore:

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

Il mio .git/configfile ha i seguenti contenuti:

    [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

Stavo ricevendo l'errore 403 prima. Seguendo il commento qui , ho messo il mio nome utente prima del segno @ nell'URL remoto e da allora ricevo l'errore Gtk.

Quando accedo al computer utilizzando ssh -Xe provo a inviare, visualizzo il seguente errore:

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

Se cambio l'URL del telecomando in git@github.com:username/repository.git, l'errore è:

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

Sai come aggiustarlo?


2
Immagino tu stia usando ssh. Usa invece ssh -X. Ciò significa che una finestra di dialogo della password sta tentando di aprirsi, ma non è possibile perché non è presente alcuna X.
positrone

Grazie, ma non sto usando ssh esplicitamente, sto solo chiamando git push origin master, quindi non so come applicare ciò che stai dicendo?
John Manak,

Posso sapere da dove stai spingendo sul server? Voglio dire da quale macchina? Come hai effettuato l'accesso a quella macchina?
positrone,

1
Ops. Scusate. Non ho letto completamente la tua domanda. Il tuo "url" dovrebbe essere git@github.com:username/repo.gito https://github.com/username/repo.gitMa stai usando un mix di entrambi.
positrone,

Oh scusa, capisco cosa intendi adesso. Ho provato ad accedere alla macchina utilizzando ssh -X, ma non ha aiutato neanche. Vedi la domanda aggiornata sopra.
John Manak,

Risposte:


336

Ho finalmente scoperto una soluzione al problema. Come è stato descritto qui , ho eseguito il seguente comando nel terminale:

  unset SSH_ASKPASS

e quindi l'esecuzione git push origin masterfunziona come dovrebbe. Puoi anche aggiungere la linea al tuo .bashrcfile.


5
Grazie ... ha risparmiato molto tempo. Ti
benedico

Grazie per quello! :-)
ItayB,

1
Grazie .. ha funzionato per me! Stavo ottenendo un errore simile quando provavo a clonare da bitbucket a macchina linux.
Blesson Jose,

2
Volevo solo aggiungere che era questo script che impostava questa variabile sul mio sistema CentOS 6.7: /etc/profile.d/gnome-ssh-askpass.sh
hshib

Ora sto ricevendo unerror: RPC failed; result=22, HTTP code = 417
pmiranda il

19

Di recente ho affrontato questo comportamento su una macchina RedHat 5 in cui la nostra versione Git era 1.7.4.1.

Non avevo un alto grado di fiducia che unset SSH_ASKPASSnon avrebbe avuto conseguenze indesiderate, quindi volevo vedere se c'era un'altra soluzione.

Non potrei dirlo con certezza, ma sembra che una patch per questo problema fosse in lavorazione nello stesso periodo in cui la nostra versione di Git era stata pubblicata. Quindi, mi è sembrato ragionevole sperare che una versione più recente avrebbe corretto il comportamento.

E infatti lo ha fatto. L'aggiornamento al ramo 1.8 di Git ha risolto il problema. Il messaggio di errore viene ancora visualizzato per qualche strano motivo, ma viene richiesta correttamente la password e si può continuare.


2
Il problema in RHEL 5 (CentOS 5 ecc.) È nel file /etc/profile.d/gnome-ssh-askpass.sh (di proprietà del pacchetto openssh-askpass) dove la variabile di ambiente SSH_ASKPASS è impostata su / usr / libexec / openssh / gnome-ssh-askpass e questo non funziona se non è presente alcuna X (ad es. accesso tramite PuTTY su SSH). Puoi semplicemente commentare la riga in questo file (non eliminare il file o verrà recuperato dopo l'aggiornamento del pacchetto openssh-askpass). Oppure rimuovi il pacchetto openssh-askpass completamente (yum rimuove openssh-askpass).
Milan Kerslager,

0

Nessuna di queste risposte ha funzionato per me (inviando tramite Cygwin su Windows 10 in un server RHEL 6.8 e cercando di clonare un repository github.com dalla casella RHEL) quindi quello che ho fatto è stato clonare tramite una chiave SSH anziché il nome utente HTTPS / parola d'ordine. ad es. ho usato git@github.com: MyUsername / myproject.git anziché l'URL https. Ho anche caricato in modo appropriato la mia chiave pubblica in Github. Questo metodo ha funzionato bene.

Nota: delle soluzioni precedenti, in realtà non ho provato ad aggiornare il ramo 1.8 di git


0

Puoi anche provare ad accedere usando ssh -Y al server remoto in modo che la finestra di dialogo possa apparire graficamente.

Come l'OP, l'accesso tramite ssh -X non ha funzionato. Durante il tentativo di push, il server ha semplicemente ripetuto lo stesso messaggio di errore -(gnome-ssh-askpass:29241): Gtk-WARNING **: cannot open display: - come ha fatto durante la registrazione tramite ssh senza inoltro X11. Questo è un comportamento leggermente diverso da quello che l'OP ha riportato quando ha provato ssh -X poiché il suo messaggio di errore è leggermente cambiato dal solo uso di ssh.

Tuttavia, per me, una volta effettuato l'accesso usando ssh -Y: non si sono verificati errori, è stata visualizzata la finestra di dialogo della password, ho inserito la password e GitHub ha accettato il push.

Come avvertimento, ssh -Y può aprire problemi di sicurezza mentre stai trattando il server remoto come un client attendibile ( /ubuntu/35512/what-is-the-difference-b Between-ssh-y- trusted-x11-forwarding-and-ssh-xu ). Quindi fai attenzione quando lo usi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.