Você precisa -e ssh para rsync?

22

Eu sempre costumava usar o seguinte comando quando copiar a partir de um servidor: rsync --progress -avze ssh user@host:/path/to/files ./here. No entanto, um amigo me mostrou que eu posso simplesmente fazer rsync --progress -avz user@host:/path/to/files ./here. Portanto, a questão é: se você não precisa, -e sshpor que existe?

GradGuy
fonte

Respostas:

20

Sempre que você precisar de opções adicionais para o comando ssh fora do usuário e do host, precisará do sinalizador -e. Talvez o servidor ao qual você está se conectando tenha ssh escutando na porta 2222.

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

Uma alternativa para contornar isso, existem 2 arquivos que você pode usar. /etc/ssh/ssh_configou~/.ssh/config

O arquivo de configuração usa o mesmo formato que ssh_config. Apenas pode ser configurado por usuário!

UtahJarhead
fonte
9

Você também precisaria -ese usar um local de chave privada não padrão, ou seja, especificar a chave privada via -e 'ssh -i /path/to/private/key/file.pem'. Por falar nisso, portas de escuta não padrão para sshd também. Basicamente, use -ese apenas ssh user@hostnão funcionar.

cjc
fonte
É -iuma opção para ssh ou rsync no seu exemplo? E se for para ssh, funciona sem aspas simples ao redor do comando?
Izkata
Ah, certo, eu preciso das aspas. Editando minha resposta agora.
CJC
8

Você não precisa do -e ssh para usar o ssh. De fato, se você especificar o destino como usuário @ host: / caminho / para / arquivos, estará usando o ssh por padrão. Ele é deixado em a) por motivos de compatibilidade eb) casos adicionais em que você pode ter uma combinação de hosts rsyncd e ssh.

Joel E Salas
fonte
2
É necessário no RHEL 3, por exemplo, como RSYNC_RSH usa como padrão 'rsh'.
Kyle Smith
5

Depende do que foi especificado para a --with-rshopção de configuração no momento da compilação. O padrão agora é ssh se esta opção não foi especificada. Ele havia sido rsh em algum momento no passado, no entanto, mesmo que seja rsh, pode não ser necessário, pois o ssh pode ser a implementação padrão do rsh em muitas caixas. Em todas as minhas máquinas, por exemplo, readlink -f $(which rsh)mostra que rsh é realmente apenas um link simbólico apontando para / usr / sbin / ssh

Estufado
fonte