是否可以通过 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