Ilekroć mam połączenie X11 w tle w sesji SSH, muszę używać ~.
i nie exit
wychodzić z sesji ssh.
Jaka jest tutaj różnica? Czy zawsze mogę użyć sekwencji ucieczki ~.
?
exit
każe twojej bieżącej powłoce zakończyć. Ponieważ (gdy nie ma połączenia tunelowanego, np. X11, aktywne) oznacza to, że proces wywołany przez sshd po stronie serwera zakończył się, SSH rozłącza się.
~.
to „magiczna” sekwencja ucieczki, którą SSH przechwytuje i natychmiast rozłącza (w tym tunel X11).
Więc nie, nie można ich zamieniać. Jeśli chcesz, aby zdalna powłoka (lub jakikolwiek program działa zdalnie) z wdziękiem zakończyła działanie, powinieneś ją odpowiednio zakończyć.
Jest to dobrze opisane już w innej odpowiedzi, ale dodałbym trochę tła:
Pojedyncze połączenie SSH może dziś zawierać kilka sesji (twoje powłoki, polecenia), kanały przesyłania TCP i kanały przesyłania X11 . I pojawia się różnica:
Zapisywanie exit
(lub Ctrl+ D) powoduje zniszczenie kanału sesji , ale jeśli są aktywne, niektóre kanały X11 (na przykład gvim
pozostawiają kilka połączeń z X serwerem obsługującym schowek i tytuł , który nie jest zamykany exit
). Pisanie exit
sprawi, że ta aplikacja X11 będzie działać, a terminal „zawiesi się”, dopóki nie zostanie zamknięty.
Zapisywanie ~.
zrywa całe połączenie . Możesz zauważyć, że jeśli uruchomisz jakąś aplikację X11, która jest również zamykana podczas pisania ~.
.