Benötigen Sie -e ssh für rsync?

22

Früher habe ich immer den folgenden Befehl verwenden , wenn von einem Server zu kopieren: rsync --progress -avze ssh user@host:/path/to/files ./here. Ein Freund hat mir jedoch gezeigt, dass ich das einfach kann rsync --progress -avz user@host:/path/to/files ./here. Die Frage ist also, wenn Sie nicht brauchen, -e sshwarum gibt es es überhaupt?

GradGuy
quelle

Antworten:

20

Wenn Sie außerhalb des Benutzers und des Hosts zusätzliche Optionen für den Befehl ssh benötigen, benötigen Sie das Flag -e. Möglicherweise hat der Server, mit dem Sie eine Verbindung herstellen, ssh auf Port 2222 abgehört.

rsync -e 'ssh -p 2222' /source usr@host:/dest

Als Alternative dazu gibt es 2 Dateien, die Sie verwenden können. /etc/ssh/ssh_configoder~/.ssh/config

Die Konfigurationsdatei verwendet dasselbe Format wie ssh_config. Es kann nur auf Benutzerbasis konfiguriert werden!

UtahJarhead
quelle
9

Sie würden auch benötigen, -ewenn Sie einen nicht standardmäßigen privaten Schlüssel verwenden, dh den privaten Schlüssel über angeben -e 'ssh -i /path/to/private/key/file.pem'. Nicht standardmäßige Listen-Ports für sshd ebenfalls. Grundsätzlich verwenden, -ewenn nur die Verwendung ssh user@hostnicht funktioniert.

cjc
quelle
Gibt es -iin Ihrem Beispiel eine Option für ssh oder rsync? Und wenn es für ssh ist, funktioniert es ohne die einfachen Anführungszeichen um den Befehl?
Izkata,
Oh, richtig, ich brauche die Zitate. Meine Antwort jetzt bearbeiten
CJC
8

Sie brauchen -e ssh nicht, um ssh zu verwenden. Wenn Sie das Ziel als user @ host: / path / to / files angeben, verwenden Sie standardmäßig ssh. Es bleibt a) aus Kompatibilitätsgründen und b) in Randfällen, in denen Sie möglicherweise eine Kombination aus rsyncd- und ssh-Hosts haben.

Joel E Salas
quelle
2
Dies ist beispielsweise auf RHEL 3 erforderlich, da RSYNC_RSH standardmäßig 'rsh' ist.
Kyle Smith
5

Dies hängt davon ab, was --with-rshbei der Kompilierung für die Option configure angegeben wurde. Der Standardwert ist jetzt ssh, wenn diese Option nicht angegeben wurde. Es war in der Vergangenheit schon einmal rsh, aber selbst wenn es rsh ist, könnte es nicht notwendig sein, da ssh auf vielen Boxen die Standard-rsh-Implementierung sein könnte. Auf allen meinen Rechnern zeigt sich zum Beispiel readlink -f $(which rsh), dass rsh eigentlich nur ein Symlink ist, der auf / usr / sbin / ssh verweist

Eintopf
quelle