Ihre Frage ist etwas unklar. Es scheint, dass Sie einen SSH-Schlüssel verwenden, der SSH-Schlüssel ist jedoch durch eine Passphrase geschützt. Aber dann sollten Sie tatsächlich nach dieser Passphrase gefragt werden, auch wenn Sie direkt angemeldet sind.
Was ich tun würde:
- Erstellen Sie auf Maschine A einen speziellen Benutzer (nennen wir ihn "runcripts"), der zum Ausführen der Skripts verwendet wird.
- Erstellen Sie für diesen Benutzer einen SSH-Schlüssel, der nicht durch eine Passphrase verschlüsselt ist.
- Konfigurieren Sie sudo so, dass "normale" Benutzer auf Computer A diese Skripts mit den Benutzerrechten von Benutzer "runscripts" ausführen können, ohne ein Kennwort eingeben zu müssen.
Hier ist ein vollständiges Beispiel, wie man das einrichtet:
Erstellen Sie einen neuen Benutzer, bei dem nicht angemeldet werden kann (auf meinem System wird auch eine neue Gruppe mit demselben Namen erstellt, die ich im Folgenden verwenden werde):
# adduser --disabled-password runscripts
Werden Sie dieser Benutzer und erstellen Sie einen SSH-Schlüssel. Legen Sie keine Passphrase für den Schlüssel fest. Drücken Sie einfach die Eingabetaste an der Eingabeaufforderung für die Passphrase.
# su runscripts $ ssh-keygen
Fügen Sie den öffentlichen Schlüssel (in ~ / .ssh / id_rsa.pub) zu den Authorized_keys auf dem Zielcomputer hinzu (Computer B in Ihrem Beispiel), und versuchen Sie es in Kürze mit dem SSH-Schlüssel (wodurch auch der öffentliche Remote-Schlüssel zu den bekannten_hosts hinzugefügt wird, so dass es später nicht mehr aufgefordert wird).
$ ssh remoteuser@remote.host
Zurück auf Maschine A: Fügen Sie der Gruppe die normalen Benutzerkonten hinzu:
# adduser kju runscripts
Erstellen Sie ein Skript, das den SSH-Schlüssel verwendet, und tun Sie etwas für B:
# cat > /usr/local/bin/script1 #!/bin/sh echo -n "Running as " whoami ssh remoteuser@machineB whoami ^D # chmod +x /usr/local/bin/script1
Erlauben Sie schließlich den Benutzern in Gruppenläufe, dieses Skript als Benutzerläufe ohne Kennwort auszuführen. Dies ist die Zeile aus / etc / sudoers:
%runscripts ALL=(runscripts) NOPASSWD:/usr/local/bin/script1
Versuchen Sie nun als einer der Benutzer in Gruppenläufen, das Skript auszuführen:
$ sudo -u runscripts /user/local/bin/script1 Running as user runscripts remoteuser $
Wie Sie anhand dieser Ausgabe sehen können, wurde das Skript als Benutzer ausgeführt, der Skripts ausführt. Dann loggte er sich als Benutzer 'remoteuser' bei Maschine B ein und führte den Befehl 'whoami' aus (der dann natürlich 'remoteuser' zurückgab).
Wenn Sie dies tun, hat dies den Vorteil, dass niemand in der Lage ist, den (ungeschützten) SSH-Schlüssel zu stehlen, da auf ihn nur als Benutzerläufe zugegriffen werden kann. Die Benutzer können jedoch nur die vorgegebenen Skripts mit den Berechtigungen dieses Benutzers ausführen.