您需要-e ssh进行rsync吗?


22

我一直使用从服务器复制时使用下面的命令: rsync --progress -avze ssh user@host:/path/to/files ./here。但是,有个内心朋友向我展示了我可以做到的rsync --progress -avz user@host:/path/to/files ./here。因此,问题是,如果您不需要-e ssh它,为什么仍然在那里?

Answers:


20

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

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

解决此问题的替代方法是,可以使用2个文件。 /etc/ssh/ssh_config要么~/.ssh/config

配置文件使用与相同的格式ssh_config。只需按用户配置即可!


9

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


-i在您的示例中是否可以使用ssh或rsync?而且,如果它用于ssh,那么在命令周围没有单引号的情况下是否可以正常工作?
Izkata 2012年

哦,对,我需要引号。现在编辑我的答案。
cjc 2012年

8

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


2
例如,在RHEL 3上是必需的,因为RSYNC_RSH默认为'rsh'。
凯尔·史密斯

5

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.