將多個 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 查找發生在本地,而不是遠端伺服器上。

筆記:

我嘗試使用本地 dns 伺服器可以解析的主機將多個 ssh 命令串在一起,並且有效,這表明如果我可以解決我的 dns 查找問題,我應該能夠實現我想要的。

問題:

如何將多個 ssh 命令串在一起,但強制名稱查找僅發生在要執行下一個命令的遠端伺服器上?

答案1

據我所知,名稱解析是在遠端完成的:

  • 設定我的本機/etc/hosts伺服器,為我在雲端的伺服器命名
  • ping server對伺服器執行 ping 操作,以便本機 DNS 解析正常運作
  • ssh server ping serverping: unknown host server
  • ssh server ssh serverssh: Could not resolve hostname server: Name or service not known

因此字串中命令的名稱解析不是在本地完成的。如果您無法取得位址,那是因為遠端主機本身無法解析該名稱。為了說服自己,在 serverA 上啟動 SSH 提示符號並查看它是否可以解析 serverB(ping或其他)。

相關內容