Há um atalho de teclado "secreto" para forçar uma saída: ~) Na sessão congelada, pressione estas teclas na ordem: Enter~.O til (somente após uma nova linha) é reconhecido como uma sequência de escape pelo cliente ssh, e o período informa o cliente para encerrar seus negócios sem mais delongas.
O comportamento de longo prazo em questões de comunicação não é um bug, a sessão SSH está esperando que o outro lado volte. Se a rede quebrar, às vezes até dias depois, você poderá recuperar uma sessão SSH. Claro que você pode dizer especificamente para desistir e morrer com a sequência acima. Também existem várias coisas que você pode fazer, como definir intervalos de manutenção em seu cliente para que, se ele não tiver um link ativo por um certo período de tempo, ele desligue por conta própria, mas o comportamento padrão seja permanecer conectado quanto possível!
Edit: Outra aplicação útil dessa chave de interrupção é chamar a atenção do cliente ssh local e colocá-lo em segundo plano para retornar ao shell local por um minuto - diga para obter algo do seu histórico - e force-o para continuar trabalhando remotamente. Enter~ Ctrl+ Zpara enviar o cliente ssh para a fila de trabalhos em segundo plano do shell local e fg
, normalmente, para recuperá-lo.
Editar: ao lidar com sessões SSH aninhadas, você pode adicionar vários caracteres til para interromper apenas uma das sessões SSH da cadeia, mas manter as outras. Por exemplo, se você estiver aninhado em 3 níveis (por exemplo, você ssh de local-> Máquina1-> Máquina2-> Máquina3), Enter~.retornará à sua sessão local, Enter~~.o deixará na Máquina1 e Enter~~~.o deixará na Máquina2 . Isso também funciona para outras seqüências de escape, como mover temporariamente a sessão ssh para o segundo plano. O acima funciona para qualquer nível de aninhamento, adicionando apenas mais til.
Por fim, você pode usar Enter~?para imprimir um menu de ajuda dos comandos de escape disponíveis.
TL; DR - os comandos de escape suportados são Sequências de escape suportadas:
~. - terminate connection (and any multiplexed sessions)
~B - send a BREAK to the remote system
~C - open a command line
~R - request rekey
~V/v - decrease/increase verbosity (LogLevel)
~^Z - suspend ssh
~# - list forwarded connections
~& - background ssh (when waiting for connections to terminate)
~? - this message
~~ - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)