Quelle est la difference entre ~. (point tilde) et «exit» lors de la fermeture d'une connexion SSH

12

Chaque fois que j'ai une connexion X11 en arrière-plan dans une session SSH, je dois utiliser ~.et ne exitpas quitter la session ssh.

Quelle est la différence ici? Puis-je toujours utiliser la séquence d'échappement ~.?

Hải Phong
la source

Réponses:

7

exitindique à 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.

Marcus Müller
la source
5

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, gvimlaisse plusieurs connexions au serveur X gérant le presse-papiers et le titre , qui n'est pas fermé par exit). L'écriture exitlaissera 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 ~..

Jakuje
la source