Sudo: kein tty vorhanden und kein »askpass«-programm angegeben

How to solve "sudo: no tty present and no askpass program specified" when trying to run a shell from Jenkins

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

Running shell scripts that have contain sudo commands in them from jenkins might not run as expected. To fix this, follow along
Simple steps:
1. On ubuntu based systems, run " $ sudo visudo "
2. this will open /etc/sudoers file.
3. If your jenkins user is already in that file, then modify to look like this:
jenkins ALL=(ALL) NOPASSWD: ALL
4. save the file by doing Ctrl+O (dont save in tmp file. save in /etc/sudoers, confirm overwrite)
5. Exit by doing Ctrl+X
6. Relaunch your jenkins job
7. you shouldnt see that error message again :)

FYI - kann Ihnen bei Ihrer Suche helfen - Beachten Sie, dass Sie den SAME-Fehler in einfachem SSH erhalten, wenn Sie einen SSH-Befehl in einen anderen einbetten, z.

localhost $ ssh -C 'sudo su - anderer Benutzer ssh / run / this / executable'

(Warum nicht SSH direkt auf die Zielbox übertragen? Vielleicht werden SSH-Schlüssel nur zwischen Host1 und Host2 eingerichtet, oder das Netzwerk wird so geroutet, dass der Zugriff auf Host2 ohne Weiterleitung über Host1 verhindert wird. Vielleicht dürfen Sie keine Sudoer oder andere berühren andere Datei auf Host2 ... häufig in Produktionsumgebungen.).

In jedem Fall können Sie Nicht-Sudo-Befehle mit den oben genannten Befehlen ausführen. Das Präfixieren mit sudo führt jedoch zu "no tty present".

Wie behebt man das mit dem Befehl bare ssh? Geben Sie das -t ein, z. B .: localhost $ ssh -C 'sudo su - ein anderer Benutzer ssh -t / run / this / executable'

Nun läuft der Remote Sudo einwandfrei innerhalb von SSH, keine Beschwerden über tty. Der -t hat es zugeteilt.

Die Frage ist also, wie man die Option "-t" im Paramiko-Objekt emuliert. Da ist deine Antwort.

Dieser Blog versucht es zu erklären, hätte aber möglicherweise mehr Zeit für das 'sudo'-Beispiel aufwenden können: http://jessenoller.com/2009/02/05/ssh-programming-with-paramiko-completely-different/

(Entschuldigung für meinen Hinweis in die richtige Richtung anstelle einer perfekten Antwort ... Ich suche selbst noch nach diesen Informationen).

Sudo: kein tty vorhanden und kein »askpass«-programm angegeben
Sudo: kein tty vorhanden und kein »askpass«-programm angegeben

Sudo: kein tty vorhanden und kein »askpass«-programm angegeben

    • #1

    Hallo,

    ich habe gestern ein apt-get update durchgeführt. Dabei war leider die Festplatte voll und einiges ist schief gegangen.
    Ich habe mittlerweile -denke ich- alles wieder korrigiert. Nur XBMC kann ich aus dem Menü nicht starten:
    Ich habe die menuorg.xml dann entsprechend angepasst und logge den Output in eine Datei:

    1. /usr/share/vdr/menuorg-appswitcher standalone=yes app=xbmc &> /var/log/xbmc_starter.log

    Darin steht dann:

    1. sudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben
    2. Sorry, try again.
    3. sudo: 3 Fehlversuche bei der Passwort-Eingabe

    Kann mir jemand helfen?

    Eigentlich sollte ja nicht nach einem Passwort gefragt werden... Die Sudoers:

    1. #
    2. # This file MUST be edited with the 'visudo' command as root.
    3. #
    4. # Please consider adding local content in /etc/sudoers.d/ instead of
    5. # directly modifying this file.
    6. #
    7. # See the man page for details on how to write a sudoers file.
    8. #
    9. Defaults env_reset
    10. Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    11. # Host alias specification
    12. # User alias specification
    13. # Cmnd alias specification
    14. # User privilege specification
    15. root ALL=(ALL:ALL) ALL
    16. # Members of the admin group may gain root privileges
    17. %admin ALL=(ALL) ALL
    18. # Allow members of group sudo to execute any command
    19. %sudo ALL=(ALL:ALL) ALL
    20. # See sudoers(5) for more information on "#include" directives:
    21. #includedir /etc/sudoers.d
    22. # Added by yavdr-startup, don't remove
    23. vdr ALL=NOPASSWD: /usr/bin/start-xterm
    24. vdr ALL=NOPASSWD: /sbin/reboot
    25. vdr ALL=NOPASSWD: /usr/bin/xbmc

    Alles anzeigen


    Wobei ich die letzte Zeile testweise hinzugefügt habe.
    Hat jemand eine Idee?

    Gruß,
    Hendrik

    • #2

    Dabei war leider die Festplatte voll und einiges ist schief gegangen.


    Fein. Dann nimm einen Live System und schmeiß ein paar Sachen raus, was das System nicht braucht. Wenn Du dann Terminal hast, kannst Du mit Kernel-Leichen und die zugehörigen Header weiter machen. Update erst, wenn Platz da ist.

    Sudo: kein tty vorhanden und kein »askpass«-programm angegeben

    Eigentlich sollte ja nicht nach einem Passwort gefragt werden


    Vielleicht fehlt menuorg-appswitcher bei "NOPASSWD". Oder einfach:

    1. vdr ALL=NOPASSWD: ALL


    Albert

    • #3

    Hallo Albert,

    danke für deine Antwort.
    Aufgeräumt und apt-get install noch einmal ausgeführt -bis keine Fehlermeldung mehr- habe ich.
    Einige Setup-Dateien vom VDR waren auch futsch und sind aus dem Backup zurück. Die sudoers habe ich allerdings nicht gesichert gehabt.

    Deinen Tipp werde ich ausprobieren. Danke.

    Hat jemand mal die originale sudoers von yavdr für mich?

    Gruß,
    Hendrik

    • #4

    Hat jemand mal die originale sudoers von yavdr für mich?


    Wenn Du bis heute Abend wartest, ja oder jemand postet sie eher. Wenn aber der User VDR den appswitcher ausführt und als Ausnahme für alle Apps mit NOPASSWD in der sudoers steht, dann müsste es doch logischerweise gehen. Eine „riesige“ Sicherheitslücke sehe ich da nicht, wenn es nur vorübergehend eingetragen wird.

    Albert

    • #5

    Hat jemand mal die originale sudoers von yavdr für mich?


    Hier sind meine beiden.


    Albert

    • #6

    Danke!

    Die zweite war's. (vorsicht: Ich glaube, vor dem * sollte kein Leerzeichen sein).

    Gruß,
    Hendrik

    • #7

    Ich glaube, vor dem * sollte kein Leerzeichen sein


    Doch, das passt schon. Das Sternchen steht für das ganze Options, Commands, Args, ... für das initctl - init daemon control tool, deswegen mit Leerzeichen getrennt.

    Albert