我有一个远程服务器,一个 SSH 连接,远程服务器的 IP 为 0.0.0.1(例如)。在服务器上,我在 80 端口上有一个应用程序。当我想连接到远程服务器时,我使用: 之后我可以从本地主机打开远程应用程序:ssh -L 8888:127.0.0.1:80 -i path/to/key [email protected]
127.0.0.1:8888
但在受保护的网络中有一个站点www.example.com
,我只能从服务器访问它。命令curl www.example.com
没问题,但如何从我的远程机器打开该站点?我尝试登录但如何打开它?ssh -L 8888:www.example.com:80 -i path/to/key [email protected]
www.example.com:8888?127.0.0.1:8888?都不起作用。
答案1
也许www.example.com正在等待主机标头。我试过了,它对我有用。
In one terminal
▶ ssh -L 2345:google.com:443 root@k1
In another terminal
▶ curl -kIL --header "Host: google.com" https://localhost:2345/
HTTP/2 301
location: https://www.google.com/
content-type: text/html; charset=UTF-8
date: Thu, 05 May 2022 12:31:08 GMT
expires: Sat, 04 Jun 2022 12:31:08 GMT
cache-control: public, max-age=2592000
server: gws
content-length: 220
答案2
假设www.example.com
IP 地址为 1.1.1.1。此命令解决了我的问题:
sudo ssh -L 80:1.1.1.1:80 -L 443:1.1.1.1:443 -i path/to/key [email protected]
还/etc/hosts
必须添加127.0.0.1 example.com
然后就可以连接到www.example.com直接从浏览器。