Вам нужен -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зачем оно вообще?

GradGuy
источник

Ответы:

20

Каждый раз, когда вам нужны дополнительные параметры для команды ssh вне пользователя и хоста, вам нужен флаг -e. Возможно, сервер, к которому вы подключаетесь, прослушивает ssh через порт 2222.

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

В качестве альтернативы этому есть 2 файла, которые вы можете использовать. /etc/ssh/ssh_configили~/.ssh/config

Файл конфигурации использует тот же формат, что и ssh_config. Это просто можно настроить для каждого пользователя!

UtahJarhead
источник
9

Вам также может понадобиться, -eесли вы используете расположение закрытого ключа не по умолчанию, то есть укажите закрытый ключ через -e 'ssh -i /path/to/private/key/file.pem'. В этом отношении порты прослушивания не по умолчанию для sshd также. По сути, используйте, -eесли просто использование ssh user@hostне работает.

CJC
источник
Есть -iвариант для SSH или Rsync в вашем примере? И если это для ssh, работает ли он без одинарных кавычек вокруг команды?
Изката
О, да, мне нужны цитаты. Редактировать мой ответ сейчас.
CJC
8

Вам не нужен -e ssh для использования ssh. Фактически, если вы указываете цель как user @ host: / path / to / files, вы используете ssh по умолчанию. Он оставлен в а) по причинам совместимости и б) в некоторых случаях, когда у вас может быть комбинация хостов rsyncd и ssh.

Джоэл Э Салас
источник
2
Это необходимо для RHEL 3, например, так как RSYNC_RSH по умолчанию равен 'rsh'.
Кайл Смит
5

Это зависит от того, что было указано для параметра --with-rshконфигурации во время компиляции. По умолчанию теперь используется ssh, если эта опция не указана. Это было rsh в прошлом, однако, даже если это rsh, это может быть необязательно, так как ssh может быть реализацией rsh по умолчанию на многих компьютерах. Например, на всех моих машинах readlink -f $(which rsh)показано, что rsh - это просто символическая ссылка, указывающая на / usr / sbin / ssh

тушеное мясо
источник