web-dev-qa-db-fra.com

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

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

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

ssh -L 3000:<server_name>:22

Je viens de perdre ma connexion. Lorsque j'essaie de vous reconnecter à l'aide de la même commande, le message d'erreur suivant s'affiche:

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? La réinitialisation de la machine locale fonctionne.

43
kbuilds

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

 lsof -ti:5901 | xargs kill -9

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

Passez le tout à kill -9 pour tuer tout ce qui utilisait le port 5901.

Remplacez-le par le port que vous souhaitez ouvrir à nouveau.

59
user974407

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

Vous pouvez le trouver avec

netstat -tulpn | grep 3000 

et ensuite en disposer. 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 

... tous devront peut-être être exécutés avec Sudo si vous ne possédez pas le processus qui ouvre le port.

11
Rmano

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

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

Puis rouvrez la connexion ssh

Alternativement, j'ai eu du succès avec:

killall ssh

Dans le terminal sur la machine locale

5
kbuilds

un concurrent supplémentaire: ss

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

2
mnagel