it-swarm.com.de

Wie benutzt man eine Identitätsdatei mit rsync?

Wie benutzt man eine Identitätsdatei mit rsync?

Dies ist die Syntax, die ich denke mit rsync verwenden sollte, um eine Identitätsdatei für die Verbindung zu verwenden:

 rsync -avz -e 'ssh -p1234 -i ~/.ssh/1234-identity'\
 "/ local/dir /" [email protected]: "/ remote/dir/"

Aber es gibt mir einen Fehler:

 Warnung: Auf die Identitätsdatei ~/.ssh/1234-identity kann nicht zugegriffen werden: Keine solche Datei oder kein solches Verzeichnis. 

Die Datei ist in Ordnung, die Berechtigungen sind korrekt eingestellt, und sie funktioniert mit ssh - nur nicht mit rsync - zumindest in meiner Syntax. Was mache ich falsch? Versucht es, nach der Identitätsdatei auf dem Remotecomputer zu suchen? Wenn ja, wie gebe ich an, dass ich eine Identitätsdatei auf meinem lokalen Computer verwenden möchte?

117
cwd

Sie können ssh-agent Und ssh-add Verwenden, um den Schlüssel in den Speicher zu laden. ssh probiert Identitäten von ssh-agent automatisch aus, wenn sie gefunden werden können. Befehle wären

eval $(ssh-agent) # Create agent and environment variables
ssh-add ~/.ssh/1234-identity

ssh-agent Ist ein Benutzer-Daemon, der unverschlüsselte SSH-Schlüssel im Speicher hält. ssh findet es basierend auf Umgebungsvariablen, die ssh-agent beim Ausführen ausgibt. Wenn Sie diese Ausgabe mit eval auswerten, werden die Umgebungsvariablen erstellt. ssh-add Ist der Befehl, der den Schlüsselspeicher verwaltet. Der Agent kann mit ssh-add gesperrt werden. Eine Standardlebensdauer für einen Schlüssel kann beim Starten von ssh-agent oder beim Hinzufügen eines Schlüssels angegeben werden.

Möglicherweise möchten Sie auch eine ~/.ssh/config-Datei einrichten, um die Port- und Schlüsseldefinition bereitzustellen. (Weitere Optionen finden Sie unter `man ssh_config.)

Host 22.33.44.55
    IdentityFile ~/.ssh/1234-identity
    Port 1234

Wenn Sie den Befehl ssh in einfache Anführungszeichen setzen, wird die Shell-Erweiterung verhindert, die für ~ Oder $HOME Erforderlich ist. Sie können den vollständigen oder relativen Pfad zum Schlüssel in einfachen Anführungszeichen verwenden.

80
BillThor

Benutze das eine oder das andere $HOME

rsync -avz -e "ssh -p1234  -i \"$HOME/.ssh/1234-identity\"" dir [email protected]:

oder vollständiger Pfad zum Schlüssel:

rsync -avz -e "ssh -p1234  -i /home/username/.ssh/1234-identity" dir [email protected]:

Getestet mit rsync 3.0.9 unter Ubuntu

70
Tombart

Sie müssen den absoluten Pfad zu Ihrer Identitätsschlüsseldatei angeben. Dies ist wahrscheinlich eine Art Quirck in Rsync. (Es kann doch nicht perfekt sein)

Ich bin vor ein paar Tagen auf dieses Problem gestoßen :-)

36
Alpha01

Das funktioniert bei mir

rsync -avz --rsh="ssh -p1234  -i ~/.ssh/1234-identity"  \
"/local/dir/" [email protected]:"/remote/dir/"
22
ilcavero

Führen Sie den Befehl in bash oder sh aus? Dies könnte einen Unterschied machen. Versuchen Sie, ~ Durch $HOME Zu ersetzen. Versuchen Sie, die Zeichenfolge für die Option -e In doppelte Anführungszeichen zu setzen.

6
Darhuuk

verwenden Sie die Schlüsseldatei mit rsync:

rsync -rave "ssh -i /home/test/pkey_new.pem" /var/www/test/ [email protected]:/var/www/test
4
Avinash Raut