Debian.pro

Блог для пользователей и администраторов Debian


Как предоставить доступ по ssh к своему ПК/серверу, если до него нет прямого маршрута из интернета.

Бывают ситуации, когда вам нужно предоставить 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. Удачного всем хождения по страшным туннелям =)


Комментарии (3):

  1. vasm :

    я обычно с локальной машины в такой ситуации пользовался autossh, а то бывает провайдеры шалят

  2. anonymous :

    Дополнения:

    1) Пробрасывать порты можно не только со своего компа:

    locuser@localpc: ssh -R 2022:other_host:22 serveruser@server

    отлично все пробросит.

    2) Если не хочется давать тому, кто должен подключаться логин на server (который в примере автора представлен гугловым DNS, прозреваю страшное ;), можно пробрасывать порт не на loopback а на все интерфейсы сразу, для этого нужно включить в конфиге sshd опцию
    GatewayPorts yes

    Зачем нужны такие извращения? Ну, иногда нужно дать какому-то внешнему чуваку покопаться в чем-то в локалке, не поднимать же ему для этого VPN ;)

    P.S. в моем случае это была АТС на которой были какие-то траблы с сертификатами).

  3. @anonymous
    Ну не палить же, где я на самом деле работаю =)
    Да, вы правы, спасибо за комментарий.

Написать комментарий