SSH con un puerto reenviado remoto asignado dinámicamente: cómo encontrar el número de puerto

SSH con un puerto reenviado remoto asignado dinámicamente: cómo encontrar el número de puerto

Necesito establecer un puerto arbitrario de reenvío remoto a un puerto local específico cuando me conecto a un servidor. No tengo derechos de administrador en el servidor, que es un recurso informático importante utilizado por una gran cantidad de personas. No puedo elegir un número de puerto remoto estático porque no tengo motivos para esperar que siempre esté disponible.

Estoy usando un comando como ssh -R 0:localhost:8001 servername: usar 0 para el número de puerto, para que el servidor remoto pueda elegir un puerto por mí. Esto funciona bien; el cliente me dice el número de puerto asignado y luego puedo usarlo para volver a conectarme a mi máquina (u otra en mi red) manualmente.

El problema es que necesito escribir algunos scripts para que otros los utilicen en el sistema remoto, y necesito un medio para determinar en el extremo remoto cuál es el número de puerto para esa sesión. Miré las variables de entorno SSH_* en la sesión y ninguna de ellas es útil. Intenté revisar la salida ss -le | grep "uid:$UID"y eso encuentra el puerto entre otros, pero parece un poco complicado y no es realmente seguro que siempre funcione, especialmente si el usuario tiene otros procesos en ejecución, tal vez en diferentes sesiones de inicio de sesión.

¿Existe una forma definitiva y menos complicada de encontrar un número de puerto reenviado remoto asignado dinámicamente?

Editar: Acabo de descubrir que esto es un duplicado deesta publicación anterior, donde la pregunta se formuló en términos ligeramente diferentes pero es exactamente lo mismo. Lamentablemente, no puedo utilizar soluciones que impliquen root o sudo en el servidor.

Supongo que es posible que no sea posible hacer lo que quiero de manera confiable, lo que hace que esta selección automática de puerto sea una característica mucho menos útil.

información relacionada