gpt4 book ai didi

ssh - ssh 端口转发 HTTP/HTTPS 站点会出现什么问题?

转载 作者:行者123 更新时间:2023-12-04 17:32:54 27 4
gpt4 key购买 nike

我想弄清楚如何ssh端口转发工作。我对我看到的不同问题感到非常困惑。

首先,一个基本的例子:ssh -L 8080:www.ubuntuforums.org:80 localhost .登录到我的本地机器后,导航到 localhost:8080在 Chrome 中让我到 http://www.canonical.com/ .如果我直接导​​航到 http://www.ubuntuforums.org/在我的 Chrome 中,我最终到达了 http://ubuntuforums.org/ .这里发生了什么?为什么我没有在 ubuntuforums.org 结束而是 www.canonical.com ?

二、更改网站和端口:ssh -L 8888:learnlayout.com:80 localhost .导航至 http://localhost:8888在 Chrome 中,我只是永远挂着。 wget http://localhost:8888给我以下 index.html :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
<title>Transmission Forward</title>
<script type="text/javascript">
window.location = "http://24.218.24.189:8080/"
</script>
</head>
<body>
<p>Stand By...</p>
</body>
</html>

ssh当我在浏览器中指向它时没有正确处理重定向或其他什么?

三、 ssh -L 8888:imgur.com:80 localhost .在我的浏览器中,我收到以下错误: Fastly error: unknown domain: localhost. Please check that this domain has been added to a service. . wget localhost:8888给我:
--2016-05-07 16:36:47--  http://localhost:8887/
Resolving localhost... ::1, 127.0.0.1
Connecting to localhost|::1|:8888... connected.
HTTP request sent, awaiting response... 500 Domain Not Found
2016-05-07 16:36:47 ERROR 500: Domain Not Found.

这种错误的多样性真的让我感到困惑。 ssh有什么明显的吗?隧道我失踪了?这些是否应该正常工作,也许我的网络或路由器有问题?

最佳答案

背景

SSH

您正在使用 SSH 在两个系统之间建立安全连接,对远程端点的用户进行身份验证,然后在该连接内设置隧道,以便将所有连接到本地计算机上特定端口的连接(通过隧道)发送到不同的主机和端口

HTTP

使用浏览器或工具,如 wget您正在向本地机器和端口发出 HTTP 请求。您从该端点获得的任何响应都由原始工具根据 HTTP 规范进行解释。

你的问题

当您发出 HTTP 请求时 您得到的回复不是您所期望的 .如果您尝试访问 example.org在您的本地机器上为 localhost:8888多亏了 SSH 隧道,您不会像浏览一样获得实际页面 example.org直接地。

解释

大多数页面/站点都可以识别域。这意味着它的 功能与它们被配置为提供服务的域紧密相关 .

在您的示例中,有各种各样的场景。强制特定 URL 访问它们的网站、使用 javascript 的网站重定向,甚至是不知道根据该 URL 提供哪个网站的网络服务器。对它们的解释都是一样的:它们不准备使用不同于他们认为的标准 URL 的 URL 进行访问。

根据我的经验,访问站点的域是可以假设的。可以进行一些配置来强制执行该域的特定版本(例如添加或删除 www ),但几乎没有其他任何内容。这样的配置可以在网络服务器 - 或它前面的缓存层 - 或应用程序本身(WordPress 对其域进行设置,它将自行强制执行)。异常(exception)是可以通过多个 DNS 访问的应用程序,大多数 Web 框架都有支持这种情况的方法,但它们大多需要后端配置来确定它们将服务的域列表。

解决方案

从不同的连接或使用隧道浏览网页:使用 HTTP 代理 .特别是 SSH 的选项 -d PORT将创建一个 SOCKS 代理,您可以在大多数 HTTP 工具中配置它以建立隧道连接。

关于ssh - ssh 端口转发 HTTP/HTTPS 站点会出现什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37094760/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com