Como permaneço conectado enquanto ClientAliveInterval está definido?

Como permaneço conectado enquanto ClientAliveInterval está definido?

Por motivos de conformidade, todos os meus servidores Debian estão configurados para atingir o tempo limite após 15 minutos usando a seguinte configuração em/etc/ssh/sshd_config

ClientAliveInterval 900
ClientAliveCountMax 0

É claro que isso torna a operação nesses servidores irritante e perigosa, pois qualquer tempo ocioso pode potencialmente desconectar.

Estou procurando um comando simples que mantenha ativa uma sessão do cliente sem modificar a configuração existente.

Responder1

Se você estiver seguindo umdiretriz de implementação técnica de segurançaatualmente afirma

ClientAliveInterval                        600
ClientAliveCountMax                        0

que irá desconectar eparadosessão ssh (ou seja, uma janela PuTTY) após 10 minutos.

No RHEL 7, os valores padrão para esses dois itens, de uma instalação limpa de rhel-server-7.9-x86_64-dvd.iso, ou centos, são 0e 3respectivamente, o que resulta em uma sessão ssh que nunca termina automaticamente.

veja para mais detalhes:https://stackoverflow.com/questions/71174746/clientaliveinterval-is-not-closing-the-idle-connection

mais relevante:Estas não são para circunstâncias de usuário ocioso, elas são - como observa o trecho da página de manual - para clientes SSH que não respondem. O cliente não responderá se o programa cliente travar ou a conexão for interrompida. O cliente não deve parar de responder simplesmente porque o usuário humano se afastou do teclado: o cliente ssh ainda receberá pacotes enviados do servidor.

Está no cliente,em putty.exe, sobConexãoeOpções para controlar a conexãosegundos entre keepalives (0 para desligar). Por padrão, é 0. Defina-o como um número menor que o ClientAliveIntervaldefinido em sshd_config.

Se não estiver usando putty.exe, do Windows, e usando ssh de outra caixa Linux, então o ssh do cliente é configurado, /etc/ssh/ssh_configno entanto, não há nenhum item correspondente que eu saiba para enviar um pacote keepalive de vez em quando.

Nota: usando putty.exe do Windows com seu keepalive padrão de 0, e o servidor ssh tendo um ClientAliveInterval definido, mesmo tendo viaberto será desconectado resultando em umperdidoarquivo que viserá recuperado por meio de seu arquivo .swp. Ou se estiver executando um programa constantemente cuspindo saída, isso é do lado do servidor e a conexão ssh será encerrada matando seu trabalho ... deve haver algo do lado do cliente (um pressionamento de tecla) que conta e causa ummantenha vivo. Portanto, com putty.exe do Windows é uma solução bastante fácil, para ssh de linux para linux não sei como evitar a desconexão sem pressionar uma tecla do teclado no lado do cliente na sessão ssh.

atualização: de linux para linux parece que você precisa usar ssh -ovárias opções. Veja para mais detalhes:Como funciona o tcp-keepalive no ssh?

por exemplo: ssh -o ServerAliveInterval=5 -o ServerAliveCountMax=1

mais ou menos como com /etc/yum.conf tendo gpgcheck=1, e apenas fazendoyum instalar --nogpgcheck :)

Responder2

Acho que você desativou a configuração definindoClienteAliveCountMaxpara0. Portanto, defini-lo como 1 deve resolver o problema.

ClienteAliveCountMax

Define o número de mensagens ativas do cliente que podem ser enviadas sem que o sshd(8) receba nenhuma mensagem do cliente. Se esse limite for atingido enquanto as mensagens ativas do cliente estiverem sendo enviadas, o sshd desconectará o cliente, encerrando a sessão. É importante observar que o uso de mensagens client alive é muito diferente do TCPKeepAlive. As mensagens ativas do cliente são enviadas através do canal criptografado e, portanto, não serão falsificáveis. A opção TCP keepalive habilitada por TCPKeepAlive é falsificável. O mecanismo de cliente ativo é valioso quando o cliente ou servidor depende de saber quando uma conexão se tornou inativa.

Oo valor padrão é 3. SeClientAliveInterval está definido como 15, e ClientAliveCountMax for deixado no padrão, os clientes SSH que não responderem serão desconectados após aproximadamente45 segundos.

Mas tenho que admitir que concordo com @TienPhan. É melhor manter a configuração fora do servidor. Ainda assim, depende do caso de uso. Se todos os usuários devem ser tratados da mesma maneira, a configuração no lado do servidor é a opção.

Responder3

Na verdade, não precisamos definir o intervalo de tempo no servidor. Mais coisas não vão te deixar feliz.

Você pode usar "ServerAliveInterval" e adicioná-lo ao arquivo ~/.ssh/config conforme abaixo:

host *
        ServerAliveInterval 120

Nota: 120 são segundos, você pode alterar o que quiser.

Então isso afeta todos os servidores neste arquivo. Ou você pode definir para servidor individual.

informação relacionada