Ich muss regelmäßig Sicherungen eines Verzeichnisses auf einem Remote-Server durchführen, der eine virtuelle Maschine ist, die von einer Forschungsorganisation gehostet wird. Sie schreiben vor, dass der Zugriff auf VMs über SSH-Schlüssel erfolgt, was alles in Ordnung ist, mit der Ausnahme, dass ich nicht herausfinden kann, wie Rsync auf den SSH-Schlüssel für diesen Server verweist.
Rsync hat kein Problem, wenn die Schlüsseldatei ist ~/.ssh/id_rsa
, aber wenn es etwas anderes ist, bekomme ich Permission denied (publickey)
.
Mit ssh kann ich die Identitätsdatei mit angeben -i
, aber rsync scheint keine solche Option zu haben.
Ich habe auch versucht, den Schlüssel vorübergehend auf den lokalen Rechner zu verschieben ~/.ssh/id_rsa
, aber das funktioniert ebenfalls nicht.
tl; dr
Können Sie mit rsync eine Identitätsdatei angeben?
sudo rsync
, das aus irgendeinem Grund keine eigenen SSH-Schlüssel verwendet.rsync -aAP "sudo -u user ssh" user@server:dir local_dir
beim Synchronisieren von Cron-Skripten, die als root ausgeführt werdenAntworten:
Sie können den genauen Befehl ssh mit der Option '-e' angeben:
Viele SSH-Benutzer sind mit ihrer ~ / .ssh / config-Datei nicht vertraut. Sie können die Standardeinstellungen pro Host über die Konfigurationsdatei festlegen.
Auf lange Sicht ist es am besten, die Datei ~ / .ssh / config zu lernen.
quelle
~/.ssh/config
Datei - Sie haben ein neues Universum für mich geöffnet!Dies kann mit der SSH-Benutzerkonfiguration erfolgen (siehe: http://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/). Bearbeiten Sie im Grunde ~ / .ssh / config:
Dies sollte für jedes Programm funktionieren, das SSH, rsync,
quelle
Für mich war es ausreichend, den ssh-agent wie folgt zu starten:
Siehe auch eine längere Antwort hier https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent
quelle
Zu Ihrer Information:
1) Der öffentliche Schlüssel befindet sich immer im Home-Verzeichnis des Benutzers, der sich am Remote-Server anmeldet. Wenn Sie sich also als "Backup" anmelden, befindet er sich unter /home/backup/.ssh/authorized_keys. Die Benutzer-ID beim Anmelden definiert den öffentlichen Schlüssel, der am Ziel verwendet wird.
Sie können die Benutzer-ID beim Herstellen der Verbindung auf zwei verschiedene Arten auswählen:
Auf der anderen Seite befindet sich der private Schlüssel am Ende Ihres Benutzerverzeichnisses auf ähnliche Weise, es sei denn, Sie überschreiben ihn wie in Dans Antwort beschrieben.
2) Für Sicherungszwecke kann es wünschenswert sein, einen eingeschränkten Schlüssel zu erstellen, der nur einen Befehl wie "rsync" ausführen kann. Es gibt eine gute Beschreibung zu dem Thema "rsnapshot" -Sicherung, mit der Sie den gesamten Server mit einem nicht privilegierten Benutzerkonto und "sudo" remote sichern können:
"rsnapshot" -Anleitung
Rsnapshot kann auf einfache Weise eine Reihe von Remote- oder lokalen Servern sichern, was es zu einem praktischen geplanten und zentralisierten Sicherungsserver macht.
quelle