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

Якщо я зміню URL-адресу пульта дистанційного керування 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, тож я не знаю, як застосувати те, що ви говорите?
Джон Манак

Чи можу я знати, звідки ви натискаєте на сервер? Я маю на увазі з якої машини? Як ви увійшли в цю машину?
позитрон

1
На жаль Вибачте. Я не повністю прочитав ваше запитання. Ваш "URL" повинен бути git@github.com:username/repo.gitабо бути, https://github.com/username/repo.gitале ви використовуєте суміш обох.
позитрон

Пробач, я розумію, що ти маєш на увазі зараз. Я спробував увійти до машини за допомогою ssh -X, але це теж не допомогло. Дивіться оновлене запитання вище.
Джон Манак

Відповіді:


336

Нарешті я знайшов рішення проблеми. Як було описано тут , я запустив таку команду в терміналі:

  unset SSH_ASKPASS

а потім працює git push origin masterпрацює як слід. Ви також можете додати рядок у свій .bashrcфайл.


5
Дякую ... що заощадило багато часу. Благослови вас
Пунам Бхатт

Дякую за це! :-)
ItayB

1
Дякую .. що працювало на мене! Я отримував подібну помилку при спробі клонування з bitbucket на машину Linux.
Блессон Хосе

2
Просто хотів додати, що саме цей сценарій встановив цю змінну в моїй системі CentOS 6.7: /etc/profile.d/gnome-ssh-askpass.sh
hshib

Тепер я отримуюerror: RPC failed; result=22, HTTP code = 417
pmiranda

19

Нещодавно я розбирався з такою поведінкою на машині RedHat 5, де наша версія Git була 1.7.4.1.

Я не мав високого ступеня впевненості в цьому unset SSH_ASKPASS не мав би непередбачуваних наслідків, тому я хотів подивитися, чи є інше рішення.

Я не міг сказати напевно, але, схоже, виправлення цієї проблеми було в роботі приблизно в той же час, коли була опублікована наша версія Git. Отже, мені здалося, що розумно сподіватися, що новіша версія виправить поведінку.

І справді це було. Оновлення до версії 1.8 Git вирішило проблему. Повідомлення про помилку все ще відображається з якоїсь дивної причини, але вам буде запропоновано правильно ввести пароль і дозволено продовжувати.


2
Проблема в RHEL 5 (CentOS 5 тощо) полягає у файлі /etc/profile.d/gnome-ssh-askpass.sh (належить пакету openssh-askpass), де змінна середовища SSH_ASKPASS сліпо встановлена ​​на / usr / libexec / openssh / gnome-ssh-askpass, і це не працює, якщо немає X (тобто увійшли через PuTTY через SSH). Ви можете просто прокоментувати рядок у цьому файлі (не видаляйте файл, або він буде відновлений після оновлення пакета openssh-askpass). Або видалити пакунок openssh-askpass повністю (yum delete openssh-askpass).
Мілан Керслагер

0

Жодна з цих відповідей не працювала для мене (ssh'ing через Cygwin в Windows 10 на сервер RHEL 6.8 і намагання клонувати репортаж github.com з поля RHEL), тому те, що я зробив, було клоновано за допомогою ключа SSH, а не HTTPS-імені користувача / пароль. Наприклад, я використовував git@github.com: MyUsername / myproject.git, а не URL-адресу https. Я також належним чином завантажив свій відкритий ключ у Github. Цей метод спрацював чудово.

Примітка. З вищезазначених рішень я насправді не намагався перейти на гілку 1,8 git


0

Ви також можете спробувати увійти за допомогою ssh -Y на віддалений сервер, щоб діалогове вікно відображалося графічно.

Як і в ОП, увійти через ssh -X не вийшло. Намагаючись натиснути, сервер просто повторив те саме повідомлення про помилку -(gnome-ssh-askpass:29241): Gtk-WARNING **: cannot open display: - як це робилося під час реєстрації через ssh без переадресації X11. Це дещо інша поведінка, ніж те, про що повідомляло ОП, коли він спробував ssh -X, оскільки його повідомлення про помилку трохи змінилося від просто використання ssh.

Однак, як тільки я ввійшов у систему за допомогою ssh -Y: помилки не було, з'явилося діалогове вікно з паролем, я набрав пароль, і GitHub прийняв push.

Як попередження, ssh -Y може відкрити проблеми безпеки, коли ви ставитесь до віддаленого сервера як довіреного клієнта ( /ubuntu/35512/what-is-the-difference-between-ssh-y- trusted-x11-forwarding-and-ssh-xu ). Тому будьте обережні при використанні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.