Бывают ситуации, когда вам нужно предоставить ssh доступ к своему ПК. А выделенного IP адреса в интернете у него нет. И пробросить порт наружу с роутера нельзя. Знакомая ситуация, не правда ли? Особенно тем, кто сидит на каналах поддержки.
Но есть хитрость. Хитрость сработает только в том случае, если у вас есть хоть какой-нибудь доступ по ssh к серверу или VDS (или даже shared хостингу). В принципе, не такая уж это и сложность найти шелл. hax.tor, хотя бы… или http://www.devio.us/
Для начала поставим условия. В ходе чтения мануала обращайте внимание на то, в каком шелле выполняем команду)
localpc — локальный PC, к которому нужно получить доступ. Нуууу… например с IP 192.168.0.2
server — сервер, у которого есть выделенный IP. IP возьмём для примера 8.8.8.8. ssh у этого сервера висит на 22м порту.
remotepc — PC, с которого нужно получить доступ к localpc.
Пользователей зовут:
locuser на localpc
servuser на server
remuser на remotepc
Рута иметь для этого способа, кстати, не обязательно.
На localpc и server, само собой, должен стоять openssh-server.
Важно! Для наглядности в рамках этого мануала на localpc openssh-server слушает порт 2222. Обычно же это 22.
Создаём туннель, который откроет на server порт, через который мы можем зайти по ssh на localpc:
locuser@localpc:~$ ssh -f -N -R 10000:localhost:2222 servuser@8.8.8.8 -p22
Теперь на server на интерфейсе lo0 (localhost) открыт порт 10000, используя который мы можем зайти по ssh на localpc.
Зайдём с remotepc на server:
remuser@remotepc:~$ ssh servuser@8.8.8.8 -p22
Зайдя по ssh на server выполним команду:
servuser@server:~$ ssh locuser@localhost -p10000
После чего у нас спросят пароль и пустят по ssh на localpc. Удачного всем хождения по страшным туннелям =)
я обычно с локальной машины в такой ситуации пользовался autossh, а то бывает провайдеры шалят
Дополнения:
1) Пробрасывать порты можно не только со своего компа:
locuser@localpc: ssh -R 2022:other_host:22 serveruser@server
отлично все пробросит.
2) Если не хочется давать тому, кто должен подключаться логин на server (который в примере автора представлен гугловым DNS, прозреваю страшное ;), можно пробрасывать порт не на loopback а на все интерфейсы сразу, для этого нужно включить в конфиге sshd опцию
GatewayPorts yes
Зачем нужны такие извращения? Ну, иногда нужно дать какому-то внешнему чуваку покопаться в чем-то в локалке, не поднимать же ему для этого VPN ;)
P.S. в моем случае это была АТС на которой были какие-то траблы с сертификатами).
@anonymous
Ну не палить же, где я на самом деле работаю =)
Да, вы правы, спасибо за комментарий.