将多个 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否则)。

相关内容