Podczas próby uruchomienia zdalnego pliku binarnego przy użyciu sudo
na zdalnym urządzeniu:
ssh remotehost "sudo ./binary"
Widzę ten błąd:
sudo: brak tty i nie określono programu askpass
Jak mogę to obejść?
EDYCJA to zdecydowanie nie jest duplikatem sugerowanego pytania jako takiego. Tamte odpowiedzi są całkowicie nieistotne. W rzeczywistości te zmiany w pliku sudoers zostały już zastosowane do zdalnego hosta.
ssh
remote-access
Drew Noakes
źródło
źródło
Odpowiedzi:
Prostym sposobem jest określenie
-t
:Ze strony podręcznika:
Nie potrafię dokładnie wyjaśnić, dlaczego to działa, i może być lepszy sposób. Chciałbym o tym usłyszeć, jeśli tak :)@psusi wyjaśnia, dlaczego to działa w komentarzu poniżej.
źródło
sudo
wymaga tty, aby poprosić o hasło, a podczas określania poleceń do uruchomieniassh
, domyślnie nie przydziela jednego, ponieważ jest to zwykle używane do uruchamiania nieinteraktywnych poleceń, które mogą przesyłać dane binarne, które mogą wyzwolić tty .-tt
wymagany przy przekazywaniu polecenia za pomocą heredocPytanie:
Jak mogę to obejść?
Alternatywna odpowiedź
Alternatywnie spróbuj:
sudo -S ./binary
Poleca to sudo odczytanie hasła ze standardowego wejścia, stdin.
Scenariusze, w których to pomaga
W środowisku chroot te inne odpowiedzi mogą nie działać poprawnie ... być może dlatego, że:
Na przykład: Ręczna instalacja / naprawa systemu Linux lub bootloadera przy użyciu środowiska chroot (takiego jak Archlinux i arch-chroot).
źródło
Musisz zdefiniować terminal / aplikację, która będzie czytać hasło. Istnieją dwa warianty:
export SUDO_ASKPASS=/usr/libexec/openssh/ssh-askpass
vim /etc/sudoers
(Domyślne visiblepw)źródło
visudo
zamiast tegovim /etc/sudoers
, aby uniknąć potencjalnego zablokowania się na komputerze z powodu błędu w edycji?Nie udaje się, ponieważ
sudo
próbuje wyświetlić monit o hasło roota i nie ma przydzielonego pseudo-tty.Musisz zalogować się jako root lub skonfigurować następujące reguły w swoim
/etc/sudoers
(lubsudo visudo
:):Następnie upewnij się, że użytkownik należy do
admin
grupy (lubwheel
).źródło
Możesz również utworzyć plik taki jak „sudo_shutdown” w /etc/sudoers.d, z zawartością:
Dzięki temu użytkownicy należący do grupy adm mogą zostać wyłączeni bez hasła.
źródło
W moim przypadku wystąpił ten błąd, ponieważ nie określiłem polecenia, którego chciałbym użyć jako użytkownika root w sudoers
Coś jak
/etc/sudoers.d/myuser
:pracował dla mnie
źródło