Почему попытка удалённо выполнить команду sudo с помощью ssh оканчивается ошибкой?

Система: Red Hat Enterprise Linux 5

Проблема:

Попытка удалённого вызова команды sudo с помощью ssh заканчивается ошибкой.

Например:

$ ssh hostname sudo <command>
$ sudo: sorry, you must have a tty to run sudo

Решение:

Файл /etc/sudoers в Red Hat Enterprise Linux 5 по-умолчанию содержит флаг 'requiretty'. Когда этот флаг установлен, только зарегистрированные в системе пользователи могут выполнять команды с помощью sudo. Именно это и не позволяет выполнять удалённо команду sudo через rsh или ssh. Программы rsh и ssh не выделяют устройство псевдотерминала. Рекомендуется не убирать этот флаг, поскольку без псеводтерминала невозможно отключить эхо вводимых символов и, как следствие, отображение вводимого пароля.

Для принудительного выделения псевдотерминального устройства, укажите команде ssh параметр -t :

# ssh -t hostname sudo <cmd>

Как вариант, можно также отредактировать файл /etc/sudoers с помощью visudo и отключить флаг requiretty, закомментировав строку "Defaults: requiretty". Примечание: делать это не рекомендуется.

За подробной информацией обращайтесь к Red Hat Enterprise Linux Deployment Guide.