Como posso terminar o encaminhamento de porta na conexão com o cano quebrado?

0

Eu estou em uma conexão que continua caindo que é irritante, mas eu não posso fazer muito sobre isso atm. Estou me conectando ao SSH usando -R 9000: localhost: 9000 (para depurar com xdebug).

O problema é que quando eu me desconecto e reconecto, o servidor ainda vê a conexão anterior na porta 9000, e quando tento carregar uma página da Web, o servidor está tentando enviar dados XDEBUG para a conexão SSH morta.

Se eu executar netstat -nlp | grep 9000 , posso ver que há uma conexão antiga aberta e posso matá-la. Se eu me reconectar depois disso, o encaminhamento de porta vai para a nova conexão e tudo começa a funcionar novamente.

Existe alguma maneira de o servidor matar esse processo quando há um cano quebrado? (Estou pensando que talvez não saiba que a conexão está quebrada)

OR

Existe uma maneira que quando eu conecto de volta ao SSH com o encaminhamento de porta para a mesma porta ele reconhecerá que já existe outra conexão aberta (a conexão inativa) e mata esse processo para que a nova conexão aceite o encaminhamento de porta ?

    
por DAB 26.07.2016 / 21:45

1 resposta

0

Eu acredito que isso funcionará (trabalhei em meus experimentos, embora eu pudesse interromper a conexão manualmente, então não tenho certeza se repliquei exatamente o cenário do seu pipe quebrado):

ssh -o ExitOnForwardFailure=true -R 9000:localhost:9000 -Nf remote-server

O principal truque é que você está criando uma conexão ssh "independente" apenas para o propósito de encaminhamento de porta e colocando-a em segundo plano ( -Nf options). Desta forma, quando a conexão termina (tubo quebrado, por exemplo), deve liberar a porta.

A opção ExitOnForwardFailure está lá apenas para que, na próxima vez que você tentar fazer uma conexão, você veja no STDOUT o fato de que a porta ainda está aberta no servidor. Se você ainda precisa fazer algo mais complicado para matar manualmente a conexão no servidor, você pode usar o código de saída de uma falha ssh com a opção ExitOnForwardFailure para fazer algo mais complicado.

    
por 27.07.2016 / 17:26