Tengo dos servidores alojados en IDC. Solo puedo usar los puertos 20/21/22/23/3389 / 33101-33109 para establecer conexiones entre dos servidores. El dispositivo de red IDC bloqueará cualquier otro paquete cuyo puerto de origen o destino no esté en la lista / rango 20/21/22/23/80/3389 / 33101-33109. Pero el puerto de origen de SSH es aleatorio.
Usando el comando
uno puede especificar fácilmente un puerto remoto.ssh username@server -p remote_port
Entonces, ¿hay un ssh
parámetro de comando o alguna otra forma de especificar un puerto de origen local para que pueda usar, por ejemplo, el puerto 33101 para establecer la conexión SSH?
fuente
Para situaciones puntuales u ocasionales, el enfoque ProxyCommand es fácilmente muy conveniente.
Por otro lado, si necesita varias conexiones simultáneas, o cuando tal vez necesite usar ese comando con frecuencia para el trabajo diario, también puede considerar establecer una regla de traducción de direcciones de red (NAT) en su servidor.
Esto requiere
root
acceso de superusuario (normalmente ) en su servidor para aplicar primero la única regla NAT. Tenga en cuenta que podría no estar permitido (o efectivo) aplicar la regla NAT, incluso cuando tenga acceso de superusuario, si su "servidor" es en realidad un contenedor (como un Docker) en lugar de una máquina.Hablando de un sistema Linux típico con la
iptables
suite, la regla NAT que se aplica en su servidor1 para su caso de muestra podría ser:Ese comando indica al kernel de Linux que realice cualquier conexión hacia el puerto server2-port de server2-ip-address para salir utilizando un puerto de origen elegido dentro del rango 33101-33109 que está disponible en ese momento.
Una vez que esa regla está en su lugar, se conecta a su servidor2 solo con su habitual:
y puede usar este mismo
ssh
comando también simultáneamente todas las veces que lo necesite, siempre que haya puertos disponibles en el rango especificado en la regla NAT.Sin embargo,
netstat
tenga en cuenta que un (o comando equivalente) ejecutado en su servidor informa que la dirección local de la conexión es el número de puerto de origen no modificado , elegido aleatoriamente, aunque el tráfico real que se entrega a su servidor2 lleva el modificado número de puerto de origen .Para deshacer la regla NAT, el comando es el mismo, excepto por una
-D
opción en lugar de-I
.Tener la regla NAT aplicada automáticamente en el arranque depende de la distribución de Linux que tenga en su servidor y de si ya tiene alguna configuración de firewall implementada o no.
No tengo experiencia con sistemas similares a BSD, pero confío en que haya un equivalente.
fuente