it-swarm.com.de

ssh -L (Fehler: bind: Adresse wird bereits verwendet)

Ganz einfach, ich weiß, dass mir das schon mal passiert ist. Konnte keine gute Antwort auf AU finden.

Ich habe eine SSH-Sitzung mit gebundenen Ports ausgeführt:

ssh -L 3000:<server_name>:22

Ich habe gerade meine Verbindung verloren. Wenn ich versuche, die Verbindung mit demselben Befehl wiederherzustellen, wird die folgende Fehlermeldung angezeigt:

bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 3000

Wie setze ich ssh auf meinem Computer zurück, damit der Port wieder gebunden werden kann? Das Zurücksetzen des lokalen Computers funktioniert.

44
kbuilds

Könntest du nicht einfach töten, was auch immer diesen Port benutzt?

 lsof -ti:5901 | xargs kill -9

lsof -ti:5901 um herauszufinden, was auch immer den Port 5901 verwendet.

Übergeben Sie das Ganze an kill -9, um zu beenden, was auch immer den Port 5901 verwendet hat.

Ersetzen Sie ihn durch den Port, den Sie erneut öffnen möchten.

62
user974407

Ich nehme an, du hast noch etwas mit dem lokalen Port 3000 verbunden.

Sie finden es mit

netstat -tulpn | grep 3000 

und dann entsorgen. Zum Beispiel in meiner Maschine:

[:~] % netstat -tulpn | grep 5900
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      2547/vino-server
tcp6       0      0 :::5900                 :::*                    LISTEN      2547/vino-server

identifiziert den wartenden und an Port 5900 (VNC-Server) angeschlossenen Prozess korrekt.

Ein weiterer nützlicher Befehl ist

fuser 3000/tcp 

... alle müssen möglicherweise mit Sudo ausgeführt werden, wenn Ihnen der Prozess, der den Port öffnet, nicht gehört.

12
Rmano

Ich konnte es folgendermaßen wiederherstellen und beheben:

  • Öffne etwas, das deine Prozesse auflistet (ps -ae)
  • Beende den Prozess namens sh (kill <proc_number>)

Öffnen Sie dann die SSH-Verbindung erneut

Alternativ hatte ich Erfolg mit:

killall ssh

Im Terminal auf dem lokalen Rechner

5
kbuilds

ein weiterer Anwärter: ss

es kann wie folgt verwendet werden: ss -ltp | grep 3000, um das Programm zu finden, das an Port 3000 empfangsbereit ist

2
mnagel