behavior of ServerAliveInterval com conexão ssh

0

Usando ssh Eu estou registrando em outro sistema e executando scripts lá que criam novas máquinas e fazem algumas configurações. Demora cerca de 7-8 horas. Então, o que aconteceu é que a conexão ssh continua caindo e eu sempre fico sem tempo 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 é depois de algumas conexões ssh, estou recebendo erro:

too many logins of user e as conexões após o ssh estão sendo fechadas logo após os logins bem-sucedidos.

Então, é o comportamento do ServerAliveInterval , que mantém a sessão de login do usuário ssh na máquina remota viva mesmo depois que o trabalho ssh acabou e é por isso que meus logins adicionais estão desconectados?

    
por kumarprd 22.10.2016 / 05:10

2 respostas

0

Não acho que isso mantenha uma sessão ativa, caso seu cliente perca a conexão. Provavelmente é o lado do servidor dessas opções:

ClientAliveCountMax

Sets the number of client alive messages which may be sent without sshd(8) receiving any messages back from the client. If this threshold is reached while client alive messages are being sent, sshd will disconnect the client, terminating the session. It is important to note that the use of client alive messages is very different from TCPKeepAlive. The client alive messages are sent through the encrypted channel and therefore will not be spoofable. The TCP keepalive option enabled by TCPKeepAlive is spoofable. The client alive mechanism is valuable when the client or server depend on knowing when a connection has become inactive.

The default value is 3. If ClientAliveInterval is set to 15, and ClientAliveCountMax is left at the default, unresponsive SSH clients will be disconnected after approximately 45 seconds.

ClientAliveInterval

Sets a timeout interval in seconds after which if no data has been received from the client, sshd(8) will send a message through the encrypted channel to request a response from the client. The default is 0, indicating that these messages will not be sent to the client.

( man sshd_config)

Talvez a solução real para o seu problema esteja no uso de um multiplexador de terminal como o screen ou o tmux. Eles permitem que o seu login e os programas em execução durem mesmo se a conexão cair. Você pode reconectar-se ao terminal em qualquer ponto posterior, 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 pode ser útil também. Você pode encontrar uma introdução à tela aqui , mas há muitos outros por aí.

    
por 22.10.2016 / 08:43
0

So is it the behavior of the ServerAliveInterval, that keeps the ssh user login session in remote machine alive even after ssh work is over and that's why my further logins are disconnected ?

Não. Isso está enviando mensagens keepalive que verifica sua conexão e evita desconexões automáticas no SSH ou em níveis inferiores. Se você quiser iniciar scripts de longa execução, use nohup , screen ou tmux no lado remoto. Ele manterá seus scripts em execução mesmo após a desconexão e, com os segundos dois, você poderá reconectar os terminais existentes.

    
por 22.10.2016 / 11:01