Was ist der Unterschied zwischen ~. (Tilde-Punkt) und "Beenden" beim Beenden einer SSH-Verbindung

12

Immer wenn ich in einer SSH-Sitzung eine X11-Verbindung im Hintergrund habe, muss ich die SSH-Sitzung verwenden ~.und darf sie nicht exitbeenden.

Was ist der Unterschied hier? Kann ich immer die Escape-Sequenz verwenden ~.?

Hải Phong
quelle

Antworten:

7

exitWeist Ihre aktuelle Shell an, das Programm zu beenden. Da (wenn keine getunnelte Verbindung vorhanden ist, z. B. X11, aktiv) dies bedeutet, dass der Prozess, den sshd auf der Serverseite aufgerufen hat, beendet wurde, wird SSH dann getrennt.

~. ist die "magische" Escape-Sequenz, die SSH erfasst und sofort trennt (einschließlich des X11-Tunnels).

Also, nein, diese sind nicht austauschbar. Wenn Sie möchten, dass Ihre Remote-Shell (oder ein anderes Programm, das remote ausgeführt wird) ordnungsgemäß beendet wird, sollten Sie sie entsprechend beenden.

Marcus Müller
quelle
5

Es ist bereits in der anderen Antwort gut beschrieben, aber ich möchte einige Hintergrundinformationen hinzufügen:

Eine einzelne SSH-Verbindung kann heute mehrere Sitzungen (Ihre Shells, Befehl), TCP-Weiterleitungskanäle und X11-Weiterleitungskanäle enthalten. Und da kommt der Unterschied:

  • Durch Schreiben exit(oder Ctrl+ D) wird der Sitzungskanal heruntergefahren , aber wenn einige X11-Kanäle aktiv sind (z. B. bleiben gvimmehrere Verbindungen zum X-Server, der die Zwischenablage und den Titel verarbeitet , der nicht geschlossen ist exit). Durch das Schreiben exitbleibt diese X11-Anwendung ausgeführt und Ihr Terminal bleibt "hängen", bis es geschlossen wird.

  • Das Schreiben ~.reißt die ganze Verbindung ab . Wenn Sie eine X11-Anwendung ausführen, können Sie feststellen, dass diese auch beim Schreiben geschlossen wird ~..

Jakuje
quelle