Я выполняю следующую команду над ssh в среде тестирования от имени root:
ssh <remote_srv> "apt-get autoremove"
В моем sshd_config у меня есть «PermitRootLogin без пароля», и я добавил id_rsa.pub пользователя root в файл author_keys на удаленном сервере.
Тем не менее я получаю следующие ошибки:
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
Я просмотрел это на страницах s man, но не мог сосредоточиться на объяснении псевдо-терминов и тт.
Есть ли кто-нибудь, кто может объяснить вышеуказанные ошибки? Я думаю, что это пропущенный вариант, но какой?
Обе платформы являются Ubuntu 14.04 LTS.
Решение Алекса действительно подавляет ошибки, и он почти правильно понял причину, но не позволяет вам отвечать на любые вопросы (что хорошо, когда вы уже набрали ответы и запускаете из сценария, но очень раздражает, когда вы пробуете новые пакеты). ). Основной проблемой является взаимодействие между предположениями, сделанными различными внешними интерфейсами ssh и debconf.
Давайте начнем с SSH. ssh предполагает, что когда вы не указываете удаленную команду, вы хотите указать pty на удаленном конце, а вы указываете удаленный, который вы не делаете (это работает замечательно хорошо в 90% случаев, но только не в этом). Это может быть отменено
-t
опцией, которая вызывает pty, или-T
опцией, которая не вызывает pty (или соответствующими параметрами файла конфигурации). Кроме того, при использовании ptyTERM
переменная окружения копируется (исключения могут касаться проверочной документации для полных данных и официальной формы ввода лотереи). Также следует отметить, что-x
опция отключает пересылку X11 и-X
включает ее.Debconf сам по себе не имеет требований к интерактивности (по замыслу), но существуют различные интерфейсы, и у каждого свои требования.
Я считаю, что лучше всего выглядит интерфейс gnome (есть также интерфейс ked, с которым я не работал). Для внешнего интерфейса gnome (а также для kde) требуются библиотеки не по умолчанию и сервер X11, поэтому командная строка для принудительного запуска внешнего интерфейса gnome (после установки соответствующих библиотек) будет
или если вы предпочитаете KDE
Интерфейс диалога (по умолчанию) требует наличия pty и терминала с минимальным уровнем функциональности, указанным в переменной TERM (на практике это все с полным описанием terminfo, кроме тупого).
или же
Интерфейс readline имеет менее строгие требования и будет работать с тупыми терминалами, но для него потребуется pty.
Интерфейс редактора зависит от редактора, который будет иметь определенные требования в зависимости от редактора.
У неинтерактивного интерфейса нет требований, но он не задает никаких вопросов (которые могут быть или не быть тем, что вы хотите).
источник
ssh -t
для получения более подробной информации и других опций смотрите справочную страницу ssh. Также перечитайте второй абзац этого ответа.