我可以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 server
說ping: unknown host server
ssh server ssh server
說ssh: Could not resolve hostname server: Name or service not known
因此字串中命令的名稱解析不是在本地完成的。如果您無法取得位址,那是因為遠端主機本身無法解析該名稱。為了說服自己,在 serverA 上啟動 SSH 提示符號並查看它是否可以解析 serverB(ping
或其他)。