Executando o túnel ssh em um loop; péssima ideia? Porto já em uso?

2

Eu configurei um túnel ssh a partir de um servidor que está fisicamente localizado onde eu trabalho (ele roda o CentOS) em casa (Ubuntu) para que eu possa efetuar login no meu túnel de trabalho a partir de casa usando um comando como esse no computador de trabalho :

ssh -R 49666:localhost:22 homename@homeIP -N

Eu fiz as chaves, etc. Eu saí do trabalho para casa, e depois, remotamente, no meu computador de casa, o ssh voltou ao trabalho para testá-lo. Parecia bem, funcionou. Eu poderia arquivos scp nos dois sentidos, etc.

Quando voltei para casa, descobri que o túnel havia fechado por algum motivo. Eu não consegui descobrir o porquê. Mais tarde, perguntei a um colega de trabalho sobre isso e ele disse que tinha o mesmo problema e usa um script como esse rodando constantemente em seu computador de trabalho:

while true
 ssh -R 49666:localhost:22 homename@homeIP -N
 sleep 15

Ele basicamente tem essa corrida em perpidade, a fim de reiniciar um túnel quebrado automaticamente quando ele quebra.

Eu também tentei isso, fiz o teste (sshed do trabalho para casa enquanto fisicamente trabalhava remotamente usando meu computador de casa) e parecia bem novamente. Mas, novamente, quando fui para casa, o túnel não funcionou. Eu olhei pelo auth.log e encontrei essas três linhas no mesmo timestamp, que seria quando eu estava no meio do caminho para casa:

Accepted publickey from work IP (I erased the rest for my privacy)
error: bind: Address already in use
error: channel_setup_fwd_listener_tcpip: cannot listen to port: 49666

Parece que tentou vincular meu túnel à porta 49666 enquanto algo estava sendo usado. Ok, eu entendo porque isso falharia. Então eu tentei encontrar o que está usando a porta 49666 para poder matá-lo. Mas nada parece ser. Eu tentei netstat, lsof, etc Nada está usando a porta 49666. Eu não acho que nada usa a porta 49666 exceto o túnel. Será que fez o túnel quando o túnel já existia? Ou se o túnel já existisse, o roteiro de tunelamento simplesmente não faria nada?

Como nada está usando a porta 49666, eu esperaria que o túnel fosse restabelecido automaticamente quando o script de túnel no meu computador de trabalho passasse pelo loop novamente, mas não parece que está.

Existe uma maneira de resolver isso sem voltar fisicamente ao servidor no trabalho? Ou, pelo menos, resolvê-lo com apenas um ajuste para que eu não tenha que voltar regularmente?

O servidor nunca é desligado, portanto, em teoria, o script em loop ainda deve estar funcionando. Mas terminaria se não conseguir fazer o túnel, talvez?

    
por iammax 22.12.2016 / 03:47

0 respostas