SSH und sudo über ein pseudo-tty-terminal

Ich versuche zu überwinden, einige Einschränkungen in unserer Umwelt zu schreiben, bis einem autorisierten SSH-Datei für ssh-Schlüssel ohne Passwort.

Ich bin, die zu führen ein ssh als auf ein target-system, und führen Sie dann ein „sudo su – , und dann aktualisieren Sie die service-Konto authorized_keys mit einem Schlüssel“

Dieser schließlich gehen muss auf meinen ansible-Skripte.

Ich bin mit „ssh -t [email protected] „sudo su – service-user“ – welche eigentlich erfolgreich bekommt mich in eine shell für service-Benutzer. Aber ich bin nicht in der Lage, herauszufinden, einen Weg, um pass entlang der Linie ändern von Befehlen mit den oben genannten.

Irgendwelche Tipps oder alternativen?

Hinweis: ich „ssh -t“ – option als requiretty nicht auf die Zielsysteme.

Prost!

  • Diese Frage könnte man eine bessere Antwort auf Server Fehler.
  • Der Satz „ich bin nicht in der Lage, herauszufinden, einen Weg, um pass entlang der Linie ändern von Befehlen mit den oben genannten.“ ist unverständlich.
  • hmm, vielleicht werde ich anders formulieren für diejenigen, die es brauchen – „Kann mir jemand helfen bei der Identifizierung der besten Weg, um einen ssh-zum target-server, und führen Sie das Kommando sudo su und eine Datei schreiben“
InformationsquelleAutor user2074161 | 2016-07-22



2 Replies
  1. 0

    Je nachdem, welches Transportmittel Sie verwenden können Sie verwenden ssh_args.

    OpenSSH ist die Standard-Anschluss-Typ für Ansible auf Betriebssystemen, die neu genug ist, um ControlPersist. (Dies bedeutet, dass im Grunde alle Betriebssysteme außer Enterprise Linux 6 oder früher).

    Dann können Sie etwas tun, wie dieses in Ihrem ansible.cfg:

    ssh_args = -t -t 
    

    Wird die Kraft von ansible verbinden die gleiche Weise, die Sie manuell tun.

    Dann in Ihre playbook oder zusammen mit der Aufgabe, wo Sie es brauchen geben Sie become und become_user

    - name: Some task
      debug: msg="this is a test"
      become: true
      become_user: someuser
    
    • gut, den manuellen Befehl selbst nicht funktioniert . Ich habe es versucht. ex. „ssh -t [email protected] „sudo su – service-Benutzer ; touch test“ . Ich glaube, es ist mit der Art der shell erzeugt wird, innerhalb der Pseudo-tty.
    • Haben Sie versucht, mit mehreren -t. Aus der manpage: „Multiple -t Optionen-force-tty allocation, auch wenn ssh hat keine lokalen tty“
  2. 0

    su hat eine option, -c können Sie übergeben Sie einen Befehl ausführen, anstatt zu starten Sie eine neue shell.

    -c, –command=BEFEHL

    übergeben Sie einen einzelnen BEFEHL an die shell mit -c

    Jedoch sind Sie die Authentifizierung mit sudo, der tut dies bereits standardmäßig aktiviert; Sie können gerade geschnitten su aus der Befehl vollständig:

    ssh -t [email protected] "sudo -u service-user <your-command>"
    

    Einen Schritt weiter zu gehen, beachten Sie, dass Sie planen, über die Umsetzung dieser in ein Ansible-playbook. Wenn dem so ist, sollten Sie wahrscheinlich nicht verbringen zu viel Zeit versucht, dies manuell zu erledigen – Ansible behandelt die Ausführung von Befehlen aus der Ferne (das ist eines seiner primären Eigenschaften, nachdem alle), und hat ein Modul für die änderung der authorized_keys Datei.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.