Como a conexão SSH sobrevive a uma reinicialização da rede?

62

Em um shell SSH do Linux, digite /etc/init.d/network restart para reiniciar o serviço de rede.

Espero que minha conexão SSH morra desde que o serviço de rede falhe. Mas isso não acontece. Muito legal. Mas como o Linux consegue isso? Como ele mantém minha conexão SSH ativa durante a reinicialização do serviço?

    
por Serge Wautier 25.12.2011 / 16:08

2 respostas

69

Ele faz isso sem fazer nada de especial. A rede reinicia em menos tempo do que a conexão TCP demora para expirar, portanto a conexão TCP sobrevive à "interrupção" da mesma maneira que sobreviveria a qualquer interrupção de rede temporária.

A única razão pela qual o Windows não faz a mesma coisa é porque o Windows redefine especificamente as conexões TCP quando uma interface de rede fica inativa. Isso é, pelo menos sem dúvida, uma coisa muito complicada de se fazer porque o TCP foi especificamente projetado para resistir a interrupções de rede temporárias.

    
por 25.12.2011 / 20:38
11

O SSHD bifurca um processo filho na conexão. Esse processo filho não morrerá se o SSHD ou toda a rede for reiniciada. Esta é a razão pela qual você pode atualizar o ssh e / ou sua configuração, fazer um service sshd restart e continuar conectado à sua antiga sessão ssh com as configurações antigas. Além disso, o ssh se recupera bem de pequenas interrupções de rede.

    
por 25.12.2011 / 21:29