【问题标题】:SSH tunnel not working - empty server responseSSH 隧道不工作 - 空服务器响应
【发布时间】:2015-09-20 10:58:34
【问题描述】:

我正在尝试设置 SSH 隧道,但我不熟悉此过程。这是我的设置:

机器 B 具有访问受限的 Web 服务。已根据防火墙 IP 白名单授予机器 A 访问机器 B 服务的权限。

我可以使用 ssh 连接到机器 A。之后我尝试从本地主机访问机器 B 上的网络服务,但我不能。

Web 服务端点如下所示: service.test.organization.com:443/org/v1/sendData

到目前为止,我已经创建了一个像这样的 ssh 隧道: ssh -L 1234:service.test.organization.com:443 myuser@machineb.com

我的理解是,使用这种方法,我可以访问 localhost:1234,然后通过 Machine B 将其转发到 service.test.organization.com:443。

我已经确认,我可以从机器 B 执行 curl 命令以向 web 服务发送消息,并且我得到了响应(这样可以正常工作)。我曾尝试在我的浏览器中使用 PostMan,并从 localhost 在终端中卷曲,但我没有成功。 (curl -X POST -d @test.xml localhost:1234/org/v1/sendData)

错误信息:curl: (52) 来自服务器的空回复

关于 SSH 的资料很多,我正在筛选,但如果有人有任何指点,我将不胜感激!

【问题讨论】:

  • 您是否检查过 sshd_config 中是否启用了端口转发?默认情况下通常不会
  • 我发现请求正在发送到目的地,但没有响应返回,因为请求来自本地主机,这违反了防火墙白名单规则。我怎样才能让 HTTP 请求标头说它来自机器 B?

标签: ssh ssh-tunnel


【解决方案1】:

网络问题是由请求格式引起的。我的请求对象是用“localhost:1234”的目的地构建的。因此,即使它到达了正确的机器,机器也会忽略它。

为了解决这个问题,我在主机文件中添加了一条记录,如下所示: service.test.organization.com 127.0.0.1

然后我就可以发送消息了。首先我打开了隧道, ssh -L 443:service.test.organization.com:443 myuser@machineb.com, 然后使用这个 curl 命令:curl -X POST -d @test.xml service.test.organization.com:443/org/v1/sendData

主机文件使地址解析为 localhost,然后 ssh 隧道知道将其转发。

【讨论】:

    【解决方案2】:

    尝试添加Host HTTP头:curl -H "Host: service.test.organization.com" -X POST -d @test.xml http://localhost:1234/org/v1/sendData

    【讨论】:

      猜你喜欢
      • 2014-12-13
      • 2020-06-04
      • 2021-05-29
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      相关资源
      最近更新 更多