我有一个我在本地运行的测试应用程序,并使用远程端口转发来让其他人访问它.
这很好用,直到我在EC2上设置一个新的服务器实例.
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,然后从另一个终端ssh进入远程服务器,然后curl http:// localhost:port_num / test,我从本地服务器获得响应.所以转发工作正常.只是来自外部浏览器的请求转到eth0不会被转发.不确定这是如何在旧服务器中完成的(它只是有效),任何想法我应该做什么才能使这项工作?同样,iptables被禁用,并且在旧服务器上也被禁用.
哦,傻我.我忘记了一个步骤,即在sshd_config中设置GatewayPorts.
很多事情都没有.希望这篇文章可以帮助将来的某个人.