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?

Respostas:


22

Especifique "myvps"como o nome do host.

rsync /var/bar myvps:/home/foo ...

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 user@10.x.y.z:/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 user@10.x.y.z:/home/user

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

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


-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".

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.