git menghasilkan Gtk-WARNING: tidak dapat membuka tampilan

139

Saya telah mengerjakan proyek saya dari jarak jauh melalui baris perintah pada mesin yang saya tidak memiliki hak admin dan setelah menjalankan git push origin mastersaya mendapatkan pesan kesalahan berikut:

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

.git/configFile saya memiliki konten berikut:

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

Saya mendapatkan kesalahan 403 sebelumnya. Mengikuti komentar di sini , saya meletakkan nama pengguna saya sebelum tanda @ di url jarak jauh dan sejak itu, saya mendapatkan kesalahan Gtk.

Ketika saya masuk ke mesin menggunakan ssh -Xdan mencoba mendorong, saya mendapatkan kesalahan berikut:

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

Jika saya mengubah url remote menjadi [email protected]:username/repository.git, maka kesalahannya adalah:

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

Apakah Anda tahu cara memperbaikinya?

John Manak
sumber
2
Saya kira Anda menggunakan ssh. Gunakan ssh -X sebagai gantinya. Ini berarti dialog kata sandi mencoba terbuka, tetapi tidak bisa karena tidak ada X.
positron
Terima kasih, tapi saya tidak menggunakan ssh secara eksplisit, hanya menelepon git push origin master, jadi saya tidak tahu bagaimana menerapkan apa yang Anda katakan?
John Manak
Bolehkah saya tahu dari mana Anda mendorong ke server? Maksud saya dari mesin yang mana? Bagaimana Anda masuk ke mesin itu?
positron
1
Ups. Maaf. Saya tidak sepenuhnya membaca pertanyaan Anda. "Url" Anda harus [email protected]:username/repo.gitatau https://github.com/username/repo.gitTetapi Anda menggunakan campuran keduanya.
positron
Oh maaf, saya mengerti apa yang Anda maksud sekarang. Saya mencoba masuk ke mesin menggunakan ssh -X, tetapi itu juga tidak membantu. Lihat pertanyaan terbaru di atas.
John Manak

Jawaban:

337

Saya akhirnya menemukan solusi untuk masalah tersebut. Seperti yang dijelaskan di sini , saya menjalankan perintah berikut di terminal:

  unset SSH_ASKPASS

dan kemudian berjalan git push origin masterbekerja sebagaimana mestinya. Anda juga dapat menambahkan baris ke .bashrcfile Anda .

John Manak
sumber
5
Terima kasih ... itu menghemat banyak waktu. Bless you
Poonam Bhatt
Terima kasih untuk itu! :-)
ItayB
1
Terima kasih .. itu berhasil untuk saya! Saya mendapatkan kesalahan serupa saat mencoba mengkloning dari bitbucket ke mesin linux.
Blesson Jose
2
Hanya ingin menambahkan bahwa skrip inilah yang mengatur variabel ini pada sistem CentOS 6.7 saya: /etc/profile.d/gnome-ssh-askpass.sh
hshib
Sekarang saya mendapatkanerror: RPC failed; result=22, HTTP code = 417
pmiranda
19

Saya baru-baru ini menangani perilaku ini pada mesin RedHat 5 di mana versi Git kami adalah 1.7.4.1.

Saya tidak memiliki tingkat kepercayaan yang tinggi yang unset SSH_ASKPASStidak akan menimbulkan konsekuensi yang tidak diinginkan, jadi saya ingin melihat apakah ada solusi lain.

Saya tidak tahu pasti, tetapi tampaknya patch untuk masalah ini sedang dikerjakan sekitar waktu yang sama dengan versi Git kami diterbitkan. Jadi, menurut saya masuk akal untuk berharap bahwa versi yang lebih baru akan memperbaiki perilaku tersebut.

Dan memang benar. Mengupgrade ke 1.8 cabang Git menyelesaikan masalah. Pesan kesalahan masih ditampilkan karena beberapa alasan aneh, tetapi Anda diminta dengan benar untuk kata sandi Anda dan diizinkan untuk melanjutkan.

eikonomega
sumber
2
Masalah di RHEL 5 (CentOS 5 dll.) Ada di file /etc/profile.d/gnome-ssh-askpass.sh (dimiliki oleh paket openssh-askpass) di mana variabel lingkungan SSH_ASKPASS secara buta diatur ke / usr / libexec / openssh / gnome-ssh-askpass dan ini tidak bekerja jika tidak ada X (mis. masuk melalui PuTTY melalui SSH). Anda dapat dengan mudah mengomentari baris dalam file ini (jangan hapus file atau akan dipulihkan setelah pembaruan paket openssh-askpass). Atau hapus paket openssh-askpass sepenuhnya (yum remove openssh-askpass).
Milan Kerslager
0

Tak satu pun dari jawaban ini berhasil untuk saya (ssh'ing via Cygwin di Windows 10 ke server RHEL 6.8 dan mencoba mengkloning repo github.com dari kotak RHEL) jadi yang saya lakukan adalah mengkloning melalui kunci SSH daripada nama pengguna HTTPS / kata sandi. misalnya saya menggunakan [email protected]: MyUsername / myproject.git daripada https url. Saya juga mengunggah kunci publik saya dengan tepat ke Github. Metode ini bekerja dengan baik.

Catatan: Dari solusi di atas, saya sebenarnya tidak mencoba meningkatkan ke 1.8 cabang git

johnsimer
sumber
0

Anda juga dapat mencoba masuk menggunakan ssh -Y ke server jarak jauh sehingga kotak dialog dapat muncul secara grafis.

Seperti OP, masuk melalui ssh -X tidak berfungsi. Saat mencoba melakukan push, server hanya mengulangi pesan kesalahan yang sama - (gnome-ssh-askpass:29241): Gtk-WARNING **: cannot open display:- seperti yang terjadi saat masuk melalui ssh tanpa penerusan X11. Ini adalah perilaku yang sedikit berbeda dari apa yang dilaporkan OP ketika dia mencoba ssh -X karena pesan kesalahannya sedikit berubah dari hanya menggunakan ssh.

Namun, bagi saya, setelah masuk menggunakan ssh -Y: tidak ada kesalahan, kotak dialog kata sandi muncul, saya mengetik kata sandi, dan GitHub menerima dorongan tersebut.

Sebagai peringatan sebelumnya, ssh -Y dapat membuka masalah keamanan karena Anda memperlakukan server jarak jauh sebagai klien tepercaya ( /ubuntu/35512/what-is-the-difference-between-ssh-y- Trusted-x11-forwarding-and-ssh-xu ). Jadi berhati-hatilah saat menggunakannya.

cr_dave
sumber