Antworten:
Wenn Sie Linux verwenden, können Sie den Prozess abbrechen, indem Sie:
ps aux | grep ssh
und dann verwenden
kill <id>
Den Prozess abbrechen.
Wenn der Befehl kill nicht erfolgreich ist, können Sie es versuchen
kill -9 <id>
kill -9
bis Sie gerade versucht haben kill
. Viele Prozesse verfügen über Signal-Handler, die den Ressourcenverbrauch bereinigen, Verbindungen sauber schließen und andere Aufgaben vor dem Herunterfahren ausführen. Wenn Sie mit -9 beenden, wird der Vorgang sofort abgebrochen, ohne dass die Bereinigung durchgeführt wird. Töten ohne -9 wird die meiste Zeit arbeiten.
kill -9
ohne Grund ist wie mit einer Schrotflinte eine Mücke zu töten. :)
pgrep ssh | xargs kill
. Verwenden Sie nicht -9
für nichts in der Tat
ssh
Befehl haben oder dass alle ssh
Befehle, die Sie ausführen, in Ordnung sind, um zu töten. Dies ist kaum eine gute allgemeine Annahme.
ssh
ganze Zeit mit mehreren Instanzen auf mehreren Remote-Servern, einige davon ohne meine direkte aktive Beteiligung. Beispielsweise öffnet der Emacs Tramp-Modus eine ssh
Verbindung hinter den Kulissen, wenn ich einen Remote-Puffer besuche. Einige Leute benutzen Userspace-Dateisysteme, die etwas Ähnliches tun. Es ist überhaupt nicht ungewöhnlich. In der Tat würde ich davon ausgehen, dass ein einzelner Benutzer, eine einzelne ssh
Instanz, ein Anwendungsfall für einen Rand der Minderheit ist. Wenn es für Sie funktioniert, ist es gut für Sie, aber es ist kein guter allgemeiner Rat.
Wenn Sie ssh-Multiplexing verwenden, ist das Beenden des ssh-Prozesses häufig unerwünscht (es beendet alle offenen Verbindungen mit diesem Host), und Sie können nicht einfach auf das Escape zugreifen, da "Escape für Multiplexing-Sitzungen nicht verfügbar". Der richtige Weg ist dann, das Analogon des Weiterleitungsbefehls auszuführen, den Sie abbrechen möchten, aber hinzuzufügen -O cancel
. Zum Beispiel:
ssh -O cancel -L 10002:192.168.0.30:10002 192.168.1.135
Dadurch wird die Portweiterleitung deaktiviert, ohne die Sitzung zu beenden. Auch dies funktioniert nur, wenn für die Verbindung zu 192.168.1.135 das ssh-Multiplexing verwendet wird .
ssh -O exit 192.168.1.135
.
Sie können die "Escape-Taste" (normalerweise ~) gefolgt von C verwenden, um einen Cli für Ihre Verbindung zu erhalten. Von dort aus können Sie Tunnel entfernen, ohne die Verbindung zu trennen.
So brechen Sie einen weitergeleiteten Port in einer bereits laufenden SSH-Sitzung ab:
-KL port
Das solltest du sehen:
ssh> -KL 10002
Canceled forwarding.
Sie können eine interaktive Konsole durch Eingabe von ~C(Großbuchstabe "C") aufrufen . Auf diese Weise können Sie (unter anderem) dynamisch Portweiterleitungen hinzufügen und entfernen.
Diese Reihenfolge muss unmittelbar nach einem Wagenrücklauf / Zeilenumbruch erfolgen. Geben Sie im Zweifelsfall einfach Enter~C(nacheinander) ein.
Wenn Sie die Zeichen nicht auf der Konsole sehen, machen Sie es richtig :)
Sie sollten jetzt eine ssh>
Eingabeaufforderung sehen.
Um den Port zu entfernen, geben Sie einfach -KL 10002
gefolgt von ein Enter(wo 10002
ist Ihr weitergeleiteter Port).
Das Inverse - Hinzufügen eines neuen Forward - kann folgendermaßen erfolgen (von Anfang bis Ende):
Enter~C
ssh> -L 10002:192.168.0.30:10002
Enter
~C escape not available to multiplexed sessions
. Wenn dies der Fall ist, lesen Sie die ausgezeichnete Antwort von a3nm.
Warning: remote port forwarding failed for listen port
Nachricht abgerufen wird.