sudo over ssh: tty отсутствует и не задана программа askpass

15

Я продолжаю получать эту ошибку и пробовал несколько способов, обсуждаемых в Интернете, чтобы исправить это, и ни один из них не работает для меня. У меня настроены ключи SSH, поэтому, когда я запускаю 'ssh newton@host.com'его, он автоматически входит в систему, я также настраиваю этого пользователя, visudoчтобы 'newton ALL=(ALL:ALL) ALL' затем я также пытался добавить'newton ALL=NOPASSWD: /var/www/script.sh'

К сожалению, каждый раз, когда я бегу ssh newton@host.com 'sudo /var/www/script.sh'из Cygwin, я возвращаюсь. Я также попытался добавить, -t -tно затем он запрашивает пароль.

total size is 21209180  speedup is 314.69
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
Джефф Шаллер
источник
Это не относится к Cygwin; Я вижу ту же проблему при использовании ssh example.com sudo echo helloиз одной системы Linux в другую. Я обновил ваш заголовок соответственно. Я также пометил ваш вопрос для перехода на сайт Unix.
Кит Томпсон

Ответы:

10

Вы должны иметь доступный терминал, sudoчтобы он мог запрашивать пароль. Если вы передаете команду ssh, это предполагает, что команде не нужен терминал и он не создается, если вы не пропустите -t. Посмотрите SSH внутри SSH терпит неудачу с "stdin: не является tty" для более подробного объяснения.

Если вы не можете ввести пароль даже с помощью -t, возможно, ваша проблема связана с Windows. Консоль Windows не полностью эмулирует Unix-терминал; В таких случаях приложениям Cygwin может быть сложно правильно эмулировать терминал (я не уверен в этом, заметьте). Если это проблема, запустите sshвнутри эмулятора терминала, такого как Console2 или Mintty (входит в дистрибутив Cygwin) - см. Лучший способ использования оболочки с Cygwin в Windows 7 .

Если вы ожидали, что пароль SSH заменит ваш пароль для аутентификации на sudo, этого не произойдет. Sudo требует пароль (если вы не добавите NOPASSWDтег в файл sudoers). Обратите внимание, что вам все еще нужно иметь терминал, даже NOPASSWDесли, если в requirettyфайле sudoers установлена ​​опция.

Если вы хотите без пароля войти в систему под учетной записью root (что, как правило, не очень хорошая идея с точки зрения безопасности), используйте SSH для доступа к учетной записи root, желательно в два прыжка. Посмотрите SSH внутри SSH завершается неудачно с "stdin: is not tty"root@host.comfor otheruser@computertwo.com).

Жиль "ТАК - прекрати быть злым"
источник
3

Давайте захотим включить пароль без пароля для команды / двоичного узла nodejs.

Изменить Visudo

sudo visudo

С помощью следующей строки, чтобы включить пароль для команды. Pass - это несколько команд с запятыми и пробелом после каждой команды.

<user name> ALL = NOPASSWD: /usr/local/bin/node

ех. sunthara ALL = NOPASSWD: /usr/local/bin/node

введите описание изображения здесь

Гаджен Сунтхара
источник
1

Отредактируйте файл конфигурации ssh-сервера и добавьте внизу:

root# vim /etc/ssh/sshd_config

Match User newton
    PermitTTY yes
ILMostro_7
источник
Не работает: service sshd restart=>/etc/ssh/sshd_config: line 91: Bad configuration option: User
килтек
Может быть необходимо изменить наMatch User newton
ILMostro_7
1
Нет, это означает, что вы не можете записать Userв свой файл sshd, потому что такой опции конфигурации не существует. (по крайней мере, так на моей системе Ubuntu 16.04)
kiltek
Из man-страниц: «MatchIntints создает условный блок. Если все критерии в строке Match удовлетворены, ключевые слова в следующих строках переопределяют те, которые установлены в глобальном разделе файла конфигурации, до другой строки Match или до конца файла. Аргументы для соответствия - это одна или несколько пар критериев-шаблонов. Доступны следующие критерии: пользователь, группа, хост и адрес. Шаблоны соответствия могут состоять из отдельных записей или списков, разделенных запятыми, и могут использовать подстановочный знак и отрицание. операторы, описанные в разделе PATTERNS в ssh_config (5). "
ILMostro_7
Я не вижу Matchблока в вашем ответе ...
kiltek
0

Я столкнулся с этой ошибкой, когда допустил ошибку в / etc / sudoers. Вместо указания нескольких команд, таких как это:

NOPASSWD= /bin/x, /bin/y

Я сохранил как:

NOPASSWD= /bin/x /bin/y

т.е. без запятой. Теперь я получаю сообщение об отсутствии tty при попытке

ssh host 'sudo x'
ottodidakt
источник
0

Не знаю, связано ли это, но когда в файле sudoers было '... NOPASSWD: /xyz/script.shl', я получал это сообщение об ошибке, пока не добавил #!/bin/shellnameстроку в начало /xyz/script.shlфайла.

LeeH
источник
0

мне помогло комментирование следующих параметров в файле / etc / sudoers.

# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
#         You have to run "ssh -t hostname sudo <cmd>".
#
Defaults    requiretty

#
# Refuse to run if unable to disable echo on the tty. This setting should also be
# changed in order to be able to use sudo without a tty. See requiretty above.
#
Defaults   !visiblepw

---> закомментируйте параметры следующим образом

#Defaults    requiretty
#Defaults   !visiblepw
Сантош Гароле
источник