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. Это длинный выстрел, но стоит попробовать.