O processo SSH não é morto na máquina remota quando o sistema remoto desconecta inesperadamente

8

Eu tenho uma pergunta para a qual não consegui encontrar uma resposta. Eu tenho dois computadores, ambos rodando o Ubuntu 12.04. Eu mantenho um dos meus computadores em casa e uso o SSH para me conectar a ele do outro computador ("remoto"). O computador remoto é capaz de se conectar ao computador doméstico sem problemas. O computador remoto também tem SetAliveInterval definido como 60 em / etc / ssh / ssh_config, para que a conexão não morra se eu me afastar do computador por um momento.

Ocasionalmente, minha conexão com a Internet no meu computador remoto é interrompida. Interrupções na Internet fazem com que meu túnel SSH feche (é claro). Quando restaurei a conectividade com a Internet e reconectei-me ao computador doméstico usando um novo túnel SSH, posso ver usando #ps ax que o antigo processo de conexão SSH ainda está em execução. Isso é um problema porque eu uso um diretório pessoal criptografado no computador doméstico, que não permite que os arquivos sejam criptografados novamente até que a conexão SSH (agora morta) seja eliminada.

Existe uma maneira de definir o sshd_config no computador doméstico para que ele detecte automaticamente quando uma conexão morreu e a encerre?

    
por J L 26.12.2012 / 01:00

2 respostas

5

Tente tela ou tmux . No lado do servidor, ou ambos os lados, se você quiser:

sudo apt-get install tmux

Após o login, inicie tmux .

tmux

Se a conexão quebrar, efetue login novamente por ssh e reconecte a sessão tmux . Para descobrir o número da sessão:

tmux ls

A saída pode ser algo assim:

0: 1 windows (criado em 25 de dezembro às 19:20:40 de 2012)

Conecte-se à sessão numerada do tmux como esta:

tmux attach -t 0

Então você está de volta onde você a deixou. Você não terá que matar as sessões. Eles apenas aguardam sua próxima visita. Ou, se você quer apenas matar a sessão ...

No lado do servidor, veja a configuração /etc/ssh/sshd_config para ClientAliveInterval e ClientAliveCountMax . ( man 5 ssh_config )

ClientAliveInterval 300
ClientAliveCountMax 0

Depois que eles forem alterados de acordo com sua preferência, reinicie o servidor SSH.

sudo /etc/init.d/ssh restart

O 300 é segundos (cinco minutos).

    
por user8290 26.12.2012 / 01:23
1

Você pode tentar mosh , um substituto para o SSH construído em cima do SSH. Ele oferece suporte e roaming e conectividade intermitente, para que sua sessão Mosh (SSH) continue de onde você parou sempre que a conexão com a Internet for restabelecida após uma interrupção.

Você precisará instalar o Mosh nas duas máquinas.

Referências:

por Flimm 19.02.2013 / 09:28

Tags