Consigo me conectar de casa a um servidor no trabalho ( server A
) por meio de um servidor ssh exposto à Internet.
Preciso executar um comando em um servidor em outro escritório ( server C
), que não pode ser acessado diretamente do server A
.
Contudo, existe um servidor intermediário ( server B
), que server A
pode acessar e a partir do qual server C
é acessível.
+------+ +----------+ +----------+ +----------+
| home |---| server A |---| server B |---| server C |
+------+ +----------+ +----------+ +----------+
Eu sei que posso executar um comando em um servidor remoto usando ssh da seguinte forma:
ssh hostname command
Como tal, tentei agrupar vários comandos ssh
ssh server_A ssh server_B ssh server_C command
No entanto, recebo um erro:
ssh: Could not resolve hostname server_B: Name or service not known
Isso parece sugerir que a pesquisa de DNS está acontecendo localmente, e não no servidor remoto.
Observação:
Tentei agrupar vários comandos ssh usando hosts que meu servidor DNS local pode resolver, e funcionou, o que sugere que, se eu conseguir resolver meu problema de pesquisa de DNS, devo conseguir o que desejo.
Pergunta:
Como posso encadear vários comandos ssh juntos, mas forçar a pesquisa de nome a ocorrer apenas no servidor remoto no qual o próximo comando será executado?
Responder1
Pelo que sei, a resolução de nomes é feita no controle remoto:
- configurar meu local
/etc/hosts
para dar um nome a um servidor meu na nuvem ping server
faz ping no servidor para que a resolução DNS local funcionessh server ping server
dizping: unknown host server
ssh server ssh server
dizssh: Could not resolve hostname server: Name or service not known
Portanto, a resolução de nomes dos comandos nas strings não é feita localmente. Se você não conseguir obter o endereço, é porque o próprio host remoto não consegue resolver o nome. Para se convencer, inicie um prompt SSH no servidor A e veja se ele consegue resolver o servidor B ( ping
ou então).