Ausführen eines Bash-Skripts von einem Benutzer derselben Gruppe, der eine Verbindung zu einem Server mit dem SSH-Schlüssel eines anderen Benutzers derselben Gruppe herstellt

360
kgtr

Ich habe ein Skript wie dieses gemacht:

sync.sh #!/bin/bash #1st backup the file scp user-1@ip-1:/directory/file1 /backup/location/ #2nd sync/overwrite my file to that server scp /local/file2 user-1@ip-1:/directory/file1 #3rd restart service associated with that file ssh -t user-1@IP-1 << EOF sudo systemctl restart some.service EOF 

Die Skriptberechtigung und -berechtigungen lauten wie folgt:

-rwxr-x--x. 1 user-1 group-1 ~/sync.sh 

Ich habe die ssh-Schlüssel konfiguriert zwischen user-1@localzu user-1@IP-1, ich habe konfiguriert visudo den Dienst neu zu starten und alles funktioniert gut, wenn ich das Skript ausführen user-1.

Ich möchte jeder other_userin der group-1Lage sein, dieses Skript zu laufen, aber der SSH-Schlüssel nicht auf diese Weise arbeiten, versucht er, einen anderen Schlüssel zu generieren. Was vermisse ich dazu?

Oder sollte ich einen anderen Ansatz verwenden? Ich habe gesehen, dass ich rsync zum Verschieben von Dateien verwenden könnte, aber was ist mit dem Neustart des Dienstes?

Danke euch allen.

2

1 Antwort auf die Frage

0
svin83

Dies ist keine sichere Vorgehensweise.

Ein Schlüssel ist das, was Benutzer authentifiziert.

  1. Geben Sie jedem Benutzer einen eigenen Schlüssel, oder jeder kann sich einfach als anderer Benutzer anmelden, indem Sie einen anderen Benutzernamen verwenden.

  2. Ändern Sie Ihr Skript so, dass jeder Benutzername aus der Umgebungsvariablen abgerufen wird.

  3. Verwenden Sie den Authentifizierungsagenten, um die Schlüssel zu verwalten. Auf diese Weise müssen Sie keine Pfade zu den Schlüsseln in Ihrem Skript angeben.

  4. Viele Server und viele Benutzer?

    • Sie sollten sich wahrscheinlich Kerberos und PAM ansehen.

    • Eine weitere Option besteht darin, ein Skript zu erstellen, um die Liste der Benutzer zur sudoers-Datei hinzuzufügen, und dieses Skript über ssh an eine Superuser-Shell auf jedem Server weiterleiten.

Ja, ich stimme zu, deshalb ist es nur für Benutzer derselben Gruppe. Meine einzige Option ist es jedoch, einen einzelnen Benutzer zu erstellen, der von der Gruppe gemeinsam genutzt werden soll. (nicht die beste Lösung, um ehrlich zu sein). Wenn ich das Skript so modifiziere, dass jeder Benutzername abgerufen wird, muss ich auch die anderen Server ändern und sie in die Sudoers-Liste aufnehmen, wenn ein neuer Benutzer in dieser Gruppe enthalten ist, und es scheint viel Arbeit für ein einfaches kleines Skript zu sein. kgtr vor 5 Jahren 0
@kgtr Aahh. Okay. Meine Antwort wurde mit weiteren Informationen aktualisiert :) svin83 vor 5 Jahren 0