Chaque fois que j'ai une connexion X11 en arrière-plan dans une session SSH, je dois utiliser ~.
et ne exit
pas quitter la session ssh.
Quelle est la différence ici? Puis-je toujours utiliser la séquence d'échappement ~.
?
exit
indique à votre shell actuel de quitter. Puisque (quand il n'y a pas de connexion tunnelée, par exemple X11, active) cela signifie que le processus que sshd a appelé côté serveur s'est arrêté, SSH se déconnecte alors.
~.
est la séquence d'échappement "magique" que SSH capture et déconnecte immédiatement (y compris le tunnel X11).
Donc, non, ce ne sont pas interchangeables. Si vous souhaitez que votre shell distant (ou tout autre programme exécuté à distance) se termine correctement, vous devez le terminer en conséquence.
Il est déjà bien décrit dans l'autre réponse, mais j'ajouterais un peu de contexte:
Aujourd'hui, une seule connexion SSH peut contenir plusieurs sessions (vos shells, commande), des canaux de transfert TCP et des canaux de transfert X11 . Et voici la différence:
L'écriture exit
(ou Ctrl+ D) détruit le canal de session , mais s'il y a des canaux X11 actifs (par exemple, gvim
laisse plusieurs connexions au serveur X gérant le presse-papiers et le titre , qui n'est pas fermé par exit
). L'écriture exit
laissera cette application X11 en cours d'exécution et votre terminal "se bloquera" jusqu'à sa fermeture.
L'écriture ~.
détruit toute la connexion . Vous pouvez remarquer si vous exécutez une application X11, qu'elle est également fermée lorsque vous écrivez ~.
.