Solía ssh -L 10002:192.168.0.30:10002 192.168.1.135
establecer el reenvío de puertos, pero ahora necesito eliminarlo.
¿Cómo hago esto?
ssh
port-forwarding
usuario16654
fuente
fuente
Warning: remote port forwarding failed for listen port
mensaje.Respuestas:
Si está utilizando Linux, puede eliminar el proceso de la siguiente manera:
y luego usar
Para matar el proceso.
Si el comando kill no tiene éxito, puede intentar
fuente
kill -9
hasta después de haberlo intentadokill
. Muchos procesos tendrán manejadores de señales que limpiarán su uso de recursos, cerrarán conexiones y otras tareas previas al cierre. Si matas con -9, el proceso muere inmediatamente sin hacer la limpieza. La matanza sin -9 será trabajar la mayor parte del tiempo.kill -9
sin razón es como usar una escopeta para matar un mosquito. :)pgrep ssh | xargs kill
. No utilices-9
para nada de hechossh
comando, o que todos losssh
comandos que está ejecutando están bien para matar. Esta no es una buena suposición general.ssh
instancias en múltiples servidores remotos todo el tiempo, algunas de ellas sin mi participación activa directa. Por ejemplo, el modo Emacs Tramp abre unassh
conexión detrás de escena cuando visito un búfer remoto. Algunas personas usan sistemas de archivos de espacio de usuario que hacen algo similar. No es nada raro. De hecho, asumiría que un solo usuario, una solassh
instancia, es un caso de uso marginal minoritario. Si funciona para usted, bien por usted, pero no es un buen consejo general.Cuando se usa la multiplexación ssh, matar el proceso ssh a menudo es indeseable (mata todas las conexiones abiertas con ese host), y no puede acceder fácilmente al escape porque "el escape no está disponible para sesiones multiplexadas". La forma correcta es ejecutar el análogo del comando de reenvío que desea cancelar, pero agregando
-O cancel
. Por ejemplo:Esto deshabilitará este reenvío de puertos sin terminar la sesión. Nuevamente, esto solo funcionará si se usa multiplexación ssh para la conexión a 192.168.1.135 .
fuente
ssh -O exit 192.168.1.135
.Cómo cancelar un puerto reenviado en una sesión SSH que ya se está ejecutando:
-KL port
Deberías ver esto:
fuente
Puede usar la "tecla de escape" (generalmente ~) seguida de C para obtener un cli a su conexión. Desde allí puede quitar túneles sin desconectar su conexión.
fuente
Puede ingresar a una consola interactiva escribiendo ~C(mayúscula "C"). Esto le permite agregar y eliminar dinámicamente reenvíos de puertos (entre otras cosas).
Esta secuencia tiene que venir justo después de un retorno de carro / nueva línea. Entonces, en caso de duda, solo escriba Enter~C(en secuencia).
Si no ves que los personajes aparecen en la consola, lo estás haciendo bien :)
Ahora debería ver un
ssh>
mensaje.Para eliminar el puerto, simplemente ingrese
-KL 10002
seguido de Enter(donde10002
está su puerto reenviado).Lo inverso, agregar un nuevo avance, se puede hacer de esta manera (de principio a fin):
Enter~C
Enter
fuente
~C escape not available to multiplexed sessions
. Si ese es el caso, vea la excelente respuesta de a3nm.