comportamento de ServerAliveInterval com conexão ssh

comportamento de ServerAliveInterval com conexão ssh

Usando o ssh, estou logando em outro sistema e executando scripts que criam novas máquinas e faço algumas configurações. Demora cerca de 7 a 8 horas. Então o que aconteceu é que a conexão ssh continua caindo e sempre recebo tempo limite com a execução malsucedida do script.

Então agora estou usando este argumento junto com a conexão ssh:

ssh -o ServerAliveInterval=60 user@host ....

Este ssh é gerado várias vezes. O problema é que depois de algumas conexões ssh, estou recebendo um erro:

too many logins of usere as conexões ssh posteriores são fechadas logo após logins bem-sucedidos.

Então é o comportamento doServerAliveInterval, que mantém ativa a sessão de login do usuário ssh na máquina remota, mesmo após o término do trabalho do ssh e é por isso que meus logins adicionais são desconectados?

Responder1

Não acho que isso mantenha uma sessão ativa, se o seu cliente perder a conexão. Provavelmente são essas opções do lado do servidor:

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.

O valor padrão é 3. Se ClientAliveInterval for definido como 15 e ClientAliveCountMax for deixado no padrão, os clientes SSH que não responderem serão desconectados após aproximadamente 45 segundos.

ClienteAliveInterval

Define um intervalo de tempo limite em segundos após o qual, se nenhum dado for recebido do cliente, o sshd(8) enviará uma mensagem através do canal criptografado para solicitar uma resposta do cliente. O padrão é 0, indicando que essas mensagens não serão enviadas ao cliente.

(cara sshd_config)

Talvez a verdadeira solução para o seu problema esteja no uso de um multiplexador de terminal como screen ou tmux. Eles permitem que seu login e os programas em execução durem mesmo se sua conexão cair. Você pode reconectar-se ao terminal a qualquer momento, incluindo a saída dos programas em execução. Além disso, você pode usá-lo para ter mais de um terminal em sua única conexão ssh. Como o seu servidor parece limitar suas sessões ssh, isso também pode ser útil. Você pode encontrar umintrodução à tela aqui, mas existem muitos outros por aí.

Responder2

Então é o comportamento do ssh ServerAliveIntervalque mantém ativa a sessão de login do usuário ssh na máquina remota, mesmo após o término do trabalho do ssh e é por isso que meus logins adicionais são desconectados?

Não. Isso significa enviar mensagens de manutenção de atividade que verificam sua conexão e evitam desconexões automáticas em SSH ou em níveis inferiores. Se quiser iniciar scripts de longa execução, você deve usar nohup, screenou tmuxno lado remoto. Ele manterá seus scripts em execução mesmo após a desconexão e com os dois segundos, você poderá reconectar os terminais existentes.

Responder3

Você provavelmente está recebendo esses erros após ativar ServerAliveInterval=60porque suas conexões permanecem ativas. Seu padrão de conexões/comandos ssh para esse servidor está acumulando mais conexões simultâneas do que o servidor está configurado para permitir.

Suas conexões costumavam morrer, fazendo com que sua contagem de conexões simultâneas fosse menor, e o servidor ficava satisfeito com isso (sem conexões rejeitadas), mas você não estava satisfeito.

Descubra a configuração desse servidor em relação à contagem máxima de conexões simultâneas e fique dentro desse limite ou negocie com o administrador do servidor para aumentar o limite para você (ou talvez até para todos).

informação relacionada