我能够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
否则)。