Linux-Passwortlose ssh vom System (root) -Skript

1550
redmoskito

Was ist der einfachste Weg, um ein Systemskript (das als Root ausgeführt wird) Remote-Befehle über ssh ausführen zu lassen?

Ich habe einige Skripte geschrieben, die Befehle über ssh aus der Ferne ausführen, und sie funktionieren hervorragend, wenn ich sie wie ich selbst ausführe, da ich ssh-agent und die Schlüssel für die kennwortlose Anmeldung eingerichtet habe. Ich möchte diese gerne anrufen, wenn mein Laptop ein- und ausdockt. Ich konnte erfolgreich beliebige Skripts beim Andocken / Andocken ausführen, aber da die ACPI-Ereignisskripts als root ausgeführt werden, schlägt der Versuch, mein ssh-Skript auszuführen, während der Authentifizierung fehl.

Ich habe versucht, sudo mit den Flags -u und -i zu verwenden, um die Ausführung des Skripts als Benutzer zu simulieren, z. B .:

sudo -u redmoskito -i /home/redmoskito/bin/remote_command 

die den privaten Schlüssel erfolgreich findet und versucht, ihn zu verwenden, aber die Anmeldeinformationen für den ssh-agent fehlen noch, sodass er meine Passphrase benötigt.

0
Mögliches Duplikat von [SSH: Sudo-Befehl ausführen] (http://superuser.com/questions/117870/ssh-execute-sudo-command) Sathya vor 13 Jahren 0
@Sathya Der Benutzer in diesem Beitrag versucht, einen Remote-Befehl als Root auf dem Server auszuführen, während ich versuche, einen Remote-Befehl als Root auf dem Client auszuführen. redmoskito vor 13 Jahren 0

2 Antworten auf die Frage

1
Tobu

Nothing wrong with the sudo part. To pick up an existing ssh agent, see these answers: Sharing the same `ssh-agent` among multiple login sessions

0
TD1

Haben Sie versucht, Su anstelle von Sudo zu verwenden?

su - redmoskito -c "/ home / redmoskito / bin / remote_command"

ODER

Bearbeiten Sie Ihr Skript, um Folgendes zu verwenden: ssh -l redmoskito (host) (Befehl) (vorausgesetzt, dass redmoskito auf dem Remotecomputer der gleiche Benutzername ist). Geben Sie dann im redmoskito-Ausgangsverzeichnis des Remotecomputers $ HOME / .ssh / Authorized_keys den Inhalt von local ein Maschinenstammverzeichnis $ HOME.ssh / id_rsa.pub nach dem Erstellen einer leeren Passphrase als root auf dem lokalen Computer mit ssh-keygen -t rsa Stellen Sie sicher, dass $ HOME oder $ HOME / .ssh oder eine der Dateien in $ HOME / .ssh nicht angegeben sind Gruppe oder andere beschreibbare Datei, wenn Ihre Datei sshd_config StrictModes = yes hat

Wenn nichts davon funktioniert, lass es mich wissen. Ich werde das Problem auf meinen Maschinen duplizieren.

Das würde das Problem sicherlich lösen, da es das Problem "ssh agent needs authentication" umgeht, aber leere Passphrase ist für mich keine Option. redmoskito vor 13 Jahren 0