Puedo conectarme desde casa a un servidor en el trabajo ( server A
) a través de un servidor ssh expuesto a Internet.
Necesito ejecutar un comando en un servidor en otra oficina ( server C
), al que no se puede acceder directamente desde server A
.
Sin embargo, existe un servidor intermedio ( server B
), al que server A
se puede acceder y desde el que server C
se puede acceder.
+------+ +----------+ +----------+ +----------+
| home |---| server A |---| server B |---| server C |
+------+ +----------+ +----------+ +----------+
Sé que puedo ejecutar un comando en un servidor remoto usando ssh de la siguiente manera:
ssh hostname command
Como tal, intenté encadenar varios comandos ssh juntos
ssh server_A ssh server_B ssh server_C command
Sin embargo, aparece un error:
ssh: Could not resolve hostname server_B: Name or service not known
Esto parece sugerir que la búsqueda de DNS se realiza localmente, en lugar de en el servidor remoto.
Nota:
Intenté encadenar varios comandos ssh usando hosts que mi servidor DNS local puede resolver, y funcionó, lo que sugiere que si puedo resolver mi problema de búsqueda de DNS, debería poder lograr lo que quiero.
Pregunta:
¿Cómo puedo encadenar varios comandos ssh, pero forzar que la búsqueda de nombres solo se realice en el servidor remoto en el que se debe ejecutar el siguiente comando?
Respuesta1
Por lo que puedo decir, la resolución de nombres se realiza en el control remoto:
- configurar mi local
/etc/hosts
para darle un nombre a un servidor mío en la nube ping server
hace ping al servidor para que funcione la resolución DNS localssh server ping server
diceping: unknown host server
ssh server ssh server
dicessh: Could not resolve hostname server: Name or service not known
Entonces, la resolución de nombres de los comandos en las cadenas no se realiza localmente. Si no puede obtener la dirección es porque el host remoto no puede resolver el nombre. Para convencerse, inicie un mensaje SSH en el servidorA y vea si puede resolver el servidorB ( ping
o de lo contrario).