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.
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.
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.
J'ai pu recréer et corriger le problème en procédant comme suit:
ps -ae
)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
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