【问题标题】:SSH forward port to local host nameSSH 转发端口到本地主机名
【发布时间】:2017-03-14 09:37:57
【问题描述】:

我有下一个设置:

  • 本地主机 - 我的工作电脑
  • Project VM - 带有项目文件的 Vagrant box,在我的工作 PC 上运行
  • 远程主机 - 远程 PC,我需要从中访问 Project 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”可以从远程主机访问。如何做到这一点?

【问题讨论】:

    标签: nginx ssh proxy vagrant portforwarding


    【解决方案1】:

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

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

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

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

    1. 在每个请求中发送“Host”标头:curl -H "Host: sub1.host1.vm.private" "http://localhost:8888/some/path"

    【讨论】: