在我之前的帖子中询问为什么 SSH 协议无法成功连接到目标? 我原来的命令是
ssh -L 9000:google.com:80 testme@localhost
为了解决这个问题,斯蒂芬·基特写道
例如,使用 Web 浏览器,您可以在创建隧道时指定 IP 地址而不是主机名
ssh -L 9000:216.58.213.142:80 testme@localhost
我想知道为什么要“在创建隧道时指定 IP 地址而不是主机名”?
如果 google.com 解析为 216.58.213.142,这两个命令不是一样吗?
IP地址和虚拟主机之间有什么区别吗?
谢谢。
答案1
如果 google.com 解析为 216.58.213.142,这两个命令不是一样吗?
是的,但这里的重点是处理 google.com 无法解析为 Google IP 地址的情况,就像您编辑/etc/hosts
.通过指定 IP 地址(您通过执行自己的 DNS 查找来确定,以获得有效的 IP 地址,在 Google 的情况下是适合地理位置的 IP 地址),您可以确保隧道按照您的预期设置,而无需首先检查/etc/hosts
或任何其他解决机制。 SSH 根据需要解析并打开与转发端口的连接;如果您将端口转发到主机名,然后覆盖该主机名的地址,SSH 将尝试将连接转发到被覆盖的地址,而不是您期望的地址。