ssh 隧道连接到 vhost 子域

ssh 隧道连接到 vhost 子域

是否可以使用 ssh 隧道将本地主机转发到特定(vhost)子域?

换句话说,我有以下域/子域,均位于同一 IP 上

  • domain.dev
  • vhost.domain.dev

在远程机器上,我更新/etc/hosts

# Remote machine /etc/hosts
# <...snip...>
1.2.3.4 domain.dev vhost.domain.dev

但是当我尝试这两个命令时

  • ssh -L 8080:vhost.domain.dev user@remote
  • ssh -L 8080:domain.dev user@remote

在这两种情况下,我只能访问domain.dev但不能vhost.domain.dev(在localhost:8080

有没有什么办法可以通过远程机器访问/隧道传输请求?遗憾的是,我无法使用 VPN 成为同一网络的一部分,在那里我可以访问domain.dev并且domain.dev只能通过远程机器(网络)访问

答案1

您必须在自己的机器上使用 /etc/hosts(将两个域指向其中一个本地主机 IP 地址)。

这不是仅通过 SSH 即可实现的,因为域名根本不是在 TCP 级别发送的 – 它是由您的浏览器在 HTTP 级别发送的。

同时,隧道(即您的-L选项)可以直接指向 IP 地址:它对 TCP 没有任何影响,因为 TCP 无论如何都只处理 IP 地址。

答案2

这可以使用 ssh 代理来完成,并配置浏览器/系统以使用此代理

ssh -D 8080 user@remote

需要注意的一点是,确保您远程执行 DNS 查找,例如在 Firefor 中about:config确保network.proxy.socks_remote_dns将其设置为 true (否则 Firefox 将尝试在本地查找域,而不是在远程计算机上查找域)

并且某些工具无法工作(例如 curl 在本地无法工作,但在远程机器上可以正常工作)

相关内容