it-swarm.com.de

Geben Sie die Identitätsdatei (id_rsa) mit rsync an

Ich muss regelmäßig Sicherungen eines Verzeichnisses auf einem Remote-Server durchführen, bei dem es sich um eine virtuelle Maschine handelt, die von einer Forschungsorganisation gehostet wird. Sie schreiben vor, dass der Zugriff auf VMs über SSH-Schlüssel erfolgt, was alles gut ist, außer 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 ~/.ssh/id_rsa Ist, aber wenn es etwas anderes ist, bekomme ich Permission denied (publickey).

Mit ssh kann ich die Identitätsdatei mit -i Angeben, aber rsync scheint keine solche Option zu haben.

Ich habe auch versucht, den Schlüssel auf dem lokalen Computer vorübergehend auf ~/.ssh/id_rsa Zu verschieben, aber das funktioniert ebenfalls nicht.

tl; dr

Können Sie mit rsync eine Identitätsdatei angeben?

224
Jangari

Sie können den genauen Befehl ssh über die Option '-e' angeben:

rsync -Pav -e "ssh -i $HOME/.ssh/somekey" [email protected]:/from/dir/ /to/dir/

Viele SSH-Benutzer sind mit ihrer Datei ~/.ssh/config nicht vertraut. Sie können Standardeinstellungen pro Host über die Konfigurationsdatei festlegen.

Host hostname
    User username
    IdentityFile ~/.ssh/somekey

Auf lange Sicht ist es am besten, die Datei ~/.ssh/config zu lernen.

385
Dan Garthwaite

Dies kann mit der SSH-Benutzerkonfiguration erfolgen, siehe: http://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/ grundsätzlich ~/.ssh/bearbeiten config:

$ nano ~/.ssh/config
#Add Hosts below 
Host server1
HostName examplehost.com
User username
Port 22
IdentityFile /path/to/key

$ rsync -e ssh /home/user/directory [email protected]:home/user/directory/

Dies sollte für jedes Programm funktionieren, das SSH, rsync, verwendet.

17
Cbaker510

Für mich war es ausreichend, den ssh-agent wie folgt zu starten:

eval `ssh-agent -s`
ssh-add /path/to/mykey

Siehe auch eine längere Antwort hier https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent

8
pietro

Zu Ihrer Information:

1) Der öffentliche Schlüssel befindet sich immer im Ausgangsverzeichnis des Benutzers, der sich beim Remote-Server anmeldet, d. H. Wenn Sie sich als "Backup" anmelden, befindet er sich unter /home/backup/.ssh/authorized_keys. Die Benutzer-ID beim Anmelden definiert den am Ziel verwendeten öffentlichen Schlüssel.

Sie können die Benutzer-ID beim Herstellen einer Verbindung auf zwei verschiedene Arten auswählen:

ssh [email protected]
or
ssh -l user_id  destination_server     (<-- that is lower case "L")

Auf der anderen Seite befindet sich der private Schlüssel an Ihrem Ende in ähnlicher Weise im Homedir des Benutzers, es sei denn, Sie überschreiben ihn wie in Dans Antwort beschrieben.

2) Zu Sicherungszwecken kann es wünschenswert sein, einen eingeschränkten Schlüssel zu erstellen, der darauf beschränkt ist, nur einen Befehl wie "rsync" auszuführen. Es gibt eine gute Beschreibung zu "rsnapshot" -Sicherung, mit der Sie den gesamten Server mit einem nicht privilegierten Benutzerkonto und "Sudo" remote sichern können:

"rsnapshot" howto

Rsnapshot kann problemlos eine Reihe von Remote- oder lokalen Servern sichern, was es zu einem praktischen geplanten und zentralisierten Sicherungsserver macht.

4
ajaaskel