SSH: “Conexão fechada por host remoto” aleatoriamente enquanto trabalhava em uma sessão interativa

2

Estou trabalhando em um servidor remoto, no qual faço simulação numérica usando a biblioteca de dinâmica de fluidos computacional do OpenFOAM. Eu construí uma coleção de scripts Python para automatizar meus estudos paramétricos e eles parecem estar funcionando bem.

Eu me conecto ao servidor usando o SSH e inicio os scripts em um shell interativo. Às vezes, sob condições que ainda não consigo identificar, o servidor fecha a sessão SSH. Eu atualmente uso o gerenciador de janelas screen como uma solução alternativa, mas ainda parece ser um problema para mim. Aqui está um exemplo de saída que recebo:

<lots of output before that>
Dumping up_half1 faces to "final_up_half1.obj"
Dumping cyclic match as lines between face centres to "final_up_half0up_half1_match.obj"
Writing repatched mesh to 0

End

Killing PID 32536
Connection to hpc4 closed by remote host.
Connection to hpc4 closed.
➜  ~

Por favor, note que a simulação não está completa: após o término do aplicativo que imprime End na tela, outro deve iniciar e realizar alguns tratamentos.

Então, aqui está a pergunta: qual poderia ser a causa de tais desconexões?

    
por M4urice 18.04.2014 / 18:09

2 respostas

1

Você pode evitar o problema de desconexões do servidor usando nohup . nohup executa seu comando no servidor e continua executando mesmo se o servidor desconectar. Ele salva o stdout do seu comando em um arquivo chamado nohup.out, mas você pode redirecioná-lo como quiser. Por exemplo,

nohup ./simulation > output.txt &

executará ./simulation e colocará a saída que normalmente seria impressa na tela em output.txt. Mesmo se o ssh se desconectar, ./simulation continuará sendo executado até a conclusão.

    
por 18.04.2014 / 19:02
1

Palpite:

Não há nada de errado com suas máquinas em particular, mas você está em uma rede "protegida" por um firewall que mantém trilhas de conexões tcp. Quando o firewall achar que sua conexão está ociosa por muito tempo, ela será considerada inativa. Isso significa que o firewall não acha uma boa idéia encaminhar segmentos tcp que pertencem a essa conexão, porque, do ponto de vista do firewall, não há conexão com a qual esses segmentos possam pertencer ... e sua sessão SSH time out eventualmente.

Para remediar sua situação, você pode fazer com que seu cliente SSH envie um segmento vazio de vez em quando, para lembrar o firewall, de que você tem uma sessão ativa em um host remoto. Você pode fazer isso com a opção ServerAliveInterval , conforme descrito aqui .

Como você está usando a tela: Certa vez, tive o mesmo problema, mas acidentalmente corrigi-lo, quando adicionei um relógio à minha linha de hardstatus, que faz a atualização da tela da linha de hardstatus de forma automática a cada minuto.

Uma sobre o mínimo de trabalho ~/.screenrc que faz isso deve ser:

hardstatus alwayslastline
hardstatus string '%=[%Y-%m-%d %c ]'

(adotado de Red Hat Magazine )

    
por 18.04.2014 / 21:32

Tags