git push/pull продолжает пытаться создать окно GUI

Каждый раз, когда я пытаюсь выполнить git push или pull на одном из наших рабочих серверов, я получаю предупреждение "Ошибка: не могу открыть дисплей:", если только я не вхожу в систему с переадресацией -X, и в этом случае появляется какое-то уродливое окно 90-х годов. мне ввести свой пароль.

Есть ли какие-либо настройки, чтобы подавить это поведение? Я в полном замешательстве и ничего не могу найти в Google...

Редактировать: окно, которое появляется, когда включена переадресация X, показано ниже:введите описание здесь

2 ответа

Решение

Вы можете установить желаемую команду askpass, используя git config, Соответствующий ключ конфигурации называется core.askpass,

Чтобы изменить это: git config --global core.askpass /path/to/command

Значение, установленное в вашей конфигурации Git, может быть переопределено с помощью GIT_ASKPASS переменная окружения.

Если core.askpass не установлен, сначала он пытается выполнить команду, определенную в SSH_ASKPASS переменная окружения. Следующим (и последним) в резервном порядке является простая встроенная подсказка пароля.

Источник и подробности: git-config Документация (поиск core.askpass)

Похоже, вы используете программу pinentry для ввода пароля для входа в git, из которых существует несколько вариантов. В вашем случае выбранное значение по умолчанию выглядит как pinentry-gtk2, что действительно ужасно чертовски.:)

Испытай свою удачу с

ls -l /usr/bin/pinentry*

чтобы увидеть, какие варианты установлены. Скорее всего, будет один из двоичных символов, который является "по умолчанию". Вы можете выбрать другую программу pinentry, перекомпоновав символическую ссылку, хотя это может сбить с толку вашего менеджера пакетов. Просто чтобы увидеть, является ли это реальной проблемой, удалите символьную ссылку /usr/bin/pinentry или переместите ее в pinentry-curses, чтобы увидеть, меняется ли поведение.

Самое смешное, что я не помню, чтобы git использовал программу pinentry, но gnupg знает. Может быть, у вас есть какие-то настройки, включающие gpg-agent, ключи SSH и GnuPG, запрашивающие фразу-пароль через pinentry?

Если у вас нет привилегий для прямого взаимодействия с символической ссылкой, вы можете попробовать отредактировать конфигурацию gpg-agent:

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

Это должно дать команду gpg-agent вместо этого использовать программу pinentry-curses на основе cli. Это длинный выстрел, но стоит попробовать.

Другие вопросы по тегам