我在服务器上托管了一个私人应用程序。它仅允许从本地主机进行连接。
但是,服务器上配置的默认接口是 eth0。因此我需要将接口设置为lo
,否则应用程序会将连接视为来自服务器的公共 IP,而不是本地主机:
pc $ ssh [email protected]
# This doesn't work. App sees traffic as coming from 123.123.123.123
server $ curl https://example.com:8000
# This works
server $ curl --interface lo https://example.com:8000
但我不能直接通过 SSH 进入服务器和curl
应用程序。我需要从我的电脑访问它才能使用 Web UI。
我尝试使用
pc $ ssh -D 9000 [email protected]
pc $ curl -x "socks5://localhost:9000" https://example.com:8080
但应用程序再次将该请求视为来自服务器的全局 IP。
那么有没有办法让 SSHlo
在转发时使用远程接口?如果可能的话,我宁愿不修改服务器上的 ip 路由表。
答案1
两个选项:
在 example.com 上设置代理或端口转发,以将连接从 example.com:80 转发到 localhost:8000。
使用 ssh 从 PC 转发端口:
ssh -L 8000:localhost:8000 example.com
然后从PC连接到http://localhost:8000。