Gostaria de acessar a porta ssh do meu host linux do escritório em casa. Infelizmente, o host está localizado atrás de um roteador NAT. Portanto, o endereço IP não está disponível ao público. No entanto, existe acesso a outro host da Internet (servidor), que infelizmente é apenas o acesso não raiz. Depois de um tempo pesquisando, não encontro uma solução adequada.
Após a instalação:
- PC do escritório (Linux, acesso root) por trás do NAT (IP não público), mas acesso total à Internet.
- IP do servidor (linux, sem acesso root), IP estático e público e acesso total à Internet.
- PC doméstico (Linux, acesso root) por trás do NAT (IP não público), mas com acesso total à Internet.
Conexões possíveis: PC do escritório -> Servidor <- PC doméstico
Não é possível: PC do escritório <-X- Server -X-> PC doméstico
Nem o PC doméstico, nem o servidor podem iniciar o acesso ao PC do escritório. Mas o PC do Office e o PC doméstico podem iniciar conexões com o servidor.
Túnel SSH reverso não é possível: tentei um método chamado túnel ssh reverso. Infelizmente, isso requer GatewayPorts no servidor definido como "yes" em / etc / ssh / sshd_config, onde não tenho acesso root.
Em princípio, deve ser possível:
0) No servidor, inicio um programa de espaço de usuário que escuta em 2 portas (1 de entrada e 1 de saída)
1) No PC do meu escritório, eu executo outro programa que mantém uma conexão TCP aberta na porta de saída do servidor.
2) Em casa, conecto à porta de entrada do servidor.
Deve haver uma solução padrão para isso lá fora.
Qual é a solução mais rápida e limpa para resolver isso?
Frank
Respostas:
Mais tarde:
O que você pode fazer é o seguinte: na etapa 1, encaminhe uma porta remota do PC do escritório para o servidor (
12345
é usado como exemplo, qualquer porta> 1024 deve fazer). Agora, a conexão com o 12345 no servidor deve conectá-lo à porta 22 no officepc.Na etapa 2, encaminhe a porta 23456 da sua máquina doméstica para 12345 no servidor (de onde é encaminhada para officepc: 22, conforme configurado na etapa 1)
Na etapa 3, você se conecta à porta local 23456 com o login do PC do escritório . Isso é encaminhado pela etapa 2 para a porta 12345 no servidor e pela etapa 1 para o PC do escritório.
Observe que estou usando autossh para encaminhamentos, pois é um wrapper ssh que reconecta automaticamente o túnel, caso seja desconectado; no entanto, o ssh normal também funcionaria, desde que a conexão não caia.
Existe uma possível vulnerabilidade: qualquer pessoa que possa se conectar ao localhost: 12345 no serverpc agora pode se conectar ao officepc: 22 e tentar invadir o site. (Observe que, se você estiver executando um servidor SSH, deverá protegê-lo acima das proteções básicas ativadas por padrão; eu recomendo pelo menos desabilitar o login root e desabilitar a autenticação de senha - veja, por exemplo, isso )
Edit : Eu verifiquei isso com a mesma configuração e funciona.
GatewayPorts no
afeta apenas as portas abertas ao mundo em geral, não os túneis locais. É isso que as portas encaminhadas são:Portanto, no que diz respeito à pilha de rede, é todo o tráfego local nas respectivas interfaces de loopback (mais conexões ssh ao serverpc); portanto,
GatewayPorts
não está marcado.Existe, no entanto, a diretiva
AllowTcpForwarding
: se isso forno
, essa configuração falhará, pois nenhum encaminhamento é permitido, nem mesmo na interface de loopback.Advertências :
se estiver usando autossh e ssh recente, convém usar ssh's
ServerAliveInterval
eServerAliveCountMax
manter o túnel ativo . O Autossh tem uma verificação interna, mas aparentemente tem alguns problemas no Fedora.-M0
desativa isso e-oServerAliveInterval=20 -oServerAliveCountMax=3
verifica se a conexão está ativa - tenta a cada 20 s, se falha 3x em uma linha, interrompe o ssh (e o autossh cria um novo):pode ser útil reiniciar o túnel ssh se o encaminhamento falhar, usando
-oExitOnForwardFailure=yes
- se a porta já estiver ligada, você poderá obter uma conexão SSH funcionando, mas nenhum encapsulamento encaminhado.usar
~/.ssh/config
para as opções (e portas) é aconselhável; caso contrário, as linhas de comando ficam muito detalhadas. Por exemplo:Então você pode usar apenas o alias do servidor:
fonte
GatewayPorts no
restringe as portas abertas para serem acessíveis apenas na interface de loopback; note que na etapa 2 você está encaminhando na interface de loopback (na verdade, os dois encaminhadores são "somente localhost"), portanto, isso pode funcionar (AllowTcpForwarding no
na configuração do sshd isso poderia ser interrompido).GatewayPorts no
; editou a resposta. Observe que existem outras diretivas (comoPermitOpen
eAllowTcpForwarding
) que podem interromper essa configuração: manpagez.com/man/5/sshd_configSe você pode ssh para o servidor interno de casa e do servidor interno para a máquina Linux do escritório, em casa, você pode usar o ssh
ProxyCommand
para saltar silenciosamente pelo servidor para a máquina interna vianc
(netcat)Então você
ssh user@internalpc
e você são encaminhados silenciosamente pela máquina servidor, sem necessidade de abertura de portas ou túneis em nenhuma das extremidades.fonte
Instale o Robo-TiTO no computador que você deseja acessar remotamente SSH.
As instruções de instalação a seguir estão obsoletas, à medida que o site foi movido. O novo URL é https://github.com/formigarafa/robotito
fonte
CLIENT_PASSPHRASE = "logmein"
, em texto sem formatação . Isso é literalmente zero segurança - você está fazendo um buraco do tamanho de um caminhão para qualquer um entrar. Contraste com a autenticação de chave pública SSH: estou autenticando através de um canal seguro , usando credenciais que nunca passam da linha. Quem está mantendo seu computador seguro agora?A solução de Piskvor funciona e é legal. No entanto, mantém os terminais abertos, com as conchas de login penduradas. Não é muito legal.
Eu sempre usei esse pequeno script que escrevi para conectar-se a um servidor e mantê-lo conectado executando-o no cron:
Aposto que poderíamos consertar a solução de Piskvor usando a autossh mais elegante ao lado de uma tela separada ou usar os argumentos -NT ssh para manter a conexão em segundo plano.
fonte
homepc
computador).Para mim, parece que, em vez de um túnel SSH, você deve tentar uma VPN: do tipo que funciona usando um servidor externo para fazer proxy, como o Hamachi . Existem outros softwares gratuitos como este, mas o Hamachi é o meu favorito.
fonte
5.0.0.0/8
rede realmente possui endereços IPv4 públicos atribuídos, o Hamachi está com problemas (se o Hamachi estiver em execução, você não poderá acessar uma parte aleatória da Internet). Além disso, o Hamachi não é mais gratuito.