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?
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?
Respuestas:
Si está utilizando Linux, puede eliminar el proceso de la siguiente manera:
ps aux | grep ssh
y luego usar
kill <id>
Para matar el proceso.
Si el comando kill no tiene éxito, puede intentar
kill -9 <id>
kill -9
hasta después de haberlo intentado kill
. 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 hecho
ssh
comando, o que todos los ssh
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 una ssh
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 sola ssh
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:
ssh -O cancel -L 10002:192.168.0.30:10002 192.168.1.135
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 .
ssh -O exit 192.168.1.135
.
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.
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(donde 10002
está su puerto reenviado).
Lo inverso, agregar un nuevo avance, se puede hacer de esta manera (de principio a fin):
Enter~C
ssh> -L 10002:192.168.0.30:10002
Enter
~C escape not available to multiplexed sessions
. Si ese es el caso, vea la excelente respuesta de a3nm.
Warning: remote port forwarding failed for listen port
mensaje.