Transferir um arquivo do servidor remoto A para o servidor remoto B do servidor C

3

Eu tenho um problema interessante que estou tentando resolver. Eu tenho um servidor JumpBox que eu tenho, a fim de ssh com segurança em servidores do cliente. Este é o único servidor em que meus clientes já abriram a porta 22 para. No entanto, este servidor JumpBox é muito pequeno e não tem espaço suficiente para armazenar arquivos grandes (maiores que 5GB).

Portanto, configurei outro servidor com discos maiores para essa finalidade, mas não quero que os clientes tenham que abrir a porta 22 para outro endereço IP.

Servidor T = Caixa de Transferência

Servidor J = Jumpbox

Servidor C = Clientbox

Do servidor J, posso transferir um arquivo no servidor T para o servidor C?

Obrigado e deixe-me saber se preciso esclarecer alguma coisa

    
por wrangler 13.09.2011 / 21:40

6 respostas

1

Infelizmente, atualmente o scp não suporta isso. Mas você poderia usar sshfs em J, montar T e C e então copiar (usando cp) em J do ponto de montagem T para o ponto de montagem C.

Se você combinar o autofs e o sshfs da maneira que o / net (com um mapa automático de executáveis) funciona, você provavelmente terá uma solução automática de trabalho.

Eu vi uma solução sshfs para o CentOS usando um fusível em algum lugar.

    
por 13.09.2011 / 22:35
2

De "T", você deve abrir um túnel ssh em "J" que encaminha para SSH em "C". De lá você pode pular de J a T para fazer qualquer coisa no C via SSH. Consulte SSH Tunneling Made Easy para obter mais informações

Então, no seu servidor "T", você pode fazer algo assim:

ssh -f J-user@addr-of-J-server -L 2000:addr-of-C-server:22 -N

ssh C-user@localhost -p 2000
    
por 13.09.2011 / 21:49
1

No host em que você precisa de dados, abra a porta e diga 22222 para conexões tcp do host que estar enviando dados.

no host que recebe dados, você pode usar algo como

$ nc -l -p 22222 | tar xf -

e no host enviando os dados quando o listener acima estiver no lugar

$ tar cf - files directories | nc -w1 ip.of.host.listening 2222

uma vez que os dados são transferidos, basta fechar o buraco do firewall; de se você está com medo você pode esquecer para fechá-lo, você pode abri-lo por 30 min com algo como

# (iptables -I INPUT -p tcp -s ip.of.host.sending.data --dport 22222 -j ACCEPT; sleep 30m;iptables -D INPUT -p tcp -s ip.of.host.sending.data --dport 22222 -j ACCEPT) &

Se você está preocupado com alguém bisbilhotando seus dados; você pode usar cryptcat em vez de netcat (nc).

    
por 14.09.2011 / 04:34
0

Por que não use os utilitários split, tar ou zip para reunir seus arquivos em partes menores e, em seguida, transferir cada parte individualmente por meio de J. Quando todas as partes estiverem em C, basta expandir o arquivo tar / zip.

Sua outra opção seria criar uma VPN de algum tipo entre T e J. Você pode então montar um arquivo de compartilhamento / exportação a partir de T como se fosse um sistema de arquivos local (NFS, FUSE, etc.).

As outras opções são ter os seus clientes SSH em J e configurar um túnel (-L, -R) e, em seguida, a partir de J permitir-lhes entrar em T. Assim, eles criam um túnel C- > J- & gt ; T e em T têm um sistema de transferência de arquivos disponível (FTP, HTTP). O encapsulamento SSH enviará os pacotes conforme necessário.

Sua melhor solução será obter mais recursos em seu JumpBox. Se seus clientes estão lhe dando dinheiro, você deve investir um pouco na infra-estrutura adequada para que você não precise perder tempo pulando através de aros.

    
por 13.09.2011 / 21:54
0

Uma nota histórica, este é precisamente o tipo de situação para a qual o modo FTP Protocol Passive foi criado. No entanto, sendo que as informações da conta são enviadas em texto não criptografado, é muito menos provável que seja usado.

    
por 13.09.2011 / 22:29
0

A maneira mais simples aqui é montar o drive do servidor T no jumpbox usando nfs ou sshfs: link Não tenho certeza se você deseja manter as permissões, mas acredito que você pode até mesmo montar a pasta sshfs no login dos usuários.

    
por 20.09.2011 / 21:19