我有一个testing应用程序,我本地运行,并使用远程端口转发给其他人访问它。
这工作得很好,直到我在EC2上build立一个新的服务器实例。
EC2服务器运行CentoOS 7.没有防火墙正在运行,我已经将SELinux设置为宽容,我已经在安全组规则中打开了一个端口。 然后我跑
ssh -v -N -R port_num:localhost:port_num
(其中port_num实际上是一个端口号),我可以看到连接。 我也检查远程服务器上的netstat,我可以看到正在监听的端口号。
这用于工作,但不在这台机器上。 我认为这是EC2相关,或者与CentOS 7相关,但是已经用完了。
在远程服务器上运行tcpdump的时候,我注意到在eth0上的请求长度为0.不知道为什么或者这是不是红鲱鱼,但值得一提。
任何想法,我已经遗漏了?
谢谢!
编辑1
添加了一个快速的Web应用程序,监听我想转发的端口,并显示“Hello,World!” 页。 我能够正常访问,因此EC2实例上的端口8080打开并接收请求。 只是端口转发不起作用。
我试过了
ssh -v -N -R 0.0.0.0:port_num:localhost:port_num
但是,这似乎也没有帮助。
编辑2
如果我在本地运行我的Web应用程序,运行ssh -N -R port_num:localhost:port_num ,然后从另一个terminalssh进入远程服务器,然后curl http://localhost:port_num/test ,我得到我的本地服务器。 所以转发正在工作。 只是从外部浏览器到eth0的请求不会被转发。 不知道这是如何在旧的服务器(它只是工作)完成,任何想法,我应该做什么,使这项工作? 同样,iptables被禁用,并且在旧服务器上也被禁用。
哦,傻了。 我忘了一个步骤,即在sshd_config中设置GatewayPorts on 。
没什么好说的。 希望这篇文章可以帮助未来的人。