Como posso me livrar de uma sessão SSH que caiu?

61

Muitas vezes, tenho uma sessão SSH que não responde mais (por exemplo, quando perco a conexão com a internet e depois reconecto). Ctrl + C , Ctrl + D , Ctrl + Z e um zilhão de pressionamentos de teclas não têm nenhum efeito.

Na maior parte do tempo, já tenho tmux ou byobu em execução, por isso posso apenas iniciar outro terminal e voltar a ligar. No entanto, parece incômodo. Como posso desconectar o SSH do terminal atual?

    
por phunehehe 29.05.2011 / 15:40

3 respostas

84

Use o "caractere de escape" (normalmente, o til ~ ) para controlar uma sessão SSH:

  • ~ seguido por . fecha a conexão SSH;
  • ~ seguido por Ctrl + Z suspende o processo SSH;
  • ~ seguido por outro ~ envia um literal ~ .

Você pode definir o caractere de escape usando a opção -e para ssh .

Além disso, lembre-se de que

You should also remember to press Enter before ~. The escape character works when it is the first character in the line. And also you can use ~ and later ? to get help from the ssh client. (Thanks to the comment by Lukasz Stelmach.)

    
por 29.05.2011 / 16:38
1

Openssh pode ser configurado para enviar mensagens ativas de cliente ou servidor para o outro lado. Se nenhuma resposta for obtida, a conexão será finalizada. Do lado do servidor, veja as opções ClientAliveInterval e ClientAliveCountMax config. Do lado do cliente, consulte as opções ServerAliveInterval e ServerAliveCountMax . TCPKeepAlive também é uma opção, mas é spoofable enquanto as opções anteriores não são, então provavelmente são melhores.

Se você definir esses valores como razoáveis, provavelmente nunca mais terá uma conexão interrompida. A única desvantagem é que suas conexões ssh podem permanecer abertas se você preferir que elas sejam encerradas, por motivos de segurança.

Veja a página de manual de configuração do sshd do OpenSSH e o página man do OpenSSH ssh config para posterior infração.

    
por 29.05.2011 / 17:28
-4

Tente Ctrl + Quebra

    
por 29.05.2011 / 18:18

Tags