SSH 隧道访问第三方 HTTPS 页面?

SSH 隧道访问第三方 HTTPS 页面?

是否可以通过 SSH 隧道访问第三方 HTTPS 页面?


我必须从家庭办公室访问具有严格安全规则的第三方网站。

由于安全规则,只允许从我的工作电脑访问。我可以通过 VPN 连接到工作网络来访问工作电脑,然后可以通过 SSH 访问所有内容。因此,我可以通过远程 wget(对于 Web 应用程序无用)或通过运行浏览器并启用 X-forwarding 来访问第三方网站 - 性能非常糟糕,虽然可行,但对于完成工作来说却很痛苦。

由于所用产品的限制,无法更改 VPN 的配置,因此我尝试使用以下方式通过工作电脑将流量传输到第三方网站:

ssh [email protected] -L localhost:443:ThatCompany.com:443 -N
#                                      | ||        ||                     | | |
#                                      '.''----.---''--------.------------' '.'
#                      Port forwarding -'      |             |               |
#                                              |             |               |
#   Allow access to :443 only from localhost --'             |               |
#                                                            |               |
#   localhost:443 will access ThatCompany.com:443 -----------'               |
#                             through the work PC                Don't display shell
#                                                                of work PC

如果我尝试访问https://SubDomain.ThatCompany.com,我会得到一个 404 代码和一个页面说

You have reached the webserver of ThatComapany.
The URL you used is unknown to us, so we cannot allow you in.

示例:尝试通过隧道访问 Gmail。

该命令将是

ssh [email protected] -L localhost:443:google.com:443

如果我尝试访问,https://mail.localhost我将获得:

在此处输入图片描述

这表明了两个问题:

  • 该连接不被视为安全,因为主机名与证书不匹配。
  • 网络服务器将拒绝该连接;它可能怀疑存在中间人攻击。

是否有某种方式可以配置转发,使得网络服务器不知道它?

答案1

您可以尝试通过 SSH 使用 SOCKS 代理:

ssh [email protected] -D 8080 -N

然后在 127.0.0.1:8080 上为 Web 浏览器配置 SOCKS 代理。然后,您便可以在浏览器中正常访问该网站。

有关 SOCKS 代理的更多信息,请参阅此答案:https://superuser.com/a/1308648/1154554

相关内容