Info
Content

SSH Tunneling

https://habr.com/ru/post/435546/

  • SSH Socks Proxy

Все очень просто.
Подключаемся по ssh к серверу или какому либо хосту (через который будем проксировать трафик) с добавлением ключа -D и вместе с ним указываем порт.

~$ ssh connect@vandud.ru -D 8888

Screenshot-from-2019-09-14-17-49-45.png

После этого нужно настроить подключение в приложении трафик которого нужно проксировать. Например firefox
В настройках подключения указываем localhost и указанный ранне порт 8888, все.

Screenshot-from-2019-09-14-17-52-33.png

Готово, трафик со всех приложений идет по-старому, кроме настроенного приложения (firefox)

Screenshot-from-2019-09-14-17-54-16.png
Screenshot-from-2019-09-14-17-54-54.png

  • SSH Туннель (переадресация портов)

~$ ssh -L 8888:127.0.0.1:80 root@45.8.228.69

Эта команда создает защищенный туннель между локальным хостом и удаленным (но только между определенными портами).
То есть при подключении к порту 8888 на локальной машине, запрос идет на 80 порт удаленной машины (конкретно в этом примере). Вместо 127.0.0.1 можно указать какой либо другой адрес, и запрос будет идти на него (от имени удаленной машины)
На скриншоте это видно (на удаленной машине установлен nginx и при запросе на localhost:80 отдается страница wp)

Screenshot-from-2019-09-14-18-37-13.png

Еще пример
Делаю вот такую команду

vandud@vandud-workstation:~$ ssh -L 8888:95.214.62.136:443 root@45.8.228.69

Она означает, что при подключении к localhost:8888 подключаться к 95.214.62.136:443 от имени 45.8.228.69. Это действительно работает.

Screenshot-from-2019-09-14-18-44-45.png

Можно также указать локальный адрес

vandud@vandud-workstation:~$ ssh -4 -L 0.0.0.0:8888:95.214.62.136:443 root@45.8.228.69

Получается то же самое

vandud@vandud-workstation:~$ openssl s_client -connect 0.0.0.0:8888 | grep "subject"
Can't use SSL_get_servername
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = alexgyver.ru
verify return:1
subject=CN = alexgyver.ru
^C

Но не работает когда указываешь белые адреса (не локальные)

  • Обратный SSH Туннель

С помощью обратного ssh-туннеля можно получать доступ к мошине за NAT
В качестве примера, сделаю это с рабочим компьютером (он за NAT) и VPS сервером (с него буду подключаться к рабочему компу).

На рабочем компе делаю следующее

vandud@vandud-workstation:~$ ssh root@45.8.228.69 -R localhost:222:localhost:22 -N
root@45.8.228.69's password: 

Конструкция -R localhost:222:localhost:22 означает, что при подключении на удаленной машине к localhost:222 подключаться к рабочему компьютеру на порт 22.

Ключ -N указывает, что не нужно запускать оболочку (после такого подключения работать с машиной по ssh не получится, так как нет приглашения -> некуда вводить команды).

Далее нужно с VPS ввести следующую команду

root@vandud-main-server:~# ssh vandud@localhost -p 222

Ввести пароль и все. Таким образом можно подключаться по ssh к рабочему компьютеру с удаленной VPS

Screenshot-from-2019-09-14-20-30-40.png

  • SSHFS (дотестить и написать тут)(пункт 16 в статье на хабре)

No Comments
Back to top