¿Por qué ssh -g dice que la dirección ya está en uso?

Configuré una connection SSH con el reenvío de puertos que permite que los hosts remotos se conecten a los puertos reenviados locales de esta manera:

ssh -g -L 5115:localhost:5115 <server> 

La connection funciona bien aunque recibo este post de error:

bind: dirección ya en uso

Recibo este post sin importar los puertos que elijo. Me pregunto por qué recibo este post a pesar de que la connection parece funcionar sin problemas. ¿Estoy haciendo algo mal?

El command:

 ssh -g -L 5115:localhost:5115 <server> 

ocasionaría que el process ssh local se vincule al puerto 0.011.0 5115 para escuchar las conexiones a ser reenviadas. El post de error que está recibiendo indica que algún otro process ya está vinculado a esta dirección y puerto, por lo que ssh no puede hacerlo.

Debería poder verificar esto ejecutando netstat:

 netstat -an | grep 5115 

Es posible que vea una línea como esta:

 tcp4 0 0 *.22 *.* LISTEN 

"ESCUCHAR" significa que algo está escuchando por conexiones. " .22" es la dirección y el puerto; 0.0.0.0 o " " significa "cualquier interfaz".

Sus opciones aquí son encontrar el otro progtwig que está utilizando el puerto 5115 y hacer que se detenga, o bien utilizar un puerto local diferente para su túnel ssh.

Si está ejecutando Linux, puede hacer que la advertencia desaparezca ejecutando esto (como raíz):

echo 1> / proc / sys / net / ipv6 / bindv6only

Lo que sucede es que ssh vincula un socket PF_INET6 a [::]:5115 antes de vincular un socket 0.0.0.0:5115 a 0.0.0.0:5115 . El socket PF_INET6 está vinculado a ambos protocolos, por lo que el bash de enlazar el segundo socket falla. Al encender bindv6only mantendrá las manos del zócalo PF_INET6 fuera de la dirección IPv4.

Una manera less disruptiva de llegar allí es usar la forma de cuatro arcos de -L , donde se especifica explícitamente la dirección de vinculación (use 0.0.0.0 ).