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

14

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

Eu já estou configurando o ssh ~/.ssh/config.

Host myvps
  HostName example.com
  User ironsand
  Port 10022

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

ferros e areias
fonte

Respostas:

22

Especifique "myvps"como o nome do host.

rsync /var/bar myvps:/home/foo ...
Ignacio Vazquez-Abrams
fonte
fazendo o rsync do diretório home do usuário, onde a configuração do ssh é mantida, funcionou para mim, mesmo que ele suporte a esperança do nó.
Stalin Gino
8

Isto não funcionou para mim. Tenho salto de hospedagem 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 : nome do nó nem nome do serviço fornecido ou não é conhecido rsync: conexão inesperadamente fechada (0 bytes recebidos até agora) [remetente] erro rsync: erro inexplicável (código 255) em / SourceCache / rsync / rsync- 42 / rsync / io.c (452) [remetente = 2.6.9]

No entanto, isso funciona muito bem

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

Editar, consegui superar 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 /Users/kbroughton/.ssh/config"

Isso passa por um erro, mas por 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 usuário @ na conexão, mas o mesmo erro ocorre.

EDITAR

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

[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
darKoram
fonte
Eu percebi que no meu caso eu não poderia usar o atalho, mas o nome do host completo real poderia ser usado
dashesy
1

@darKoram. Nos casos em que você chama o ssh com caminho não padrão e tenta usar o ssh no ProxyCommand, o que é um problema, porque não há herança. Você tem duas opções: fornecer diretamente o mesmo arquivo no comando interno ou cortá-lo dinamicamente. Você pode ver uma descrição detalhada no meu post sobre isso: http://hubbitus.info/wiki/Blog:Ssh_forwarding_with_same_config_file_hack

Pouco em sua situação deve ajudar a 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
Hubbitus
fonte
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

Greywood
fonte
-1

@darKoram

Qual é o nome DNS completo de "vm-app01"? Deve ser público, pois você afirma que poderia alcançá-lo no ssh sem o rsync. Mas você espera que o ssh pegue seu host através do padrão "21ct-dev1- *". Eu realmente não consigo ver como isso poderia funcionar de alguma forma. Se você tentar padronizar nomes de host, deve ser algo como isto:

Host *.21ct-dev1-domain.tld

Em seguida, a chamada do rsync deve ficar assim:

rsync -e "ssh" /local/path/ vm-app01.21ct-dev1-domain.tld:/remote/path/

Como o "vm-app01" é resolvido? Arquivo de hosts, vitórias, nis, nss? Você tem um apelido? Você está dentro de um domínio? Certamente parece um problema de DNS "simples".

WGRM
fonte