Configure a conexão SSH direta de A a C sem IPs públicos usando um servidor SSH público

Configure a conexão SSH direta de A a C sem IPs públicos usando um servidor SSH público

Tenho disponíveis estes servidores/clientes SSH:

A - sem IP público

B - IP público

C - sem IP público

Eu sei, posso estabelecer uma conexão SSH de A para C da seguinte maneira:

1) Gancho C em B. Fazendo de C:

ssh -R 10100:localhost:22 B_IP

2) Defina o encaminhamento de porta de A para C usando o gancho B para poder usar o agente ssh na máquina A:

ssh -L 5000:localhost:10100 B_IP

3) Agora posso usar minhas chaves ssh para acessar “diretamente” C de A:

ssh -p 5000 localhost

... o meu ponto é:

Posso de alguma forma estabelecer uma nova conexão "pura" de A para Cpara que depois que a máquina B parar, eu possa continuar meu trabalho?

Acho que deveria ser possível, desde que esses dois computadores já compartilhem uma conexão, ou estou errado?

Obrigado pelo seu tempo e ideias :)

Responder1

  • OhabitualO método é configurar o "encaminhamento de porta NAT" no roteador A ou C. (Como isso é feito depende do roteador, mas há instruções em todos os lugares.) Depois de fazer isso, você pode se conectar ao endereço público do roteador C + a porta "encaminhada" e a conexão passará para C.

    (Observação: o encaminhamento de porta NAT e o encaminhamento de porta SSH são semelhantesmas distintocoisas, como um martelo e uma chave de fenda. Não os confunda.)

  • Se você não tiver acesso administrativo a nenhum dos roteadores, você pode tentar usar UPnP ou NAT-PMP para configurar uma regra de encaminhamento de porta, como fazem muitos jogos e programas P2P. Para isso, use os comandos upnpcou natpmpc.

  • Se nenhum dos métodos acima funcionar, você precisará de algum tipo dePerfuração NAT. (Veja também oTCPeICMPartigos de perfuração.)

    Infelizmente, embora seja amplamente utilizado em váriosespecíficoprogramas, não parece haver muitosgenéricoferramentas para TCP, emborachownatpode funcionar.

Responder2

Provavelmente isso é impossível, a menos que você possa fazer algum tipo de encaminhamento de porta nos roteadores - mas neste caso você não precisa do computador C.

O problema é que no seu exemplo você não está indo diretamente de A -> C, os pacotes ainda estão atravessando B.

Se você tiver outro computador com endereços públicos, provavelmente poderá configurar uma VPN em uma topografia em estrela e usar o roteamento entre as VPNs para criar uma rede virtual onde qualquer um dos hosts públicos possa cair e as coisas possam continuar funcionando. . Eu fiz isso com o OpenVPN - existem algumas dicas - uma delas importante é desabilitar a filtragem de caminho reverso.

Responder3

Uma maneira de fazer isso seria usar uma VPN ponto a ponto - uma VPN que não exige que um dos hosts tenha um endereço IP estático ou um nome de domínio estático apontando para ele. Outras ideias mencionadas abaixo não são realmente VPNs, mas sim softwares que estabelecem uma conexão ponto a ponto por meio de algum tipo de protocolo. Aqui estão algumas opções:

Baseado emtox.chatrede:

Eu pessoalmente tentei as duas soluções, mas elas foram bloqueadas pela rede do meu trabalho (grande estilo corporativo).

  • toxvpn- não parece muito bem conservado hoje, mas deve funcionar.
  • tuntox- Idéia semelhante, embora não seja uma VPN real, mas pode fazer uma conexão e encaminhar portas ssh entre duas máquinas na rede tox. Exemplos para ssh estão disponíveis no README.
Baseado em serviços de chat públicos e não gratuitos

Não tentei nenhum deles pessoalmente e duvido que funcionem, mas pode valer a pena tentar.

  • VPN de festa em LAN- Baseado no Discord. Não parece muito bem conservado até hoje, também o README não inclui muitos exemplos, mas talvez valha a pena conferir.
  • robotito- não parece muito bem conservado. A instalação também parece difícil - usaGoogle Voz(anteriormente GTalk).
VPNs baseadas em um servidor público (mantido por terceiros)

Experiência pessoal: tentei n2n, mas foi bloqueado pela rede do meu trabalho (grande estilo corporativo).

  • n2n- usa um "supernó"que é mantido pelontopequipe - está operando de acordo com n2no README em supernode.ntop.org:7777(o supernó também é software livre, mas executá-lo requer novamente um servidor acessível ao público).
  • Nubela- Conceito semelhante a n2n, mas em vez desupernóé chamado defarol. Eles não oferecem um farol público para todos usarem, mas você realmente precisa executá-los dnclientem seu VPS disponível publicamente, conforme explicado emseus documentos. Portanto, não atende aos seus requisitos, mas achei que ainda valeria a pena mencioná-lo.
Outras soluções VPN que requerem uma assinatura paga.

Ao contrário da maioria dos serviços VPN comerciais existentes, apenas alguns deles têm como alvo usuários avançados, permitindo que dois usuários se comuniquem entre si pelas sub-redes da VPN que você obtém. É provável que existam outros provedores disponíveis que possam fornecer essa funcionalidade. Aqui está um:

Baseado em redes mantidas pela comunidade

Mesmo atrás de um NAT pesado, se o seu firewall não for muito restritivo (não é verdade no meu caso), você poderá fazer o seguinte (não VPNs):

  • para- Tentareste guia. Basicamente, você está criando um .oniondomínio (serviço Tor) que usuários de todo o mundo podem acessar.
  • i2pd- Tentareste guiaque também contém instruções para i2dp- o i2pcliente que eu recomendo.
Solução de último recurso

Mesmo com os mais irritantes firewalls, NAT e outras restrições de rede às quais você pode estar sujeito, você poderá usar maravilhososhttps://tmate.io/software e serviços gratuitos (como na cerveja grátis e na liberdade de expressão). No entanto, tem algumas desvantagens:

  • Não há comandos interativos (vejaedição #179).
  • Sem scpsuporte.
  • tmuxa versão na qual o fork é baseado é a de hoje 2.6.0, enquanto a versão mais recente do tmux atual é 3.3a- isso significa que para você ~/.tmux.conftrabalhar como ~/.tmate.conf, você terá que fazer ajustes não triviais (vejapor exemplo, dos meus dotfiles pessoais).

Embora os mantenedores do tmate não mencionem isso explicitamente, acho que as duas primeiras desvantagens mencionadas são restrições intencionais, já que as pessoas podem abusar dessas habilidades para transferir cargas de dados pelo tmate.ioservidor do. Portanto, isso cria tmaterealmente uma espécie de "área de trabalho remota" para o seu shell. Você terá que encontrar outros métodos para transferir arquivos entre as duas máquinas (consideresincronização).

Ao todo - a facilidade de uso do tmate e seu desempenho maravilhoso o tornam a melhor solução IMO. Acompanhado desincronizaçãopara transferência de arquivos, acho que é a melhor solução e a mais confiável.

informação relacionada