Столкнулся с проблемой, когда нужно зайти на сайт site.com:2222, но админы моей сетки закрыли 2222 порт.
1. Чтобы пробросить порт, вам нужен свой сервер (или виртуальный сервер) и доступ к нему по SSH.
2. Если Вы можете подключаетесь к серверу по SSH по стандартному порту 22, то проброс делается командой в консоле:
ssh -L 1111:site.com:2222 my@server.ruТеперь Вы можете в бразуере набрать http://site.ru:1111 и на самом деле зайдете на http://site.ru:2222
*при этом у Вас откроется SSH-сессия (закроете ее и закроется порт).
Вот как посылается запрос на самом деле:
site.com:1111 => server.ru:22 => site.com:2222*но если site.com несуществующий домен, то браузер не знает на какой сервер посылать запрос и запрос никуда не уйдет. Такая ситуация бывает, когда например site.com это всего лишь виртуальный nginx-хост на server.ru. Значит, чтобы браузер понял, что запрос нужно посылать на server.ru, на локальном компьютере в /etc/hosts нужно прописать site.com 1.2.3.4 (где 1.2.3.4 адрес сервера site.com).
Нюанс: если Вы не привязаны к именам хостов, то в такой ситуации логичнее открыть порт так:
ssh -L 1111:127.0.0.1:2222 my@server.ruНа этом наверное все, но ниже приведу еще несколько примеров, может это поможет Вам разобраться.
Если Вы подключаетесь к серверу по SSH по другому порту, например по 33 порту, то команда выглядит так:
ssh -L 1111:site.com:2222 my@server.ru -p 33
Поясню:
localhost:1111 => server.ru:33 => site.com:2222
т.е. мы через сервер server.ru заходим на сайт site.com (говоря технически, ключ -L говорит ssh-клиенту: создай слушателя на порту 1111 и перенаправляй все запросы на адрес site.com:2222)
Теперь можно в браузере открыть http://localhost:1111/ и увидеть сайт site.com:2222
p.s. а если указать свой IP, то команда будет выглядеть так:
ssh -L
MyIP:1111:site.com:2222 my@server.ru
в этом случаем прокидываение происходит на IP моего текущего компа, а не на 127.0.0.1
ssh -L
3307:127.0.0.1:3306 my@server.ru
теперь можем подключиться к mysql:
mysql -u root -p -h localhost --port
3307
Пробрасываем порт с удаленного сервера на свой текущий комп (комп с которого выполняется следующая команда)
ssh -R 1111:localhost:9123 -N my@server.ru
Таким образом: если какая-то программа сервера server.ru отправит запрос на порт localhost:1111, то этот запрос будет перенаправлен на порт 9123 текущего компа.
Некоторые советуют добавлять опцию -n. А чтобы такое соединение не падало, то почитайте советы с хабра.
Это можно сделать командой в консоле:
ssh -D 1080 my@server.ru
далее, в настройках браузера указываем proxy-server так "socks5://localhost:1080" например в браузере Firefox:

Если не работает, то проверяем, что порт слушается:
$ sudo netstat -natp | grep 1080
tcp 0 0 127.0.0.1:1080 0.0.0.0:* LISTEN 1574484/ssh
tcp 0 0 127.0.0.1:1080 127.0.0.1:49748 ESTABLISHED 1574484/ssh
tcp 0 0 127.0.0.1:49748 127.0.0.1:1080 ESTABLISHED 1572439/./firefox
tcp6 0 0 ::1:1080 :::* LISTEN 1574484/sshУдачки!