Ich habe mich gefragt, ob mir jemand mit meinem Skript helfen kann.
Ich habe 2 Server. Nennen wir sie Server A und Server B. Auf Server B ist eine Software installiert, die ich auf Server A ausführen möchte. Ich kann die Software nicht auf Server A installieren.
Ich muss Benutzer eine andere Software auf Server A ausführen lassen, die dann ein Skript aufruft, um die Software auf Server B aufzurufen und einen Befehl auszuführen.
Also habe ich einen Benutzer namens transfer auf Server A und Server B erstellt. Ich habe zugelassen, dass die Übertragung in Server B erfolgen kann, ohne dass ein Kennwort mit Authentifizierungsschlüsseln erforderlich ist.
Jetzt versuche ich von Server A aus, ssh auf Server B zu übertragen und den Befehl auszuführen.
Dies funktioniert perfekt als root. Wenn ich selbst oder ein anderer Benutzer bin, werde ich jedoch nach dem Kennwort für den Benutzer "transfer" auf Server B gefragt.
Hier ist die Befehlsfolge:
#!/bin/bash
su transfer -c 'ssh transfer@ServerB script $1 $2'
su
from nonroot erfordert das Kennwort des neuen Benutzers, auf dem es ausgeführt wird (A), da Unix als Mehrbenutzersystem konzipiert wurde. Versuchen Sie dassu transfer -c 'echo hi'
zu sehen. Sie können mitsudo
diesem besonderen ausgewählten Benutzern erlauben , laufenssh
auf A, oder Sie können nur ausgewählte Benutzer geben auf A der privatekey , die sie verwenden können fürssh
den Zugriff auf B alstransfer
.ohne einen mittransfer
Benutzer A überhaupt.Antworten:
Erstellen Sie ein Shell-Skript, das den Remote-Befehl ausführt:
Testen Sie dieses Skript, indem Sie es als
transfer
Benutzer ausführen:Erstellen Sie jetzt als root eine Linux-Gruppe (zB
transfer
) und fügen Sie dann alle Benutzer, die Zugriff auf diese Funktionalität benötigen, in die Unix-Gruppe ein:Hängen Sie als Root Folgendes an die
/etc/sudoers
Datei an, indem Sie Folgendes ausführenvisudo
:Testen Sie, indem Sie sich als einer der Benutzer in der Übertragungsgruppe anmelden und Folgendes ausführen:
Um dies für Ihre Benutzer zu vereinfachen, fügen Sie Folgendes zu ihren .profile-Dateien hinzu (oder fügen Sie es für alle Benutzer zu / etc / profile hinzu):
Dann können Benutzer Folgendes eingeben:
und der entfernte Prozess sollte mit den beiden übergebenen Parametern ausgeführt werden.
quelle