Jaka jest różnica między ~. (kropka tyldy) i „exit” przy wychodzeniu z połączenia SSH

12

Ilekroć mam połączenie X11 w tle w sesji SSH, muszę używać ~.i nie exitwychodzić z sesji ssh.

Jaka jest tutaj różnica? Czy zawsze mogę użyć sekwencji ucieczki ~.?

Hải Phong
źródło

Odpowiedzi:

7

exitkaż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ć.

Marcus Müller
źródło
5

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 gvimpozostawiają kilka połączeń z X serwerem obsługującym schowek i tytuł , który nie jest zamykany exit). Pisanie exitsprawi, ż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 ~..

Jakuje
źródło