我需要从本地计算机使用 Web 服务,但 Web 服务仅允许预定义的 IP,因此我需要通过中间主机使用该服务,该主机定义了 IP 以到达 Web 服务主机。因此我需要执行类似 ssh 隧道跳跃的操作:
Local computer(mac) ---> middle host(ubuntu) ---> https soap web service
<--- <---
我的本地计算机是mac,中间主机是ubuntu linux,服务是https服务。
首先我想问这是一种可能的情况吗?
然后我尝试过并取得了以下成果:
我使用 ssh 命令启动了隧道:
ssh -L 8443:service_url:443 -Nf root@middle_host_ip
我正在使用 SoapUi 应用程序来测试连接,但出现javax.net.ssl.sslexception connection reset
错误。
在 ssh 连接端我收到channel 2: open failed: connect failed: Name or service not known
错误。
我在 SoapUi 应用程序中尝试的 URLhttps://localhost:8443
是https://127.0.0.1:8443
我还更新了 /etc/host 文件,以检查问题是否与此有关;例如:
127.0.0.1 service_url
255.255.255.255 broadcasthost
::1 localhost
但我仍然遇到同样的错误。
有没有更简单的方法来测试连接?我是否犯了明显的错误?
谢谢。
编辑:
为了测试,我尝试使用 ssh 命令连接到非 https 服务器
ssh -L 8443:[regular_web_site_url]:80 [user]@[server_ip]
并在网络浏览器中输入 URLlocalhost:8443
并成功检索该网站。
但是当我尝试对我想要使用的 https web 服务执行相同操作时,我在创建 ssh 连接的 shell 上收到错误:
channel 3: open failed: connect failed: Name or service not known
当我尝试检索 https 网站时,出于测试目的,即使我将文件更改/etc/hosts
为以下内容,也会出现无效证书错误:
127.0.0.1 [https_web_site_url]
我尝试实现这一点的原因是我需要测试一个 https Web 服务,该服务只允许使用预定义的 IP,因此我需要连接到具有预定义 IP 的中间主机以供使用该服务。
任何帮助都将不胜感激。再次感谢
答案1
ssh -L 8443:service_host:443 -Nf root@middle_host_ip
service_host 可以是 ip 地址或 fqdn。
答案2
您是否尝试过使用带有 URL 的隧道从浏览器访问常规 https 网站https://127.0.0.1/8443
?也许它有助于测试。
但我认为您在访问 https 网站时会遇到问题,因为 https 证书,您可能需要更新您的/etc/hosts
文件。
答案3
我们也遇到了同样的问题,最后使用了穿梭巴士。
流程如下:
- 查找服务的 IP,例如使用
nslookup
- 开始
sshuttle -r username@middle_host SERVICE_HOST_IP