He configurado ~/.ssh/config
el archivo en localhost:
### First jump host. Directly reachable
Host ServerA
Hostname 10.0.5.101
User jenny
IdentityFile /home/admin/.ssh/serverA
### Second jumphost. Only reachable via 10.0.5.101
Host ServerB1
HostName ServerB1
User james
ProxyJump ServerA
IdentityFile /home/admin/.ssh/james
### Host only reachable via serverA and ServerB1
Host ServerC1
HostName ServerC1
User root
ProxyJump ServerB1
IdentityFile /home/admin/.ssh/ServerC1
Puedo conectarme directamente al ServerC1
uso del ssh ServerC1
comando localhost
usando la configuración anterior.
El tema es que son muchos ServerB's
y cada uno ServerB
está conectado con varios ServerC's
. Las claves privadas son las mismas para todos los servidores, por lo que ese no es el problema.
Desde localhost, quiero conectarme a través de un túnel SSH a cualquiera de ServerC1,2,3..n
El servidorA /etc/hosts
tiene todos los nombres de host y las IP del servidor B y cada servidor B tiene las IP del servidor C en su /etc/hosts
archivo.
¿Puedo usar la coincidencia de patrones en mi localhost's
~/.ssh/config
archivo para lograr esto? Actualmente estoy limitado a conectarme ServerC1
sólo porque especifiqué ServerB1
yServerC1
Respuesta1
Después de un poco de ayuda de reddit, la mejor respuesta a este problema es configurar el ~/.ssh/config
archivo de la siguiente manera: Suponiendo que todo el ServidorB* tenga el mismo IdentityFile.
Host ServerA
Hostname 10.0.5.101
User jenny
IdentityFile /home/admin/.ssh/serverA
Match originalhost ServerB*
User james
ProxyJump ServerA
IdentityFile /home/admin/.ssh/james
Y luego en la línea de comando:
ssh -J serverB1 -i /home/admin/.ssh/ServerC1 root@ServerC1