ssh tunnel colapso por EXATAMENTE duas horas constantemente?

0

Eu corro este script de tunelamento ssh no meu servidor remoto (CentOS) em um terminal para chegar ao meu computador de casa (Ubuntu):

while true
do
  ssh -R 49666:localhost:22 (my name@ my home ip) -N
  sleep 15
done

Eu tenho loop (o sono 15 parte) porque os túneis colapso occaisonally e quando isso acontece, alguém precisa estar fisicamente lá para iniciá-lo novamente. O loop é uma solução alternativa, embora talvez não seja boa ...

Então, a partir de casa, eu posso ssh para o servidor, ssh'ing para localhost na porta 49666.

Todos de vez em quando, porém, eu fico desconectado aleatoriamente por EXATAMENTE duas horas e 15 segundos. Eu vejo isso no meu auth.log:

Accepted publickey from (work ip)
error: bind: Address already in use
error: channel_setup_fwd_listener_tcpip: cannot listen to port: 49666

Eu estava pensando originalmente que não deveria executar o SSH-R em um loop, porque obviamente ele continuará tentando vincular-se à mesma porta. Mas a coisa é, a falha acima acontece talvez a cada 14 horas, não a cada 15 segundos, como o loop implicaria. Eu suspeito que se você tentar SSH -R uma conexão que já existe, simplesmente não faz nada?

Meu próximo pensamento foi que talvez algum outro serviço apareça na porta 49666 às vezes e atrapalhe o túnel, e quando o script tentar ligar-se a ele 15 segundos depois, não é possível porque o outro serviço o está usando. Mas não consigo descobrir o que o outro serviço, se existir, poderia ser. Eu uso netstat, lsof, etc, mas eu nunca vejo nada em execução nessa porta. Não tenho certeza se existe uma maneira de ver o histórico de uma porta ou se você pode ver apenas as coisas usando-a enquanto estão ativas. Mas eu suspeito que nada está tentando usá-lo, mas é possível ...

Depois que eu recebo a falha "já em uso", não consigo fazer o ssh. Mas então, toda vez, EXATAMENTE duas horas e 15 segundos depois, eu entendo isso:

Accepted publickey from (same work ip)

mas sem as falhas subseqüentes, e eu posso ssh como normal novamente. A quantidade de tempo até a próxima falha parece aleatória, mas da falha até o próximo restabelecimento do túnel, é EXATAMENTE duas horas e 15 segundos. Eu suponho que há algum tipo de coisa de firewall de cooldown de 2 horas, e então o script diz para esperar 15 segundos, o que aumenta o tempo. O padrão aqui me faz pensar que há alguma maneira de configurar isso. O problema é que eu não tenho ideia de por que a coisa do "endereço já em uso" começa, e eu não sei de que lado (cliente ou servidor remoto) a recarga de duas horas está acontecendo. Eu tenho praticamente todas as configurações padrão no meu computador doméstico. Eu não tenho sudo no trabalho (mas eu posso conseguir um sudo para checar algo para mim às vezes) então eu não sei como é o seu sshd_config, mas eu imagino que não há nada estranho.

Alguém pode me ajudar a identificar: 1: Por que a falha "endereço já em uso" acontece e o que fazer sobre isso? e 2: Por que exatamente a diferença de duas horas e 15 segundos e o que fazer sobre isso?

    
por iammax 23.12.2016 / 01:55

1 resposta

0

Use autossh . Ele irá verificar periodicamente o túnel e, uma vez quebrado, ele se reconecta automaticamente:

autossh -M 2000 -R 49666:localhost:22 (my name@ my home ip) -N
    
por Jakuje 23.12.2016 / 11:03