Ошибка sudo «a terminal is required to read the password»: пароль ввести некуда
sudo нужен пароль, а ввести его некуда: команда запущена без окна терминала. Запустите её через ssh -t, перенесите в расписание root или разрешите одну команду без пароля.
Содержание 9
Что сделать прямо сейчас
- Если вы запускаете команду с компьютера через
ssh сервер 'команда'— добавьте ключ-t, способ 1. - Если команда стоит в расписании cron — перенесите её в расписание root, способ 2.
- Если команду запускает скрипт или программа — разрешите ровно эту команду без пароля, способ 3.
Что значит это сообщение
sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper
sudo: a password is requiredsudo спрашивает пароль в окне терминала. Если команда запущена без такого окна — из скрипта, из расписания cron, через ssh сервер 'sudo …' или из программы для автоматической выкладки, — спросить пароль негде, и sudo отменяет команду.
Подсказка в сообщении предлагает ключ -S — читать пароль из входного потока. Для этого пароль пришлось бы хранить в скрипте открытым текстом, поэтому этот путь мы не советуем.
Способ 1. Запустите команду через ssh -t
Если вы запускаете одну команду с компьютера, не входя на сервер, добавьте ключ -t — он открывает окно терминала на сервере для этой команды:
ssh -t ivan@ВАШ_IP 'sudo systemctl restart nginx'sudo спросит пароль, вы введёте его, и команда выполнится. Вместо ivan — имя вашего пользователя, вместо ВАШ_IP — адрес сервера.
Способ 2. Задания по расписанию — в расписание root
У root своё расписание задач, и команды в нём выполняются с правами администратора — sudo там не нужен. Откройте его:
sudo crontab -eПеренесите строку из своего расписания сюда и уберите из неё слово sudo. Из своего расписания (crontab -e без sudo) эту строку удалите.
Способ 3. Разрешите одну команду без пароля
Если команду запускает скрипт или программа, можно разрешить вашему пользователю запускать без пароля ровно одну команду. Сначала узнайте полный путь к программе:
command -v systemctlКоманда выведет путь, например /usr/bin/systemctl. Создайте отдельный файл правил:
sudo visudo -f /etc/sudoers.d/ivan-nginxОткроется текстовый редактор. Если это nano — как сохранить файл, написано в разделе про nano. Впишите одну строку:
ivan ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginxЗдесь ivan — ваш пользователь, дальше — полный путь к программе и её параметры точно так же, как они будут в скрипте. Сохраните файл и выйдите: visudo проверит правило и предупредит, если в нём ошибка.
Имя файла пишите без точки и без знака ~: такие файлы в папке /etc/sudoers.d sudo пропускает. Проверьте все правила разом:
sudo visudo -cNOPASSWD: ALL) — тогда любой, кто получит доступ к вашему пользователю, станет администратором сервера.Как проверить
Для способа 3 выполните команду с ключом -n — он запрещает sudo спрашивать пароль:
sudo -n systemctl restart nginxЕсли команда выполнилась без ошибок — правило работает. Если ответ sudo: a password is required — строка в файле не совпадает с командой: сверьте путь и параметры.
Похожие ошибки
| Сообщение | Чем отличается |
|---|---|
| sudo: a password is required | Одна эта строка — ответ на sudo -n: пароль нужен, а спрашивать его запрещено |
| Sorry, try again | Пароль введён, но не подошёл |
| … is not in the sudoers file | Нет права на sudo |
Тексты сообщений на этой странице сверены с исходным кодом sudo 1.9.15p5 — эта версия стоит в Ubuntu 24.04. В других версиях слова могут немного отличаться.
Источники
- Исходный код sudo 1.9.15p5: tgetpass.c — текст a terminal is required to read the password.
- Исходный код sudo 1.9.15p5: logging.c — текст a password is required.
- man sudo — ключи -n и -S.
- man sudoers — правило NOPASSWD и папка /etc/sudoers.d.
- man visudo — ключи -f и -c.
- man crontab — расписание задач.
- man ssh — ключ -t.
Сверено 9 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 09.10.2026