scp sobre o túnel ssh

1

Eu quero copiar arquivos de um computador remoto (W) para um computador host privado (P) via scp. Como não consigo me conectar à máquina W diretamente, eu uso um túnel ssh em duas máquinas diferentes com a porta 22. O que eu gostaria de fazer, é entrar na máquina W e de lá fazer uma transferência de arquivo scp para a máquina P, o problema é que P está escondido em uma rede, então eu não posso especificar um host remoto ip quando estou logado na máquina W. Existe uma solução para isso? Eu consigo fazer isso quando estou logado na máquina P, mas eu não quero para lembrar o caminho do arquivo toda vez que eu copiar um arquivo.

    
por jruebsam 22.05.2013 / 17:54

2 respostas

1

Depois de esclarecer sua configuração como discutido acima, seu sistema se parece com isso:

P -- R -- M1 -- M2 -- W

R é um roteador NAT que permite apenas conexões de P a M1 , mas não o contrário e todos os nós devem ser usados para estabelecer uma conexão.

Solução 1

Seu único problema real é o R do roteador sobre o qual você não tem controle, então você deve de alguma forma estabelecer um túnel para permitir que W se conecte de volta. A solução mais simples seria ter P estabelecer uma conexão SSH com M1 e estabelecer uma porta reversa para a frente.

Você pode configurar um segundo túnel SSH de W para M2 para encaminhar pacotes locais para a porta inversa encaminhada em M1 , que por sua vez pode ser usada para estabelecer uma conexão SSH encapsulada a partir de W para P .

Solução 2

Agora, isso adiciona bastante complexidade a toda a configuração, o que a torna propensa a erros. Uma solução melhor seria estabelecer uma conexão VPN entre W e M1 , P e M2 e entre M1 e M2 . Em seguida, você pode estabelecer um roteamento usando um intervalo de endereços privados de W a P nesses três túneis. Para que isso funcione, você precisa ter acesso root tanto a M1 como a M2 E você precisa configurar firewalls adequados para que ninguém de fora entre nas VPNs.

Existem, é claro, outras soluções também, mas o que você precisa para pensar em como os pacotes passarão por todos esses bloqueios, a solução real pode então ser adaptada para se adequar às suas ferramentas.

    
por 23.05.2013 / 11:05
2

Eu recomendaria montar o sistema de arquivos remoto localmente usando sshfs . Eu não sei os detalhes da sua configuração, mas vou dar um exemplo. Eu configurei um túnel através de um servidor remoto (R1) para um segundo servidor inacessível (R2) na rede do R1 com este comando:

ssh -fN -p 24222 user@R1 -L 2222:R2:22

Agora posso me conectar ao R2 da seguinte forma:

ssh -p 2222 127.0.0.1

Eu também posso usar sshfs para montar localmente um diretório de R2:

sshfs -p 2222 127.0.0.1:/path/to/dir /mnt/mountpoint

Eu tentei isso usando um túnel através de um não dois servidores remotos, mas não vejo razão para que ele não funcione com 3 ou mais, desde que o túnel tenha sido configurado corretamente.

Isso não é exatamente o que você pediu, mas deve servir como uma solução alternativa. Depois de ter o sistema de arquivos remoto montado localmente, você pode usar o simples cp para copiar arquivos de / para ele.

    
por 22.05.2013 / 18:36

Tags