Sempre que tenho uma conexão X11 em segundo plano em uma sessão SSH, devo usar ~.
e não exit
sair da sessão ssh.
Qual é a diferença aqui? Posso sempre usar a sequência de escape ~.
?
exit
diz ao seu shell atual para sair. Como (quando não há uma conexão em túnel, por exemplo, X11, ativa), isso significa que o processo que o sshd chamou no lado do servidor saiu, o SSH se desconecta.
~.
é a sequência de escape "mágica" que o SSH captura e desconecta imediatamente (incluindo o túnel X11).
Portanto, não, estes não são intercambiáveis. Se você deseja que seu shell remoto (ou qualquer programa que esteja sendo executado remotamente) saia normalmente, você deve finalizá-lo de acordo.
Já está bem descrito na outra resposta, mas gostaria de acrescentar alguns antecedentes:
Hoje, a conexão SSH única pode conter várias sessões (suas conchas, comando), canais de encaminhamento TCP e canais de encaminhamento X11 . E aí vem a diferença:
A gravação exit
(ou Ctrl+ D) interrompe o canal da sessão , mas se houver alguns canais X11 ativos (por exemplo, gvim
deixa várias conexões com o servidor X que manipula a área de transferência e o título , que não é fechado por exit
). A gravação exit
deixará o aplicativo X11 em execução e o terminal "travará" até que seja fechado.
Escrever ~.
rasga toda a conexão . Você pode perceber que, se você executar algum aplicativo X11, ele também será fechado quando você escrever ~.
.