У меня есть удаленный компьютер с сервером, к которому я хотел бы получить доступ локально. Однако я могу подключиться к машине только по 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 user@ec2-xx-xx-xx-xx.compute-1.amazonaws.com
Затем направив свой браузер на http://ec2-xx-xx-xx-xx.compute-1.amazonaws.com:5555/ делает не достань мне страницу. Приложение, которое его использует, дает ERR_CONNECTION_REFUSED
. Однако порт является быть использованным. Если из оболочки ssh, которая выполняет пересылку, я пытаюсь запустить сервер на том же порту:
$ python -m SimpleHTTPServer 5555
...
socket.error: [Errno 98] Address already in use
Что дает? Я не самый большой сетевой мастер, как может быть очевидно.
С вашего локального компьютера:
$ ssh -L5555:localhost:5555 user@remote-machine.example.com
Тогда у вас будет доступ к порту 5555 на удаленном компьютере из вашей локальной системы. Просто укажите в браузере http://localhost:5555/
Похоже, вам необходимо включить перенаправление портов в Amazon Elastic Load Balancer для порта 5555. Используете ли вы ELB перед своим экземпляром?