SSH 转发端口到本地主机名

SSH forward port to local host name

我有下一个设置:

项目 VM 设置(/etc/hosts 在本地主机上):

192.168.100.102 host1.vm.private
192.168.100.102 sub1.host1.vm.private
192.168.100.102 sub2.host1.vm.private

"host1" 由应用程序路由器解析并由 nginx 提供服务的子域(项目 VM 上 "host1.vm.private" 的配置):

server {
    listen 80;
    server_name ~^(.+\.)?host1\.vm\.private$;
    ...
}

我需要使 "sub(1|2|N).host1.vm.private" 可以从远程主机访问。如何做到这一点?

所以,我找到了解决方案:Trouble SSH Tunneling to remote server

主要问题是发送了无效的 HTTP header 并且 nginx 无法解析虚拟主机。

  1. 运行 本地 PC ssh -R 8888:192.168.100.102:80 <remote_pc_credentionals>。或者,运行 "inversed" 命令在远程 PC 上带有 ssh -L 标志。

  2. 远程 PC 上将 "sub1.host1.vm.private" 添加到 /etc/hosts127.0.0.1 sub1.host1.vm.private

  1. 随每个请求发送 "Host" header:curl -H "Host: sub1.host1.vm.private" "http://localhost:8888/some/path"