При попытке запустить удаленный бинарный файл с помощью sudo
удаленного блока:
ssh remotehost "sudo ./binary"
Я вижу эту ошибку:
sudo: tty отсутствует и не задана программа askpass
Как я могу обойти это?
РЕДАКТИРОВАТЬ это, безусловно, не дублирует вопрос, предложенный как таковой. Ответы там совершенно неактуальны. Фактически, эти изменения в файле sudoers уже были применены к удаленному хосту.
ssh
remote-access
Дрю Ноакс
источник
источник
Ответы:
Простой способ - указать
-t
:Со страницы руководства:
Я не могу точно объяснить, почему это работает, и может быть, есть лучший способ. Я хотел бы услышать об этом, если так :)@psusi объясняет, почему это работает, в комментариях ниже.
источник
sudo
требует, чтобы tty запросил пароль, и при указании команд для запускаssh
не выделяет его по умолчанию, так как это обычно используется для запуска неинтерактивных команд, которые могут передавать двоичные данные, что может отключить tty ,-tt
требуется при передаче команды с помощью heredocВопрос:
Как я могу обойти это?
Альтернативный ответ
В качестве альтернативы попробуйте:
sudo -S ./binary
Это заставляет sudo читать пароль из стандартного ввода, stdin.
Сценарии, где это помогает
В средах chroot эти другие ответы могут работать некорректно ... возможно, потому что:
Например: установка / восстановление linux или загрузчика вручную с использованием среды chroot (например, Archlinux и arch-chroot).
источник
Вам необходимо определить терминал / приложение, которое будет читать пароль. Есть два варианта:
export SUDO_ASKPASS=/usr/libexec/openssh/ssh-askpass
vim /etc/sudoers
(По умолчанию visiblepw)источник
visudo
вместоvim /etc/sudoers
того, чтобы избежать потенциальной блокировки себя из-за ошибки при редактировании?Не удается, потому что
sudo
пытается запросить пароль root и псевдо-tty не выделено.Вы должны войти в систему как пользователь root или настроить следующие правила в вашем
/etc/sudoers
(или:)sudo visudo
:Затем убедитесь, что ваш пользователь принадлежит к
admin
группе (илиwheel
).источник
Вы также можете создать файл типа "sudo_shutdown" в /etc/sudoers.d с содержимым:
Это позволяет пользователям из группы adm отключаться без пароля.
источник
В моем случае я получил эту ошибку, потому что я не указал команду, которую я хотел бы использовать в качестве пользователя root в sudoers
Что-то вроде
/etc/sudoers.d/myuser
:работал на меня
источник