rsync situação única

1

Referência:
Como faço as transferências Multihop SCP?
link
link

Eu tenho uma situação que eu realmente espero que haja uma solução para, embora eu não tenha encontrado nada ainda nas últimas duas horas.

Eu tenho dois servidores que não podem se comunicar entre si, pelos quais preciso transferir dados. Essa é uma situação bastante comum que é facilmente superada com algum truque scp. Aqui está a pegadinha.

Um servidor é acessado através de uma VPN, (vpnserver) o outro servidor (targetserver) é acessado através de um host de salto (jumphostserver).

Eu tenho a configuração ProxyCommand para permitir conexões proxy através de jumphostserver para targetserver e estou usando o material SSH Mux (ControlMaster / ControlPersist / ControlPath) para permitir o compartilhamento de conexões para todas as conexões que estão abertas.

Minha máquina local pode apropriadamente scp coisas entre os dois servidores usando o seguinte comando:

scp -3 vpnserver: / caminho / para / arquivo targeterver: / caminho / para / destino

Eu também posso rsync coisas diretamente do vpnserver para minha máquina local e da minha máquina local para o servidor de alvos (usando o proxy ssh que passa pelo jumphostserver)

O que eu preciso fazer é fazer com que minha máquina atue como um intermediário da maneira que o scp -3 permite, mas usando rsync, para que permissões, propriedade e (mais importante) as ACLs sejam copiadas corretamente para o targeterver.

Eu tinha pensado em tentar exportar o sistema de arquivos do vpnserver e targeterver (exportado pelo jumphostserver), mas eu não tenho controle sobre o jumphostserver, apenas sobre o vpnserver e o targeterver.

    
por Speeddymon 09.11.2012 / 00:44

2 respostas

2

Se um desses dois hosts puder efetuar login no outro se a conectividade de rede estiver presente, ou com uma chave de ID do SSH em um reconhecido em authorized_keys no outro, ou uma senha puder ser usada, E se o encaminhamento de porta não estiver desativado E, se a execução desse tráfego em sua máquina local estiver correta, isso quase sempre poderá ser feito por meio do encaminhamento de porta.

Vamos chamar seu host de máquina local A, e esse host B tem as credenciais para efetuar login no host C com SSH se ele puder alcançar o host C.

  1. Faça login no host B usando a opção para fazer o encaminhamento de porta REVERSE, ouvindo a porta 2222 na máquina B e conectando-se à porta 3333 no host local (o que acontecerá na máquina A). No Linux esta opção é " -R 2222: localhost: 3333 ".

  2. Efetue login no host C usando o encaminhamento de porta normal, ouvindo a porta 3333 na máquina A e conectando a porta tp 22 no host local (o que acontecerá na máquina C). No Linux, esta opção é " -L 3333: localhost: 22 ".

  3. No host B, inicie uma sessão SSH de teste para hospedar o C para ver se tudo está configurado corretamente. O comando a fazer é " ssh -p2222 usernameonhostc @ localhost ". Se tudo estiver configurado corretamente, ele se conectará à porta 2222 em B, será encaminhado para a porta 3333 em A e, em seguida, será encaminhado para a porta 22 em C. Se as chaves estiverem corretas, você poderá fazer o login. Caso contrário, você deve ge uma solicitação de senha. Digite a senha para ter certeza.

Se você puder conectar OK, feche a conexão de teste e prossiga com # 4 ou # 5 abaixo.

  1. Para enviar arquivos de B para C, faça isso em B: rsync -e "ssh -p2222" -av / onde / para / get / files /. usernameonhostc @ localhost: / onde / para / colocar / arquivos

  2. Para enviar arquivos de C para B, faça isso em B: rsync -e " ssh -p2222" -av nomedeusuariohost @ localhost: / onde / para / obter / arquivos /. / onde / to / put / files

Se você precisar transferir quantidades muito grandes de dados entre as máquinas pela Internet porque seu acesso local tem largura de banda limitada, será mais complicado, exigirá saber como as redes são restritas em B e C e pode nem mesmo ser possível.

Substitua a string "useronhostc" pelo seu nome de usuário que você usa no host C. Deixe "localhost" como está ou mude-o apenas para "127.0.0.1". Forneça os caminhos corretos para os exemplos mostrados. Remova o " /. " no final do caminho de origem, se for apenas um único arquivo.

Lembre-se de que você deve fazer o login em B e C (de A) ao mesmo tempo. É sugerido o uso de janelas separadas do terminal. Esses logins ssh estarão fazendo o encaminhamento de porta. Mas você também pode fazer comandos através deles. Você poderia escolher números de porta diferentes de 2222 ou 333 mostrados pelo exemplo. A porta 22 é provavelmente necessária, a menos que o host C ouça em uma porta diferente por algum motivo (eu faço isso com meus servidores ... não estou dizendo qual porta). Se você alterar as portas 2222 e / ou 3333, provavelmente precisará usar números 1024 ou mais. Tecnicamente, você pode até usar o mesmo número para ambos, já que os ouvintes estão em máquinas diferentes.

    
por 09.11.2012 / 02:42
0

Se os dois sistemas tiverem acesso à Internet, você poderá instalar o pacote n2n a partir do ntop para criar um host link VPN entre hosts entre os sistemas.

    
por 09.11.2012 / 01:46

Tags