Behoben: sudo: no tty vorhanden und kein askpass Programm angegeben
Die no tty present und keine askpass-Programm angegebene Ausgabezeile ist eine dieser ssh-Fehlermeldungen, die wirklich nicht so hilfreich ist, weil es nicht wirklich zu dem Punkt kommt, was das Problem verursacht. Mehr als wahrscheinlich, arbeiten Sie tatsächlich mit einem gültigen TTY irgendeiner Art, wenn Sie die Nachricht sehen, und Sie haben vermutlich mit dem Eingeben Ihres sudo Kennwortes über ssh gerade gut umgegangen. Sie sind mehr als wahrscheinlich mit einem Syntaxfehler zu tun, aber die Nachricht adressiert diese Tatsache nicht direkt.
Da dies ein Problem ist, das mit ssh selbst zusammenhängt, ist es wahrscheinlich, dass Sie das Problem unter Linux, FreeBSD, macOS und Cygwins Unix-Diensten unter Microsoft Windows reproduzieren können. Zum Glück sollte das Update auf allen diesen Plattformen ziemlich identisch sein.
Methode 1: Suchen eines Terminals für ssh
Während du wahrscheinlich schon von einem Terminal aus arbeitest, merkt ssh das wahrscheinlich nicht. Möglicherweise versucht es immer noch nach einem TTY-Terminalemulator zu suchen, obwohl Sie sich in einem Eingabeaufforderungsfenster befinden. Versuchen Sie, den Fehler zu reproduzieren, um dies zu testen. Wir haben eine virtuelle Maschine als Beispiel konfiguriert und ssh [email protected] 'sudo /var/mail/startup.sh' als Test ausgeführt. Natürlich sollten Sie den Befehl und die ssh-Zeile in etwas ändern, das dem entspricht, was Sie tun möchten.
Sie sollten sicherstellen, dass Sie sich bei dem Server anmelden, von dem Sie dachten, dass er dies ist. Unabhängig davon, überprüfen Sie, ob Sie immer noch die sudo: no tty present und keine askpass-Programm angegebene Fehlermeldung erhalten. Mehr als wahrscheinlich, wenn Sie es immer noch erhalten, dann werden Sie es dreimal sehen und möglicherweise sogar aufgefordert, Ihr Passwort so einzugeben, wie Sie es hätten, wenn Sie sudo lokal auf Debian oder Ubuntu ausführen.
Versuchen Sie, -t nach ssh zu addieren, um den Syntaxfehler zu korrigieren. In neun von zehn Fällen wird dies ssh dazu zwingen, sich selbst ein virtuelles TTY zuzuweisen und so zu tun, als würde es in einem echten Terminal laufen. Sie müssen nichts anderes an Ihrem Befehl ändern. Fügen Sie einfach die Option -t nach den Buchstaben ssh hinzu und behalten Sie den Host und den übergebenen Befehl gleich bei. Sie sollten dies auch im Hinterkopf behalten, wenn Sie ssh im letzten Teil Ihres Befehls ausführen müssen.
PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klickenWenn Sie beispielsweise die gleiche Art von Fehler erhalten, wenn Sie einen Befehl ausführen, der als ssh -t [email protected] 'ssh [email protected]' formatiert ist , müssten Sie die Option -t nach dem ersten ssh beibehalten verhindere es. Beachten Sie, dass Sie, wenn Sie später den zweiten Befehl ändern, um entweder Daten zu erzeugen oder zu konsumieren, gar nicht -t verwenden möchten. Wenn Sie zum Beispiel cat statt eines Skripts gestartet haben, könnten Sie den Befehl -t ausgeben, da Sie dafür kein Terminal zuordnen müssen.
Methode 2: Patchen der Visudo-Datei
Möglicherweise haben Sie auch ein Konfigurationsproblem, das diesen Fehler verursacht. Ändern Sie die visudo-Datei, indem Sie den Befehl sudo visudo ausführen, und beachten Sie, dass Sie diese Datei auf keinen Fall anders bearbeiten möchten. Sie sollten eine Zeile finden, die ALL = NOPASSWD enthält, gefolgt von den Typen von Befehlen, die Sie nicht benötigen, um das Administrator-Passwort zur Ausführung einzugeben.
Jeder einzelne Befehl muss mit einem Komma enden, außer dem letzten in der Zeile. Wenn Sie also etwas haben, das wie / sbin / poweroff / sbin / start / sbin / stop gelesen wird, behandelt es alle als einen einzigen Befehl und wirft den Fehler auf Sie. Wenn Sie einen Befehl verpassen, den Sie über ssh ausführen möchten, erhalten Sie diesen Fehler ebenfalls. Nehmen Sie die notwendigen Anpassungen vor und speichern Sie die Datei, bevor Sie überprüfen, ob der Fehler noch reproduzierbar ist.
Sollten Sie den Fehler auch nach diesem Vorgang noch immer haben und den Dienst neu starten, versuchen Sie den folgenden Befehl im Bild unten und stellen Sie sicher, dass die PermitTTY-Zeile das Wort "Ja" enthält. Wenn dies die letzte Zeile in Ihrer Datei ist, stellen Sie sicher, dass danach ein leerer Zeilenumbruch vorhanden ist. GNU nano führt diese Aufgabe standardmäßig automatisch aus.
Sie müssen alle relevanten Dienste neu starten, bevor Sie versuchen, die Fehlermeldung erneut zu reproduzieren.
PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klicken