объединить несколько команд ssh вместе, но отложить поиск dns до удаленного хоста

объединить несколько команд ssh вместе, но отложить поиск dns до удаленного хоста

Я могу подключиться из дома к серверу на работе ( server A) через SSH-сервер, подключенный к Интернету.

Мне нужно выполнить команду на сервере в другом офисе ( server C), который недоступен напрямую из server A.

Однако существует промежуточный сервер ( server B), к которому server Aможно получить доступ и с которого server Cможно получить доступ.

+------+   +----------+   +----------+   +----------+
| home |---| server A |---| server B |---| server C |
+------+   +----------+   +----------+   +----------+

Я знаю, что могу выполнить команду на удаленном сервере с помощью ssh следующим образом:

ssh hostname command

Поэтому я попытался объединить несколько команд ssh вместе.

ssh server_A ssh server_B ssh server_C command

Однако я получаю сообщение об ошибке:

ssh: Could not resolve hostname server_B: Name or service not known

Похоже, это говорит о том, что поиск DNS происходит локально, а не на удаленном сервере.

Примечание:

Я попробовал объединить несколько команд SSH, используя хосты, которые может разрешить мой локальный DNS-сервер, и это сработало, что говорит о том, что если я смогу решить свою проблему с поиском DNS, то смогу добиться желаемого.

Вопрос:

Как можно объединить несколько команд ssh, но при этом принудительно выполнить поиск имени только на том удаленном сервере, на котором должна быть запущена следующая команда?

решение1

Насколько я могу судить, разрешение имен осуществляется на удаленном устройстве:

  • настроить мой локальный сервер /etc/hosts, чтобы дать имя моему серверу в облаке
  • ping serverпингует сервер, чтобы работало локальное разрешение DNS
  • ssh server ping serverговоритping: unknown host server
  • ssh server ssh serverговоритssh: Could not resolve hostname server: Name or service not known

Итак, разрешение имен команд в строках не выполняется локально. Если вы не можете получить адрес, то это потому, что сам удаленный хост не может разрешить имя. Чтобы убедиться, запустите SSH-запрос на serverA и посмотрите, может ли он разрешить serverB ( pingили что-то еще).

Связанный контент