Estoy intentando utilizar SSH desde el dispositivo de mi hogar para finalizar el host mediante Jump Host usando la opción ProxyJump de OpenSSH.
Jump host tiene dos direcciones IP vinculadas a su única interfaz: x.x.x.x
y y.y.y.y
. Hay un firewall con una lista blanca de IP a las que se les permite acceso ssh al host final. y.y.y.y
Está en la lista pero x.x.x.x
no lo está.
El problema es que el valor predeterminado en el host de salto es usarlo x.x.x.x
para SSH saliente.
Si hago ssh manualmente desde el host de salto al host final, puedo anular el valor predeterminado con -b
la opción de OpenSSH, como ssh -b y.y.y.y endhost
. Esto funciona bien.
Sin embargo, cuando intento acceder directamente desde mi dispositivo personal al host final usando jumphost como intermediario, parece que no puedo hacerlo funcionar. Probé algunas variaciones para especificar la dirección de enlace, ~/.ssh/config
pero no tuve suerte.
¿Hay alguna manera de indicarle al host de salto que use una dirección de enlace específica?
Respuesta1
El problema en mi configuración fue que la puerta de enlace predeterminada delanfitrión de saltoestaba configurado para usar una IP diferente ( x.x.x.x
en su ejemplo) que la que quería sshd
usar para su tráfico saliente ( y.y.y.y
en su ejemplo).
Entonces, un método que funcionó para mí fue establecer una ruta específica en elanfitrión de saltoPara elservidor final'sorbo.
Sobre elanfitrión de salto(el mío ejecuta Ubuntu 20.04):
route add -host <endhost's IP>/32 gw y.y.y.1 dev <y.y.y.y's Iface>
¿Dónde <endhost's IP>
es IPv4 n.n.n.n
y <y.y.y.y's Iface>
es la interfaz que y.y.y.y
está asociada a, como eth0
?
Referencias:
Tenga en cuenta que estaba trabajando específicamente para lograr sshd
la ruta a través de la IP flotante de DigitalOcean. En ese caso, y.y.y.y
es necesario descubrirlo utilizando:
curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/anchor_ipv4/address
Entonces, si ese comando regresa 10.10.0.7
, entonces y.y.y.y
es 10.10.0.7
.
Referencias: