Behoben: sudo: kein tty vorhanden und kein askpass Programm angegeben

Die vom Programm no tty present und no askpass programmierte Ausgabezeile ist eine dieser SSH-Fehlermeldungen, die wirklich nicht allzu hilfreich ist, da sie nicht wirklich den Punkt erreicht, an dem das Problem verursacht wird. Höchstwahrscheinlich arbeiten Sie tatsächlich mit einer gültigen TTY, wenn Sie die Nachricht sehen, und Sie haben sich wahrscheinlich damit befasst, Ihr sudo-Passwort über ssh einzugeben. Es ist mehr als wahrscheinlich, dass Sie mit einem Syntaxfehler zu tun haben, aber die Nachricht geht nicht direkt auf diese Tatsache ein.

Da dies ein Problem im Zusammenhang mit ssh selbst ist, können Sie das Problem höchstwahrscheinlich unter Linux, FreeBSD, macOS und den Unix-Diensten von Cygwin unter Microsoft Windows reproduzieren. Glücklicherweise sollte das Update auf allen diesen Plattformen ziemlich gleich sein.

Methode 1: Finden eines Terminals für ssh

Während Sie höchstwahrscheinlich bereits von einem Terminal aus arbeiten, merkt ssh dies wahrscheinlich nicht. Möglicherweise wird immer noch versucht, 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 user@linuxtest.example ‘sudo /var/mail/startup.sh’ als Test ausgeführt. Natürlich möchten Sie den Befehl und die SSH-Zeile in etwas ändern, das Ihren Vorstellungen entspricht.

Sie sollten sicherstellen, dass Sie sich bei dem Server anmelden, von dem Sie dachten, dass Sie es sind. Überprüfen Sie unabhängig davon, ob Sie immer noch das Sudo erhalten: Keine tty vorhanden und keine vom Askpass-Programm angegebene Fehlermeldung. Wenn Sie es immer noch erhalten, wird es höchstwahrscheinlich dreimal angezeigt und möglicherweise sogar aufgefordert, Ihr Kennwort so einzugeben, wie Sie es hätten, wenn Sie sudo lokal unter Debian oder Ubuntu ausführen würden.

Versuchen Sie, -t nach ssh hinzuzufügen, um Ihren Syntaxfehler zu korrigieren. Neun von zehn Fällen zwingt dies ssh, sich selbst ein virtuelles TTY zuzuweisen und so zu tun, als würde es zufällig in einem realen Terminal ausgeführt. Sie müssen nichts anderes an Ihrem Befehl ändern. Fügen Sie einfach die Option -t nach den Buchstaben ssh hinzu und behalten Sie dann den Host und den übergebenen Befehl bei. Sie sollten dies auch berücksichtigen, wenn Sie im letzten Teil Ihres Befehls jemals ssh ausführen müssen.

Wenn Sie beispielsweise beim Ausführen eines Befehls, der als ssh -t user@linuxtest.example ‘ssh user@linuxtest2.example’ formatiert wurde, dieselbe Art von Fehler erhalten, müssen Sie die Option -t nach dem ersten ssh to beibehalten verhindere es. Beachten Sie, dass Sie -t überhaupt nicht verwenden möchten, wenn Sie später den zweiten Befehl so ändern, dass er Daten erzeugt oder verbraucht. Wenn Sie beispielsweise cat anstelle eines Skripts ausführen, können Sie das -t ausgeben, da Sie dafür kein Terminal zuweisen müssen.

Methode 2: Patchen der Visudo-Datei

Möglicherweise liegt auch ein Konfigurationsproblem vor, das diesen Fehler verursacht. Ändern Sie die Visudo-Datei, indem Sie den Befehl sudo visudo eingeben, und denken Sie daran, dass Sie diese Datei niemals auf andere Weise bearbeiten möchten. Sie sollten eine Zeile mit ALL = NOPASSWD finden, gefolgt von den Befehlstypen, für deren Ausführung Sie das Administratorkennwort nicht eingeben müssen.

Jeder einzelne Befehl muss mit einem Komma enden, mit Ausnahme des letzten in der Zeile. Wenn Sie also etwas hatten, das wie / sbin / poweroff / sbin / start / sbin / stop lautet, werden diese alle als ein einziger Befehl behandelt und der Fehler auf Sie geworfen. Wenn Sie einen Befehl vermissen, den Sie über ssh ausführen möchten, wird dieser Fehler ebenfalls angezeigt. Nehmen Sie die erforderlichen Anpassungen vor und speichern Sie die Datei, bevor Sie überprüfen, ob der Fehler noch reproduzierbar ist.

Sollte der Fehler auch nach dem Neustart des Dienstes weiterhin auftreten, versuchen Sie den folgenden Befehl in der Abbildung unten und stellen Sie sicher, dass in der Zeile PermitTTY das Wort yes steht. Wenn dies die letzte Zeile in Ihrer Datei ist, stellen Sie sicher, dass danach eine leere neue Zeile 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.

Similar Posts

Leave a Reply

Your email address will not be published.