Вопрос или проблема
Я не знаю, что вызывает это, но это немного раздражает.
Я ssh
на свою машину (Ubuntu 21.10) и вызываю сессию tilix
на клиентской машине. Я пытаюсь запустить приложение (изнутри tilix
удаленно), которое должно запрашивать пароль. Машина работает с графическим интерфейсом (kded5
), но это не должно иметь значения. Я уже подключен к машине по ssh. Это приложение запрашивает пароль в графическом интерфейсе вместо терминала.
Я пробовал удалить DISPLAY
. Я пробовал установить SSH_ASKPASS_REQUIRE=never
(использовал их отдельно и вместе). Я пробовал различные другие вещи, но безуспешно. Поскольку я использую kded5
, системная alternatives
установлена на /usr/bin/kshaskpass
. Я не пробовал установить это на что-то другое:
at 14:25:06 ❯ update-alternatives --display ssh-askpass
ssh-askpass - авто режим
ссылка лучшая версия - /usr/bin/ksshaskpass
ссылка в настоящее время указывает на /usr/bin/ksshaskpass
ссылка ssh-askpass - /usr/bin/ssh-askpass
слейв ssh-askpass.1.gz - /usr/share/man/man1/ssh-askpass.1.gz
/usr/bin/ksshaskpass - приоритет 35
слейв ssh-askpass.1.gz: /usr/share/man/man1/ksshaskpass.1.gz
/usr/lib/ssh/x11-ssh-askpass - приоритет 10
слейв ssh-askpass.1.gz: /usr/share/man/man1/x11-ssh-askpass.1x.gz
Чтобы прояснить, что я хочу, это просто… если я в терминале машины, используйте терминал для запроса паролей. Если я в графическом интерфейсе, используйте графический интерфейс или хотя бы укажите, как временно использовать запрос терминала, если это будет желаемо.
Заранее спасибо!
Ну, это не идеально, но мне пришлось довольствоваться подсказками здесь…
Проблема в основном заключалась в том, что я подписывал код для github, и когда я пытался сделать коммит, в моем графическом интерфейсе создавалось диалоговое окно, но я не мог или не видел его на своем Xserver. Оно появлялось вне экрана. Так что мне нужно было заставить ввод пароля в консоли. Наконец, я нашел эту подсказку о том, что gpg-agent
был виновником запроса пароля. Поэтому я изменил свой $HOME/.gnupg/gpg-agent.conf
, который мне пришлось создать, так как он еще не существовал. В ссылке есть опция использовать pinentry-curses
, который я уже установил. Наконец, введение команды gpg-connect-agent reloadagent /bye
и повторная запись моего кода подтвердило, что моя проблема была исправлена. Я надеюсь, это поможет кому-то еще. Это не идеально, но это дает мне то, что я хотел.
Ответ или решение
Когда вы сталкиваетесь с проблемой ввода пароля в графическом интерфейсе вместо терминала, особенно при использовании SSH в системе Ubuntu 21.10 и оболочке Tilix, скорее всего, это связано с поведением программы, которая отвечает за ввод паролей. Подобное поведение может вызывать фрустрацию, особенно когда вы ожидаете, что пароль будет запрашиваться непосредственно в терминале.
Проблема
В вашем случае приложение, запускаемое через SSH в Tilix, инициирует графический запрос пароля. Это связано с использованием gpg-agent
, который по умолчанию может запускать графический интерфейс для ввода паролей, если это возможно. Однако, когда вы работаете через SSH, такая функциональность может оказаться неудобной, особенно если всплывающее окно о вводе пароля оказывается "вне поля зрения" или за пределами экрана, что, как вы упомянули, и могло быть одной из причин вашей проблемы.
Решение
Чтобы исправить эту ситуацию и заставить систему запрашивать пароль в терминале, вы можете внести изменения в файл конфигурации gpg-agent
. Вот что вам необходимо сделать:
-
Создайте конфигурационный файл gpg-agent:
Если у вас еще нет файла конфигурацииgpg-agent
, вы можете создать его в вашем домашнем каталоге в папке.gnupg
. Откройте терминал и выполните:mkdir -p ~/.gnupg touch ~/.gnupg/gpg-agent.conf
-
Настройте
gpg-agent.conf
:
Откройте файл~/.gnupg/gpg-agent.conf
в текстовом редакторе и добавьте следующую строку:pinentry-program /usr/bin/pinentry-curses
Эта строка указывает
gpg-agent
использовать текстовый ввод для ввода пароля вместо графического интерфейса. -
Сохраните изменения и загрузите конфигурацию:
После внесения изменений в файл, вам нужно перезагрузить агента, чтобы изменения вступили в силу. Для этого выполните команду:gpg-connect-agent reloadagent /bye
-
Подтверждение изменений:
Попробуйте снова запустить ваше приложение через SSH в Tilix и убедитесь, что теперь пароль запрашивается в терминале вместо вывода графического окна.
Дополнительные советы
-
Если вы работаете с другими программами, которые могут вызывать графические запросы для ввода паролей, рассмотрите возможность установки
SSH_ASKPASS_REQUIRE=never
перед выполнением команд, которые требуют ввода пароля:export SSH_ASKPASS_REQUIRE=never
-
Убедитесь, что переменная
DISPLAY
не устанавливается в значение, указывающее на графическую сессию, когда вы работаете из терминала:unset DISPLAY
Следуя указанным выше шагам, вы сможете настроить свою систему таким образом, чтобы при необходимости все запросы на ввод пароля обрабатывались через терминал, что делает рабочий процесс более удобным и управляемым, особенно в ситуациях удаленного доступа через SSH.