繁体   English   中英

同一远程主机和端口上的多个SSH反向端口隧道

[英]Multiple SSH reverse port tunnels on the same remote host and port

我遇到了一些反向端口隧道服务,例如http://progrium.com/localtunnel 我知道,它们使我可以轻松地建立反向SSH端口隧道,这使我可以在线显示本地Web服务器(例如,我在端口3000上本地运行Rails应用程序,并且可以使用localtunnel的服务通过URL与在线的人共享例如xhd3s.localtunnel.com。)

不过,我对此有点困惑。 设置远程隧道时,必须指定要接管的远程端口,这意味着远程服务器上的每个端口一个隧道。 但是,使用这些端口隧道服务,每个人都可以指定相同的远程端口。 唯一的区别是标记化子域。

他们如何使用标记化子域并将其转换为使用同一端口的唯一隧道? 我怀疑正在发挥一些Web服务器向导的作用,但是我不确定这将如何工作。

编辑:

换句话说,我希望能够从两台不同的计算机发出以下命令:

# first computer
ssh -R 9000:localhost:3000 jim@xcvs.myserver.com

# second computer
ssh -R 9000:localhost:3000 john@csde.myserver.com

我如何在myserver.com上允许这两个反向端口隧道在端口9000上运行?

我花了一些时间来解决这个问题。 我现在相信将远程SSH隧道都设置为与远程服务器上的同一端口一起使用的前提是错误的。

但是,在尝试了一些概念验证的东西之后,我想我隐约知道他们在做什么。

我以为SSH隧道都使用相同的端口,因为所有与子域URL的连接都可能在端口80上进行。但是,如果您在Web服务器中设置了代理传递 ,则可以将流量转发到服务器上的其他端口。服务器。

这是Nginx代理传递的一些概念证明:

server {
    listen 80;
    server_name xcvs.myserver.com;

    location / {
        proxy_pass http://127.0.0.1:5222;
    }
}


server {
    listen 80;
    server_name csde.myserver.com;

    location / {
        proxy_pass http://127.0.0.1:5223;
    }
}

因此,到端口80上这两个不同子域的流量将被代理到不同的端口,然后您可以使用这些端口来设置SSH隧道。

但是,设置中仍然存在一些神秘之处。 当使用诸如localtunnel之类的服务设置隧道时,发出如下命令:

$ localtunnel 3000

我认为这是对服务器的攻击,取回新的端口号和子域对,然后为您发出带有这些值的远程SSH隧道命令。

但是,我有点不清楚如何自动创建子域并将其映射到端口,以便Web服务器知道如何适当地代理。 我闻到工作中的一个周末计划。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM