Estou me conectando via SSH do PuTTY em execução no Windows 10 a um servidor OpenSSH no Rocky Linux 8. Estou usando o shell Bash . Essas sessões são encerradas após um período de inatividade. Não medi o tempo limite, mas parece ser da ordem de um pequeno número de horas. Estou tentando entender como essas sessões estão sendo encerradas. Vou explicar abaixo as causas potenciais que eu descartei.
sshd_config ClientAliveInterval
/etc/ssh/sshd_config foi ClientAliveInterval
definido como 0 .
Variável de ambiente Bash TMOUT
Eu procurei TMOUT
em todos os arquivos regulares em todo o sistema de arquivos. Essa variável de ambiente não está definida em nenhum lugar.
Infraestrutura de rede
Ocorreu-me que talvez um firewall entre meu cliente e servidor possa estar monitorando conexões e fechando ativamente (via TCP FIN , talvez) aquelas que estão ociosas há algum tempo. Eu descartei essa possibilidade observando que as sessões do mesmo host Windows para outros hosts Linux (não Rocky 8) não fecham. Esses outros hosts estão atrás do mesmo firewall que o host Rocky 8 problemático e também possuem ClientAliveInterval
e são TMOUT
configurados conforme descrito acima.
Peça ajuda
Que outros mecanismos podem estar fechando as sessões devido à inatividade?
Agradeço antecipadamente.
Isso quase certamente está acontecendo porque a conexão está ociosa e a pilha TCP está redefinindo a conexão ociosa. Pode ser que outras distribuições Linux definam esses valores de maneira diferente ou estejam usando versões de kernel diferentes com configurações diferentes, e é por isso que você está vendo apenas um problema com o Rocky Linux 8.
A solução aqui é definir
ClientAliveInterval
algo diferente de zero. 30, por exemplo, seria um bom valor. Embora isso pareça contra-intuitivo, isso faz com que os dados sejam enviados em um canal ocioso, impedindo que o sistema operacional feche a conexão. Agora, se a conexão cair por qualquer motivo, isso será detectado mais cedo do que antes, mas você teria desconectado a conexão de qualquer maneira, e não há como evitar que isso seja detectado mais cedo ou mais tarde.