ssh -L (erreur: bind: adresse déjà utilisée)

29

Assez simple, je sais que cela m’est déjà arrivé. Impossible de trouver une bonne réponse sur AU.

J'exécutais une session ssh avec les ports liés:

ssh -L 3000:<server_name>:22

Je viens de perdre ma connexion. Lorsque j'essaie de me reconnecter en utilisant la même commande, j'obtiens l'erreur suivante:

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

Comment réinitialiser ssh sur ma machine pour permettre au port d’être lié à nouveau? Réinitialisation de la machine locale fonctionne.

    
posée kbuilds 14.04.2014 - 22:31
la source

4 réponses

42

Ne pourriez-vous pas tuer tout ce qui utilise ce port?

 lsof -ti:5901 | xargs kill -9

lsof -ti:5901 pour trouver ce qui utilise le port 5901 .

Transmettez le tout à kill -9 pour tuer tout ce qui utilise le port 5901 .

Remplacez par le port que vous souhaitez ouvrir à nouveau.

    
réponse donnée user974407 07.09.2015 - 16:12
la source
10

Je suppose que vous avez encore quelque chose connecté au port local 3000.

Vous pouvez le trouver avec

netstat -tulpn | grep 3000 

puis jetez-le. Par exemple dans ma machine:

[:~] % 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

identifie correctement le processus en attente et connecté sur le port 5900 (serveur vnc).

Une autre commande utile est

fuser 3000/tcp 

... ils peuvent tous devoir être exécutés avec sudo si vous ne possédez pas le processus qui ouvre le port.

    
réponse donnée Rmano 14.04.2014 - 22:42
la source
5

J'ai pu recréer et réparer le problème en procédant comme suit:

  • Ouvrez quelque chose qui listera vos processus ( ps -ae )
  • Tuez le processus appelé sh ( kill <proc_number> )

Puis rouvrez la connexion ssh

J'ai aussi eu du succès avec:

killall ssh

Dans le terminal de la machine locale

    
réponse donnée kbuilds 14.05.2014 - 19:34
la source
2

un autre concurrent: ss

il peut être utilisé comme ceci: ss -ltp | grep 3000 pour trouver le programme écoutant sur le port 3000

    
réponse donnée mnagel 03.06.2016 - 13:19
la source

Lire d'autres questions sur les étiquettes