Wenn Sie versuchen, eine Remote-Binärdatei mit sudo
der Remote-Box auszuführen :
ssh remotehost "sudo ./binary"
Ich sehe diesen Fehler:
sudo: keine tty vorhanden und kein askpass programm angegeben
Wie kann ich das umgehen?
BEARBEITEN Dies ist definitiv kein Duplikat der als solche vorgeschlagenen Frage. Die Antworten dort sind völlig irrelevant. Tatsächlich wurden diese Änderungen an der sudoers-Datei bereits auf den Remote-Host angewendet.
ssh
remote-access
Drew Noakes
quelle
quelle
Antworten:
Eine einfache Möglichkeit besteht darin, Folgendes anzugeben
-t
:Von der Manpage:
Ich kann nicht genau erklären, warum dies funktioniert, und es könnte einen besseren Weg geben. Ich würde gerne davon hören, wenn ja :)@psusi erklärt in einem Kommentar unten, warum dies funktioniert.
quelle
sudo
ein tty zur Eingabe eines Kennworts aufgefordert wird. Wenn Befehle zum Ausführen angegeben werdenssh
, wird standardmäßig kein Kennwort zugewiesen, da dies normalerweise zum Ausführen nicht interaktiver Befehle verwendet wird, die möglicherweise Binärdaten übertragen und das tty auslösen können .-tt
erforderlich, wenn das Kommando mit heredoc übergeben wirdFrage:
Wie kann ich das umgehen?
Alternative Antwort
Versuchen Sie alternativ Folgendes:
sudo -S ./binary
Dadurch wird sudo angewiesen, das Kennwort von der Standardeingabe stdin zu lesen.
Szenarien, in denen dies hilft
In Chroot-Umgebungen funktionieren diese anderen Antworten möglicherweise nicht richtig. Vielleicht, weil:
Beispiel: Manuelles Installieren / Reparieren von Linux oder des Bootloaders unter Verwendung einer Chroot-Umgebung (z. B. Archlinux und Arch-Chroot).
quelle
Sie müssen ein Terminal / eine Anwendung definieren, das / die das Passwort liest. Es gibt zwei Varianten:
export SUDO_ASKPASS=/usr/libexec/openssh/ssh-askpass
vim /etc/sudoers
(Standardeinstellung visiblepw)quelle
visudo
statt zu verwenden,vim /etc/sudoers
um zu vermeiden, dass Sie sich möglicherweise aufgrund eines Fehlers in Ihrer Bearbeitung aus Ihrem Computer ausschließen?Es schlägt fehl, weil
sudo
versucht wird, das root-Passwort einzugeben, und keine Pseudotty zugewiesen wurde.Sie müssen sich entweder als root anmelden oder die folgenden Regeln in Ihrem
/etc/sudoers
(oder :) einrichtensudo visudo
:Stellen Sie dann sicher, dass Ihr Benutzer zur
admin
Gruppe (oderwheel
) gehört.quelle
Sie können auch eine Datei wie "sudo_shutdown" in /etc/sudoers.d mit folgendem Inhalt erstellen:
Auf diese Weise können Benutzer in der Gruppe adm ohne Kennwort heruntergefahren werden.
quelle
In meinem Fall habe ich diesen Fehler erhalten, weil ich keinen Befehl angegeben habe, den ich als root in den sudoers verwenden möchte
So etwas wie
/etc/sudoers.d/myuser
:arbeitete für mich
quelle