Criando um túnel ssh para transferir arquivos?

2

Para mim, as redes são uma coisa muito "opaca" e, mesmo lendo muitos tutoriais sobre SSH, não entendo como criar um túnel básico para transferir meus arquivos.

A configuração é a seguinte:

My Computer --[Internet]--> Bridge Machine --[Local Network]--> Final Machine

Atualmente, faço o seguinte:

1) Connect to the Bridge Machine with :
ssh -X [email protected]

2) Connect to the Final Machine with :
ssh -X username@finalmachine

3) I copy the address of files I need (for example .../mydirectory)

4) Then I deconnect from the finalmachine with :
exit

5) I copy the files to the bridge :
scp -r username@finalmachine:/.../mydirectory .

6) I deconnect from the bridge with :
exit

7) I copy the files to my machine :
scp -r [email protected]:/.../mydirectory .

O que é bastante complicado. Minha pergunta é básica: como simplificar isso usando um túnel SSH?

(e por favor me explique o significado de cada linha de comando que você escreve, para entender o que cada linha realmente faz e evitar usá-la como algo mágico. Além disso, se algum número de porta for usado, me explique se posso escolher um número completamente aleatório ou se eu tiver que escolher um específico.)

Vincent
fonte
1
O Google no "ssh tunnel tuorial" fornece popcornfarmer.com/2009/01/ssh-tunneling-tutorial & revsys.com/writings/quicktips/ssh-tunnel.html & aperiodic.net/phil/ssh e muitas outras referências
Basile Starynkevitch
Você também pode simplesmente executar o seu ssh local para executar o scp na máquina bridge (dar o comando scp para executar), executar o scp na máquina local e, em seguida, agrupar tudo isso em um script de shell. Você poderia facilmente fazer um comando dessa maneira.
Keith

Respostas:

3

Configure um arquivo de configuração ssh:

~/.ssh/config

Esse arquivo ajudará de várias maneiras, mas, em última análise, permitirá que você faça tudo isso com uma única etapa.

Primeiro, configure aliases para cada máquina

Host bridge
User username

Host final
User username

Agora você pode usar o "ssh -X bridge" para conectar-se à primeira máquina.

Para esta próxima etapa, você precisará do netcat em cada máquina (tente "qual nc") para verificar. Em seguida, use um ProxyCommand com sua configuração de máquinas 'final' para que ele leia:

Host final
User username
ProxyCommand ssh -CAYq bridge exec nc %h %p

Este comando envia o que você deseja, através da máquina central, para hospedar% h na porta% p (ou seja, se você deseja enviar outros dados do aplicativo através de portas diferentes, é possível - desde que essa conexão esteja aberta)

Se você tiver as chaves configuradas, também não haverá solicitações de senha; caso contrário, será solicitado o primeiro e o final da ponte.

Agora "ssh final" deve funcionar, assim como:

scp -r final:/.../directory .
Geodésico
fonte