Como usar a configuração '~ / .ssh / config' para cada servidor por 'rsync'

11

Agora estou usando o rsync com a opção -e 'ssh -p 10022' para especificar a porta.

Já defini o ssh em ~/.ssh/config .

Host myvps
  HostName example.com
  User ironsand
  Port 10022

Posso usar essa configuração do rsync facilmente? Ou posso criar ~/.rsync e definir uma porta padrão para especificar servidor?

    
por ironsand 10.10.2013 / 13:27

4 respostas

17

Especifique "myvps" como o nome do host.

rsync /var/bar myvps:/home/foo ...
    
por 10.10.2013 / 13:42
7

Isso não funcionou para mim. Tenho jump hosting no meu ~ / .ssh / config

Host 10.x.y.z
    User cloud-user
    HostName vm-pivot
    IdentityFile /path_to_vm_key

Host 21ct-dev1-*
    User cloud-user
    HostName %h.example.com
    ProxyCommand ssh 10.x.y.z -W %h:%p
    IdentityFile /path_to_vm_key


rsync -e "ssh" local_path vm-app01:/remote_path

ssh: Não foi possível resolver o nome do host vm-app01 : nodename nem servname fornecidos ou não são conhecidos rsync: conexão inesperadamente fechada (0 bytes recebidos até agora) [remetente] Erro de rsync: erro inexplicável (código 255) em /SourceCache/rsync/rsync-42/rsync/io.c(452) [sender = 2.6.9]

No entanto, isso funciona bem

[kbroughton@kbroughton:project + (develop)] ssh vm-app01
Last login: Thu Apr 17 12:10:37 2014 from 10.a.b.c

Editar, consegui passar a resolução de nomes, forçando o rsync ssh a carregar um arquivo de configuração com -F sudo rsync -az -e "ssh -F / Usuários / kbroughton /.ssh / config"

Isso passa de um erro, mas para outro. Permissão negada (publickey, gssapi-keyex, gssapi-with-mic). ssh_exchange_identification: Conexão fechada pelo host remoto

Também tentei definir explicitamente -i e user @ na conexão, mas ocorreu o mesmo erro.

EDITAR

Outro ponto de dados. Se eu usar o ip flutuante do pivot vm (host de salto) em vez de seu nome vm-pivot, o rsync funciona. Mas explicitamente despejar todos os meus ssh / config no -e "ssh" não funciona. Detalhes: Mac local, atualizado para o rsync 3.1.0, remoto centos rsync 3.0.9.

[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key -W 10.x.y.z:22"  /var/data/sources/data.tar.gz user@vm-pivot:/home/user

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
ssh_exchange_identification: Connection closed by remote host
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.0]

[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key -W 10.x.y.z:22"  /var/data/sources/data.tar.gz [email protected]:/home/user
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(181) [sender=3.1.0]

Isso funciona

[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key"  /var/data/sources/data.tar.gz [email protected]:/home/user
    
por 17.04.2014 / 18:18
1

@darKoram. Para casos em que você invoca ssh com caminho não padrão e tente usar ssh no ProxyCommand que é um problema porque não há herança. Você tem duas opções lá: direto fornecer o mesmo arquivo no comando interno, ou dinamicamente hackear. Você pode procurar uma descrição detalhada em meu post sobre isso: link

Em breve, sua situação deve ajudar na configuração como:

Host 21ct-dev1-*
  User cloud-user
  HostName %h.example.com
  ProxyCommand ssh $( egrep -z -A1 '^-F$' /proc/$PPID/cmdline ) 10.x.y.z -W %h:%p
  IdentityFile /path_to_vm_key
    
por 05.08.2015 / 13:16
0

@darKoram. Execute o processo SSH com o sudo:

sudo / usr / local / bin / rsync -az -e "sudo -u usuário ssh" /var/data/sources/data.tar.gz vm-app01: / home / user

    
por 15.06.2018 / 00:26

Tags