我有一台运行服务器的远程机器,我想在本地访问它。但是,我只能通过 SSH 进入该机器,而不能使用任何其他端口。
我启动了一个 Amazon EC2 实例并打开了它的所有端口。计划是从该机器到 EC2 实例建立一条远程隧道。
在远程机器上,服务器正在运行:
$ links http://localhost:5555/foobs
这样就可以foobs
正确访问页面了。在 EC2 上,如果服务器托管在那里,我可以访问端口 5555:
$ echo really > index.html
$ python -m SimpleHTTPServer 5555
Serving HTTP on 0.0.0.0 port 5555 ...
然后,从我的本地浏览器:http://ec2-xx-xx-xx-xx.compute-1.amazonaws.com:5555/给我“真正”的页面。
但是,如果我进行端口转发,从机器上:
$ ssh -R 5555:ec2-xx-xx-xx-xx.compute-1.amazonaws.com:5555 -i keys/key.pem [email protected]
然后将我的浏览器指向http://ec2-xx-xx-xx-xx.compute-1.amazonaws.com:5555/做不是获取页面。使用该页面的应用程序给出ERR_CONNECTION_REFUSED
。但是,端口是正在使用。如果我从执行转发的 ssh shell 尝试在同一个端口上运行服务器:
$ python -m SimpleHTTPServer 5555
...
socket.error: [Errno 98] Address already in use
怎么回事?显然,我并不是网络方面的专家。
答案1
从本地机器:
$ ssh -L5555:localhost:5555 [email protected]
然后你就可以从本地系统访问远程机器上的端口 5555。只需将浏览器指向http://localhost:5555/
答案2
看起来您需要在 Amazon Elastic Load Balancer 中为端口 5555 启用端口转发。您在实例前面使用 ELB 吗?