没有 ping 的情况下 ssh 隧道和端口转发如何工作?

没有 ping 的情况下 ssh 隧道和端口转发如何工作?

我正在尝试做 ssh 隧道:

ssh -L 1234:yahoo.com:80 home.abc.com

当我运行这个程序时,它会通过 SSH 将我引导至 home.abc.com。我有以下问题:

  1. 从我的本地盒子,我无法 ping home.abc.com,那么它如何能够通过 ssh 连接到该盒子?
  2. 从 home.abc.com,我可以 ping yahoo.com,但是当我在本地运行 localhost:1234 时,我无法连接(我原本以为运行 localhost:1234 会在本地打开 yahoo.com)。为什么它不起作用?
  3. 为什么上述命令会将我 ssh 到 home.abc.com,我以为这只是一个隧道。

答案1

通常所说的“ping”不过是一个特定的网络请求,它可以

  • 很容易被任何防火墙阻止
  • 与其他包裹相比,通过网络采用不同的路线
  • 对于网络目的而言,这被视为非常不可靠的测试。

具体来说,ping使用一个与 ssh 通常使用的端口或您指定的端口不同的端口。查看pingtraceroute提供的选项命令以获得印象。此外,了解如何“ping” 确实有效,它的作用是什么,它并不是测试连接的魔法。我建议你开始在 WikiPedia 上阅读有关“ping”和“traceroute”的内容...

关于 ssh 命令实际将您登录(或提供)到目标系统:您的命令是不是“只是一个隧道”!相反,你的命令说:打开到主机的 ssh 连接home.abc.com 此外尝试按照选项中指定的方式设置隧道。

关于你最后一次尝试使用该隧道:确保隧道确实已设置,否则 ssh 将在标准错误输出中输出错误。如果如果中间没有防火墙阻止您,那么您应该能够通过向 发出请求来请求 yahoo 的起始页http://localhost:1234

答案2

ping 和 ssh 使用不同的 IP 协议。大多数时候,当谈论互联网时,人们会想到 TCP 或 UDP 协议,以及特定应用程序使用的 TCP 或 UDP 端口号。另一方面,ping 不使用 TCP 或 UDP,而是使用 ICMP。

有一个IP 协议列表iana.org已承认。

防火墙和路由器可以根据多种因素(包括所使用的协议)以不同的方式处理 IP 数据包。由于有些人滥用 ping 所需的 ICMP 功能,因此许多防火墙会默认阻止此类流量。

ICMP 的滥用通常仅限于确认设备在特定 IP 地址上是否处于活动状态,而无需检查所有可用协议,对于 TCP 和 UDP 则无需检查所有端口号。即使只是扫描常用的 TCP/UDP 端口号以查找可识别的应用程序以促使设备响应也需要时间。

相关内容