Ich benutze viele SSH-Tunnel zu verschiedenen Servern auf meinem Linux-Rechner (zum Tunneln zu Datenbanken, Webservern usw.) und es wäre sehr praktisch, eine Liste der aktuellen offenen Tunnel über ein Shell-Skript anzuzeigen.
Ich kann lokale Verbindungen über ein grep auf netstat identifizieren, und zwar wie folgt:
netstat -n --protocol inet | grep ':22'
Dies zeigt mir jedoch nicht, mit welchem Remote-Port er verbunden ist (und enthält offensichtlich Standard-SSH-Verbindungen, die nicht getunnelt sind).
UPDATE : Die Antworten sind in Ordnung, zeigen mir jedoch nicht den Remote-Port, mit dem ich verbunden bin. ZB habe ich oft einen Tunnel durch zu MySQL, sagen wir localhost: 3308 Mapping zu: 3306 auf dem Server. Normalerweise kann ich anhand der von mir ausgewählten lokalen Ports raten, wäre aber nett, Zugang zu beiden zu haben.
Irgendwelche Ideen?
quelle
Antworten:
wenn Sie nur Tunnel auflisten möchten, die erstellt wurden von
ssh
:(das wäre ein -L 9090: localhost: 80 tunnel)
Wenn Sie die Tunnel / Verbindungen zu einem sehen möchten
sshd
:der ssh-daemon lauscht auf port 22 (letzte zeile), es werden 2 subprozesse erzeugt (erste 2 zeilen, login von 'user'), ein -R tunnel auf port 5000 erstellt und ein -L tunnel, der einen port von my ( local) machine to localhost: 80 (www).
quelle
Versuchen Sie diesen Befehl, es könnte nützlich sein:
quelle
Nicht gerade die Lösung für Ihr Problem, aber manchmal auch praktisch:
Aus einer SSH-Sitzung heraus:
zeigt Ihnen eine Liste aller offenen Verbindungen über Ihre Tunnel für diese Sitzung.
quelle
BEARBEITEN: Beispiel für @akira Kommentar:
Dies kann wie folgt gelesen werden: SSH (nicht SSHd) überwacht den lokalen TCP-Port 1443.
quelle
-p
nur Ihre eigenen Prozesse angezeigt werden (alle Prozesse von root). Dieser Befehl wird auchsshd
angezeigt.-l
-R
Tunnel nicht lokal sehen , wenn sie nicht verwendet werden. Aber richtig, wenn im Einsatz, können Sie sie ohne die-l
Dies ist das Top-Google-Ergebnis für diese Frage. Ich werde meine Antwort hier einfügen. Ich bin die ganze Nacht wach geblieben, um die Ergebnisse zu filtern, und habe einen langen, komplexen Befehl gefunden, der Ihnen nur Ihre Reverse-SSH-Tunnel in diesem Format anzeigt:
publicipaddress: remoteforwardedport
Hier ist der Code: Ich verwende Ubuntu Server 12. Ich verwende Reverse-SSH-Tunnel, die den lokalen Port 5900 an meinen öffentlichen SSH-Server weiterleiten, und dieser raffinierte Befehl zeigt alle meine öffentlichen IP-Adressen mit dem Remote-Port an.
quelle
Beispielausgabe:
quelle
quelle
quelle
Da ich lsof nicht mag, schlage ich eine alternative Methode vor (ein anderer Typ hat es mir beigebracht :)):
$ netstat -l | grep ssh
Auf diese Weise zeigen Sie die von Ihnen erstellten SSH-Tunnel an
ssh
, die im LISTEN-Modus geöffnet sind (und standardmäßig weggelassen werdennetstat
).quelle