git push / pull продовжує намагатися створити вікно GUI


0

Кожен раз, коли я намагаюся робити git push або тягнути на одному з наших робочих серверів, я отримую попередження "Помилка: Не вдається відкрити дисплей:", якщо я не ввійду з переадресацією -X; мені ввести пароль.

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

Редагувати: Вікно, яке з'являється, коли ввімкнено переадресацію X, наведено нижче: введіть тут опис зображення

Відповіді:


3

Ви можете встановити бажану команду проходу за допомогою git config. Викликається відповідний ключ конфігурації core.askpass.

Щоб змінити його: git config --global core.askpass /path/to/command

Значення, встановлене в Git config, може бути замінено за допомогою GIT_ASKPASSзмінної середовища.

Якщо core.askpassйого не встановлено, він спершу намагається виконати команду, визначену в SSH_ASKPASSзмінній оточення. Наступний (і останній) у резервному порядку - це проста вбудована підказка пароля.

Джерело та деталі: Документація git-config (пошук core.askpass)


Це зробило трюк! Я не знаю, що встановлювало SSH_ASKPASS для якоїсь програми X11, але встановлення його в порожній рядку в моєму .bashrc вирішило проблему. Дуже дякую!
Едвард Грефенштетт

2

Це звучить , як ви використовуєте pinentry програму , щоб ввести GIT пароль для входу, з яких існує кілька варіантів. У вашому випадку вибраний за замовчуванням здається чітким-gtk2, що насправді неприємно як пекло. :)

Спробуйте свою удачу

ls -l /usr/bin/pinentry*

щоб побачити, які варіанти встановлені. Ймовірно, буде один із бінарних файлів, позначених символом, що є "за замовчуванням". Ви можете обрати іншу програму, вказуючи посилання на символьне посилання, хоча це може заплутати менеджера пакунків. Просто, щоб побачити, чи це справді проблема, видаліть / usr / bin / pinentry symlink або перезавантажте її на pinentry-curses, щоб побачити, чи зміниться поведінка.

Найсмішніше, що я не пам’ятаю фактично Git, використовуючи програму пілентури, але gnupg робить. Можливо, у вас є налаштування, що включає gpg-агент, SSH-ключі та ефективно GnuPG з проханням ввести пароль через фразу?

Якщо вам не вистачає привілеїв, щоб безпосередньо поспілкуватися із символьним посиланням, ви можете спробувати редагувати конфігурацію gpg-агента:

mkdir -p ~/.gnupg   # may fail if dir already exists
echo 'pinentry-program /usr/bin/pinentry-curses' >> ~/.gnupg/gpg-agent.conf

Це повинно доручити gpg-агенту використовувати замість цього програму "pinentry-curses" на основі cli. Це довгий постріл, але варто спробувати.


Там дійсно є кілька програм: / usr / bin / pinentry, / usr / bin / pinentry-curses, / usr / bin / pinentry-qt -> pinentry-qt4 та / usr / bin / pinentry-qt4. Я не впевнений, чому git / gpg-agent викликає ці програми, або як їх зупинити. У мене немає кореневого доступу.
Едвард Грефенштетте

Додано абзац про вибір стилів з gpg-агентом. Якщо бути чесним, було б трохи надумано припустити, що gpg-агент тут задіяний, але це принаймні наполовину правдоподібно. Щоб дізнатися, що запускається, ви можете викликати діалогове вікно введення штифтів, і, поки воно показане, запустіть "ps fauxww" в іншій оболонці, щоб переглянути список процесів і шукати будь-які процеси, запущені вашим користувачем. Один з них повинен був викликати це.
Гіропласт

Дякуємо за оновлену пропозицію, але вона не спрацювала. Я запустив fauxww, як ви запропонували, що повідомляє мені, що git pull call "git-remote-https origin ...", який у свою чергу викликає "/ usr / libexec / openssh / x11-ssh-askpass Password:". Я здогадуюсь, що цей останній біт є причиною появи вікна, але я не знаю, чому.
Едвард Грефенштетт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.