2016-07-22 15 views
0

Ich versuche, einige Einschränkungen in unserer Umgebung zu überwinden, um eine autorisierte SSH-Datei für passwortlose SSH-Schlüssel zu schreiben.SSH und sudo über eine Pseudo-Tty-Terminal

Ich erfordern einen ssh als an ein Zielsystem auszuführen, und dann einen Lauf „sudo su -, und aktualisieren Sie dann das Dienstkonto authorized_keys mit einem Schlüssel“

Dies führt schließlich auf meine ansible gehen Skripte.

Ich benutze "ssh -t Benutzer @ Ziel" Sudo su - Service-Benutzer "- die tatsächlich mich in eine Shell für Service-Benutzer bringt. Aber ich bin nicht in der Lage, eine Möglichkeit, die zu übergeben Datei ändern Befehle mit dem oben

Irgendwelche Tipps oder alternative Optionen

. Hinweis:? ich brauche „ssh -t“ Option zu verwenden, da die requiretty nicht auf Zielsystemen gesetzt

Prost

.!
+0

Diese Frage kann unter [Serverfehler] (http://serverfault.com/) eine bessere Antwort erhalten. –

+0

Der Satz "* Ich bin nicht in der Lage, eine Möglichkeit zu finden, die Datei mit dem obigen. *" Zu modifizieren Befehle ist unverständlich. – techraf

+0

hmm vielleicht werde ich für diejenigen, die es brauchen umformulieren - "Kann mir jemand helfen, den besten Weg zu einem ssh zu Zielserver zu tun und führen Sie ein Sudo su und schreiben Sie eine Datei" – user2074161

Antwort

0

Je nachdem, welchen Transport Sie verwenden, können Sie Verwenden Sie ssh_args.

OpenSSH ist der Standardverbindungstyp für Ansible auf Betriebssystemen, die neu genug sind, um ControlPersist zu unterstützen. (Dies sind im Grunde alle Betriebssysteme außer Enterprise Linux 6 oder früher).

Dann können Sie so etwas wie dies in Ihrem ansible.cfg tun:

ssh_args = -t -t 

Welche ansible zwingen wird, auf die gleiche Weise manuell zu verbinden.

Dann in Ihrem Textbuch oder zusammen mit der Aufgabe, wo Sie es become und become_user

- name: Some task 
    debug: msg="this is a test" 
    become: true 
    become_user: someuser 
+0

gut, der manuelle Befehl selbst funktioniert nicht. Ich habe es versucht. Ex. "ssh -t Benutzer @ Ziel" Sudo su - Service-Benutzer; Touch Test ". Ich glaube, es ist mit der Art und Weise, wie die Shell in der Pseudo-tty erstellt wird. – user2074161

+0

Haben Sie versucht mit mehreren" -t ". Von der Manpage:" Mehrere Optionen t zwingen tty Zuweisung, auch wenn ssh hat keine lokale tty " –

0

su hat eine Option angeben, -c, die Sie auf einen Befehl passieren lässt auszuführen, anstatt eine neue von Start Schale.

-c, --command = COMMAND
passieren einen einzigen Befehl an die Schale mit -c

Allerdings sind Sie mit sudo Authentifizierung, die dies bereits standardmäßig tut; Sie nur su aus dem Befehl vollständig schneiden kann:

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

einen Schritt weiter zu gehen, beachten Sie, dass Sie in ein ansible Textbuch planen dies zu setzen. Wenn ja, sollten Sie wahrscheinlich nicht zu viel Zeit damit verbringen, dies manuell zu tun - Ansible wird Remote-Befehle ausführen (das ist eine der Hauptfunktionen) und hat a module zum Ändern der Datei authorized_keys.