使来自 SSH 的出站流量通过特定接口转发

使来自 SSH 的出站流量通过特定接口转发

我在服务器上托管了一个私人应用程序。它仅允许从本地主机进行连接。

但是,服务器上配置的默认接口是 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

两个选项:

  1. 在 example.com 上设置代理或端口转发,以将连接从 example.com:80 转发到 localhost:8000。

  2. 使用 ssh 从 PC 转发端口:

    ssh -L 8000:localhost:8000 example.com
    

    然后从PC连接到http://localhost:8000。

相关内容