Eu tenho uma conexão de rede não confiável entre duas máquinas: às vezes, as conexões TCP ativas são descartadas por motivos fora do meu controle. Eu quero estabelecer uma conexão TCP confiável entre as duas máquinas.
Se a rede fosse confiável, eu apenas rodaria ssh -L 1234:localhost:1234 remotehost
, com o servidor escutando na porta 1234 remotehost
e apontaria o cliente localhost:1234
. Mas se a conexão ssh morrer, a conexão encaminhada também será. Como posso organizar a restauração automática da conexão entre o cliente e o servidor?
Não soluções:
- Isso não é para aplicativos interativos; portanto, a tela não se aplica.
- Este não é apenas sobre a reconexão de um túnel SSH automaticamente, la autossh . Desejo continuar usando a mesma conexão TCP encapsulada, não iniciar uma nova.
- Em princípio, uma VPN faria o truque. Mas parece um exagero quando eu apenas quero uma conexão TCP e gostaria de uma solução que funcione mesmo que eu não tenha permissões de root em nenhum dos lados.
Eu tenho uma memória fraca de um programa chamado rocks
que fez exatamente isso, mas parece que caiu na cara da web. Estou mais interessado no Linux dos dois lados (embora eu espere que um programa nesse nível seja portátil para outros departamentos), mas se você souber de um programa que funcione entre QNX e VMS, tanto melhor.
scp
. Eu estava respondendo com keepalives w / ssh com base no seu exemplo de encaminhamento de porta. Re: flaky hop downstream, não há muito que você possa fazer, além de criar uma sessão ssh com keepalives mais tolerantes (ou seja, permitir mais keepalives descartados com ServerAliveInterval > 0
e ServerAliveCountMax > 3
). O NAT requer intervalos mais baixos de manutenção de atividade. A questão principal é identificar qual é o problema e adaptar de acordo. Coloque as opções em .ssh/config
que eles estão sempre lá para você
rocks
aplicação ... embora este é, obviamente, uma verdadeira kludge