Como posso copiar um arquivo de um servidor para outro com a ajuda de um servidor intermediário? [duplicado]

4

Eu tenho três servidores linux:
1. Servidor de banco de dados 10.10.10.10
2. Servidor de aplicativos 10.10.10.52
3. Servidor de Backup 10.10.10.55

Há uma conexão direta entre os servidores de banco de dados e de aplicativos e há uma conexão direta entre os servidores de aplicativos e de backup, mas não há conexão entre os servidores de banco de dados e de backup. Eu tenho um arquivo no servidor de banco de dados que eu quero copiar para o servidor de backup, mas eu não tenho idéia de como fazer. Se alguém tiver alguma ideia, por favor, compartilhe comigo.
Agradecemos antecipadamente.

    
por Abdul Raheem Ghani 27.11.2016 / 10:03

3 respostas

5

Você tem que fazer um túnel de host1 (1) para host (3) logar em host2 (2) com SSH, pois somente (1) tem acesso a (2), como em:

host1$ ssh -L 9999:host3:22 user@host2

Isso criará o túnel para o host3, a porta SSH (22) no host local, a porta 9999 / TCP

Em seguida, em outras janelas, você scp do host1 com um usuário presente no host 3, como em:

host1$ scp -P 9999 file_to_copy user@localhost:/user/file_to_copy

A esse respeito, a transferência do arquivo é feita diretamente do host 1 para o host3, e o host2 está lá apenas para encaminhar a conexão através do túnel SSH. Quando você sai do primeiro ssh, o túnel é fechado.

    
por 27.11.2016 / 11:20
2

Suposição:  No host A scp / tmp / xxx HostB: / tmp / xxx e no HostB HostC scp / tmp / xxx: / tmp / xxx

Em casos, tradicionalmente você usaria um túnel ssh / scp para copiar de HostA para HostC. Supondo que sua rede também tenha desativado túneis (também assumindo que você também perguntou sobre isso como uma 'conexão direta')

Você poderia escrever um script como este - para execução do HostB

#!/usr/bin/bash -e
# assumes you have PKI setup so you only have to enter your pass-phrase at most once
file=$1

scp Hosta:$file $file
scp $file HostC:$file
rm $file

Espero que isso ajude! você faz um produto acabado!

Depois de pensar: de HostB

scp HostA:$file HostC:$file
    
por 27.11.2016 / 10:44
1

Uma alternativa para a solução proposta por Rui F Ribeiro é configurar um ProxyCommand em sua configuração SSH arquivo (geralmente ~/.ssh/config ):

host <remote>
    ProxyCommand ssh <gateway_user>@<gateway> nc <host> 22
    User <host_user>

Então, você pode simplesmente usar:

scp /local/path/to/file <remote>:/remote/path/to/file
scp <remote>:/remote/path/to/file /local/path/to/file

Quando a configuração do SSH estiver configurada, você poderá copiar os arquivos sem problemas, como se tivesse uma conexão direta com o servidor remoto.

    
por 27.11.2016 / 15:56

Tags