Frage sudo: no tty present und kein askpass-Programm angegeben


Beim Versuch, eine Remote-Binärdatei mit zu verwenden sudo auf der Remote-Box:

ssh remotehost "sudo ./binary"

Ich sehe diesen Fehler:

sudo: no tty present 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. Diese Änderungen an der sudoers-Datei wurden bereits auf den Remote-Host angewendet.


57
2018-04-15 14:32


Ursprung


mögliches Duplikat von Wie führe ich den sudo-Befehl ohne Passwort aus? - kenorb


Antworten:


Ein einfacher Weg ist es anzugeben -t:

ssh -t remotehost "sudo ./binary"

Von der man-Seite:

Pseudo-tty-Zuweisung erzwingen. Dies kann verwendet werden, um beliebige bildschirmbasierte Programme auf einer entfernten Maschine auszuführen, was sehr nützlich sein kann, z. wenn Sie Menüdienste implementieren. Mehrere Optionen -t erzwingen eine Zuweisung, selbst wenn ssh kein lokales Terminal hat.

Ich kann nicht genau erklären, warum das funktioniert, und vielleicht gibt es einen besseren Weg. Ich würde gerne darüber hören, wenn es so ist :)

@psusi erklärt, warum das in einem Kommentar unten funktioniert.


64
2018-04-15 14:32



Es funktioniert, weil sudo benötigt ein tty, um nach einem Passwort zu fragen und wenn man Befehle spezifiziert, zu denen man laufen soll sshEs wird standardmäßig keine zugewiesen, da dies normalerweise zum Ausführen nicht interaktiver Befehle verwendet wird, die Binärdaten übertragen können, die das TTY auslösen können. - psusi
@psusi, macht Sinn. Vielen Dank. - Drew Noakes
@psusi Kennen Sie die Antwort auf diese Frage? unix.stackexchange.com/questions/110841 - trusktr


Frage:

Wie kann ich das umgehen?

sudo: no tty present and no askpass program specified

Alternative Antwort

Als Alternative versuchen Sie:

sudo -S ./binary

Dies veranlasst sudo, das Passwort von der Standardeingabe, stdin, zu lesen.

Szenarien, in denen dies hilft

In Chroot-Umgebungen funktionieren diese anderen Antworten möglicherweise nicht richtig ... vielleicht weil:

  1. Der / etc / shadow vs / etc / passwd Konflikt erlaubt dem Benutzer kein Passwort einzugeben.
  2. In einer Chroot-Ed-Umgebung kann der Zugriff auf tty1 etwas störend sein, und ctrl-alt f2 - zu tty2 ist nicht durchführbar, da es sich um eine nicht-chroot-Umgebung handelt.

Beispielsweise: Manuelles Installieren / Reparieren von Linux oder Bootloader unter Verwendung einer Chroot-Umgebung (wie Archlinux und arch-chroot).


18
2018-01-22 18:45





Sie müssen Terminal / Anwendung definieren, die das Passwort liest. Es gibt zwei Varianten:

  1. export SUDO_ASKPASS=/usr/libexec/openssh/ssh-askpass
  2. vim /etc/sudoers  (Standardwerte sichtbarpw)

5
2018-05-16 15:51



Ist es nicht besser zu benutzen? visudo Anstatt von vim /etc/sudoers um zu vermeiden, dass Sie sich möglicherweise aus Ihrer Maschine aussperren, weil Sie bei der Bearbeitung einen Fehler gemacht haben? - Drew Noakes


Es scheitert, weil sudo versucht, ein root-Passwort einzugeben, und es wird kein Pseudo-tty zugewiesen.

Sie müssen sich entweder als root anmelden oder die folgenden Regeln in Ihrem System einrichten /etc/sudoers  (oder: sudo visudo):

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

Stellen Sie dann sicher, dass Ihr Benutzer gehört admin Gruppe (oder wheel).


3
2018-03-30 17:28



Dies ist zwar nicht wahr (es gibt keinen Beweis dafür, und Benutzer in der Admin-Gruppe mit diesem Code in Centos und Ubuntu-Systeme erhalten immer noch den Fehler), ist ein guter Tipp für Remoting zum Erstellen von Gruppen und Regeln basierend auf diesen Gruppen für eskalierte Aufgaben - MrMesees


Sie können auch eine Datei wie "sudo_shutdown" in /etc/sudoers.d mit Inhalt erstellen:

# Allow admins to shutdown without pass
%adm ALL=(ALL) NOPASSWD: /sbin/shutdown

Dies ermöglicht Benutzern, die in der Adm-Gruppe sind, ohne ein Passwort herunterzufahren.


2
2018-04-08 13:38



Hast du vorgehabt? bearbeiten dies um "no tty present" abzudecken - Elder Geek