rsync 需要 -e ssh 吗?

mmi*_*deh 25 backup rsync

从服务器复制时,我总是使用以下命令:

rsync --progress -avze ssh user@host:/path/to/files ./here
Run Code Online (Sandbox Code Playgroud)

然而,我的一个朋友告诉我,我可以简单地做:

rsync --progress -avz user@host:/path/to/files ./here
Run Code Online (Sandbox Code Playgroud)

所以问题是,如果你不需要-e ssh它为什么会在那里呢?

Uta*_*ead 23

任何时候您需要在用户和主机之外的 ssh 命令的其他选项时,您都需要 -e 标志。也许您要连接的服务器在端口 2222 上有 ssh 侦听。

rsync -e 'ssh -p 2222' /source usr@host:/dest
Run Code Online (Sandbox Code Playgroud)

解决此问题的另一种方法是,您可以使用 2 个文件。 /etc/ssh/ssh_config或者~/.ssh/config

配置文件使用与ssh_config. 它只能基于每个用户进行配置!


cjc*_*cjc 10

您还需要-e,如果你使用非默认的私有密钥的位置,即通过指定的私钥-e 'ssh -i /path/to/private/key/file.pem'。就此而言,sshd 的非默认侦听端口也是如此。基本上,-e如果只是使用ssh user@host不起作用,请使用。


Joe*_*las 8

您不需要 -e ssh 即可使用 ssh。事实上,如果您将目标指定为 user@host:/path/to/files,则默认情况下您使用的是 ssh。它留在 a) 出于兼容性原因和 b) 边缘情况下,您可能同时拥有 rsyncd 和 ssh 主机。

  • 例如,在 RHEL 3 上需要它,因为 RSYNC_RSH 默认为“rsh”。 (2认同)

ste*_*tew 5

这取决于--with-rsh在编译时为配置选项指定的内容。如果未指定此选项,则现在默认为 ssh。在过去的某个时候它是 rsh,但是即使它是 rsh,也可能没有必要,因为 ssh 可能是许多机器上的默认 rsh 实现。例如,在我所有的机器上,readlink -f $(which rsh)显示 rsh 实际上只是一个指向 /usr/sbin/ssh 的符号链接