SSH 隧道不起作用 - 空服务器响应

问题描述 投票:0回答:3

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

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

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

Web 服务端点如下所示:

service.test.organization.com:443/org/v1/sendData

到目前为止,我已经创建了一个像这样的 ssh 隧道:

ssh -L 1234:service.test.organization.com:443 [email protected]

我的理解是,使用这种方法,我可以点击 localhost:1234,它将通过机器 B 转发到 service.test.organization.com:443。

我已经确认,在机器 B 上,我可以执行一个 curl 命令来向 Web 服务发送消息,并且我得到了响应(所以这是有效的)。我尝试在浏览器中使用 PostMan,并从本地主机在终端中使用curl,但没有成功。 (

curl -X POST -d @test.xml localhost:1234/org/v1/sendData
)

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

有很多关于 SSH 的材料,我正在筛选它们,但如果有人有任何指示,我将非常感激!

ssh ssh-tunnel
3个回答
4
投票

尝试添加

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


1
投票

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

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

service.test.organization.com    127.0.0.1

然后我就可以发送消息了。首先我打开隧道

ssh -L 443:service.test.organization.com:443 [email protected]
, 然后使用这个curl命令:
curl -X POST -d @test.xml service.test.organization.com:443/org/v1/sendData

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


0
投票

我的设置和你一样,唯一的区别是你在A主机上设置了SSH隧道,我在主机B上设置了它。所以我想在A内部使用B的服务。

但是主机A或B都不放在请求标头中是行不通的。

我和你有同样的错误,有连接,但响应为空,尽管处理程序应该明确返回一些 JSON。

© www.soinside.com 2019 - 2024. All rights reserved.