sudo over ssh: keine tty vorhanden und kein askpass programm angegeben


15

Ich erhalte immer wieder diesen Fehler und habe verschiedene Möglichkeiten ausprobiert, die online diskutiert wurden, um diesen Fehler zu beheben. Ich habe Setup-SSH-Schlüssel, also wenn ich 'ssh newton@host.com'es automatisch starte, meldet ich mich an, ich habe diesen Benutzer auch so eingestellt visudo, dass 'newton ALL=(ALL:ALL) ALL' ich dann auch versucht habe, ihn hinzuzufügen'newton ALL=NOPASSWD: /var/www/script.sh'

Leider ssh newton@host.com 'sudo /var/www/script.sh'komme ich jedes Mal zurück, wenn ich von Cygwin weglaufe. Ich habe auch versucht, hinzuzufügen, -t -taber dann fordert es mich zur Eingabe des Passworts auf.

total size is 21209180  speedup is 314.69
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts

Dies ist nicht spezifisch für Cygwin. Ich sehe das gleiche Problem bei der Verwendung ssh example.com sudo echo hellovon einem Linux-System zu einem anderen. Ich habe Ihren Titel entsprechend aktualisiert. Ich habe Ihre Frage auch für die Migration auf die Unix-Site markiert.
Keith Thompson

Antworten:


10

Zum Ausführen muss ein Terminal verfügbar sein, sudodamit Sie zur Eingabe des Kennworts aufgefordert werden können. Wenn Sie einen Befehl übergeben, sshwird davon ausgegangen, dass der Befehl kein Terminal benötigt und kein Terminal erstellt, es sei denn, Sie übergeben ihn -t. Siehe SSH in SSH schlägt mit "stdin: is not a tty" fehl, um eine genauere Erklärung zu erhalten.

Wenn Sie das Kennwort auch mit nicht eingeben -tkönnen, liegt das Problem möglicherweise an Windows. Die Windows-Konsole emuliert ein Unix-Terminal nicht vollständig. Unter diesen Umständen kann es für Cygwin-Anwendungen schwierig sein, ein Terminal ordnungsgemäß zu emulieren (da bin ich mir nicht sicher, bitte beachten Sie). Wenn das ist das Problem, lief sshin einem Terminal - Emulator wie Console2 oder Mintty (in der Cygwin - Distribution enthalten) - siehe besten Weg , um eine Schale mit Cygwin unter Windows 7 zu verwenden .

Wenn Sie erwartet haben, dass die SSH-Passphrase Ihr Passwort für die Authentifizierung bei sudo ersetzt, wird dies nicht passieren. Für Sudo ist ein Kennwort erforderlich (es sei denn, Sie fügen das NOPASSWDTag in die sudoers-Datei ein). Beachten Sie, dass Sie immer noch ein Terminal benötigen, auch NOPASSWDwenn die requirettyOption in der sudoers-Datei festgelegt ist.

Wenn Sie sich passwortfrei bis zum Root-Konto anmelden möchten (was aus Sicherheitssicht im Allgemeinen keine gute Idee ist), verwenden Sie SSH, um das Root-Konto zu erreichen, vorzugsweise in zwei Schritten. Siehe SSH in SSH schlägt mit "stdin: is not a tty" (mit root@host.comfor otheruser@computertwo.com) fehl .


3

Lassen Sie uns für nodejs command / binary kein Passwort aktivieren.

Visudo ändern

sudo visudo

Mit folgender Zeile wird kein Passwort für einen Befehl freigeschaltet. Pass besteht aus mehreren Befehlen mit Kommas und Leerzeichen nach jedem Befehl.

<user name> ALL = NOPASSWD: /usr/local/bin/node

Ex. sunthara ALL = NOPASSWD: /usr/local/bin/node

Bildbeschreibung hier eingeben


1

Bearbeiten Sie die Konfigurationsdatei von ssh-server und fügen Sie sie unten an:

root# vim /etc/ssh/sshd_config

Match User newton
    PermitTTY yes

Funktioniert nicht: service sshd restart=>/etc/ssh/sshd_config: line 91: Bad configuration option: User
Kiltek

Match User newton
Muss

1
Nein, dies bedeutet, dass Sie nicht Userin Ihre sshd-Datei schreiben können, da diese Konfigurationsoption nicht vorhanden ist. (Zumindest ist das auf meinem System Ubuntu 16.04 der Fall)
kiltek

Von den Man-Pages: "Match Führt einen bedingten Block ein. Wenn alle Kriterien in der Match-Zeile erfüllt sind, überschreiben die Schlüsselwörter in den folgenden Zeilen die im globalen Abschnitt der Konfigurationsdatei festgelegten Schlüsselwörter, bis entweder eine andere Match-Zeile oder das Ende Die Argumente für "Match" sind ein oder mehrere Kriterien-Muster-Paare. Die verfügbaren Kriterien sind "User", "Group", "Host" und "Address". Die Übereinstimmungsmuster können aus einzelnen Einträgen oder durch Kommas getrennten Listen bestehen und Platzhalter und Negation verwenden Operatoren, die im Abschnitt PATTERNS von ssh_config (5) beschrieben sind. "
ILMostro_7

Ich sehe keinen MatchBlock in Ihrer Antwort ...
Kiltek

0

Ich bin auf diesen Fehler gestoßen, als ich in / etc / sudoers einen Fehler gemacht habe. Anstatt mehrere Befehle wie diesen anzugeben:

NOPASSWD= /bin/x, /bin/y

Ich habe gespeichert als:

NOPASSWD= /bin/x /bin/y

dh ohne Komma. Jetzt erhalte ich die Nachricht "no tty present", wenn ich es versuche

ssh host 'sudo x'

0

Ich weiß nicht, ob es verwandt ist, aber als ich "... NOPASSWD: /xyz/script.shl" in der sudoers-Datei hatte, bekam ich diese Fehlermeldung, bis ich die #!/bin/shellnameZeile oben in der /xyz/script.shlDatei einfügte .


0

Das Kommentieren der folgenden Parameter in der Datei / etc / sudoers hat mir geholfen.

# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
#         You have to run "ssh -t hostname sudo <cmd>".
#
Defaults    requiretty

#
# Refuse to run if unable to disable echo on the tty. This setting should also be
# changed in order to be able to use sudo without a tty. See requiretty above.
#
Defaults   !visiblepw

---> kommentieren Sie die Parameter wie folgt aus

#Defaults    requiretty
#Defaults   !visiblepw
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.