É possível fazer uma conexão SSH peer-to-peer via técnica semelhante a bittorrent?

1

Como discutimos na minha pergunta, a questão vem a este ponto:

Podemos estabelecer uma conexão TCP através da técnica UDP Hole Punching?

- pergunta original / histórico -

Estou usando o recurso de túnel reverso do OpenSSH para conectar um servidor SSH atrás de um firewall.

Agora posso conectar a máquina server-behind-firewall emitindo ssh me@my-known-server -p 12345

Dessa forma, todo o tráfego de my-laptop é roteado para my-known-server e my-known-server está roteando esse tráfego para a máquina server-behind-firewall . Eu acho que isso é ineficiente.

O que estou procurando é uma técnica que forneça a mesma funcionalidade, mas usando a técnica do bittorrent (ou seja, os colegas criam conexões UDP para o my-known-server (rastreador) e envia pacotes diretamente uns para os outros)

Existe alguma maneira de conseguir essa funcionalidade?

Editar:

A conexão Bittorrent é criada através da técnica "UDP hole punching".

Editar-2:

Aparentemente, o que eu estava procurando era fazer uma conexão SSH sobre o software "Hamachi", que usa a técnica de passagem NAT.

    
por ceremcem 17.10.2014 / 10:19

2 respostas

1

Para responder à sua pergunta, tenho certeza de que não há funcionalidade como essa, em primeiro lugar porque o SSH é um protocolo baseado em TCP em vez de UDP.

O método padrão para alcançar hosts atrás de um gateway é usar a opção ProxyCommand no seu arquivo ~/.ssh/config .

Túneis são explicados em outro lugar , mas o básico é que você pode basicamente "hop" seu SSH através de proxies simplesmente especificando um comando que irá abrir uma conexão TCP: 22 a um host remoto que pode funcionar como o próximo salto SSH. (Embora em muitos casos você só precise de um proxy.)

Por exemplo, usando os nomes de host que você mencionou na sua pergunta, você pode adicionar o seguinte ao arquivo .ssh / config de my-laptop :

host server-behind-firewall
    ProxyCommand ssh -xaqW%h:22 my-known-server

Você então ssh para server-behind-firewall , o cliente ssh em seu laptop estabelecerá uma conexão com my-known-server , que estabelecerá uma conexão com o servidor com firewall e fará o proxy do tráfego de volta para você. Isto implica que você tem uma conta SSH em my-known-server . Embora os proxies talvez não sejam a maneira mais eficiente de gerenciar dados, isso é seguro, bem documentado e o método aceito para fazer esse tipo de conexão.

A idéia de "pares [criando] conexões UDP ... e [enviando] pacotes diretamente uns para os outros" só funciona se as máquinas puderem se conectar diretamente umas com as outras. Como sua máquina com firewall NÃO PODE ser acessada diretamente, a única maneira de alcançá-la é através do proxy em seu gateway.

Se o seu servidor com firewall estiver em uma rede que usa NAT para alcançar o mundo externo, é possível que o servidor possa estabelecer sua própria conexão independente com algum local externo para contornar o firewall. Mas cuidado de fazer isso. Administradores de rede tomam estratégias de bypass de firewall MUITO a sério. Para manter seu acesso às coisas, você deve trabalhar com os administradores da rede para encontrar uma solução, e não ao redor deles.

    
por 18.10.2014 / 00:15
1

Parece haver uma maneira de fazer isso mesmo sem um servidor de terceiros (por exemplo, rastreador) usando uma ferramenta chamada pwnat .

Para mais detalhes, consulte este post de superusuário ou o pwnat github page e publicação .

    
por 17.08.2016 / 10:15