SSH Tunneling
https://habr.com/ru/post/435546/
-
SSH Socks Proxy
Все очень просто.
Подключаемся по ssh к серверу или какому либо хосту (через который будем проксировать трафик) с добавлением ключа -D
и вместе с ним указываем порт.
~$ ssh connect@vandud.ru -D 8888
После этого нужно настроить подключение в приложении трафик которого нужно проксировать. Например firefox
В настройках подключения указываем localhost
и указанный ранне порт 8888
, все.
Готово, трафик со всех приложений идет по-старому, кроме настроенного приложения (firefox)
-
SSH Туннель (переадресация портов)
~$ ssh -L 8888:127.0.0.1:80 root@45.8.228.69
Эта команда создает защищенный туннель между локальным хостом и удаленным (но только между определенными портами).
То есть при подключении к порту 8888 на локальной машине, запрос идет на 80 порт удаленной машины (конкретно в этом примере). Вместо 127.0.0.1 можно указать какой либо другой адрес, и запрос будет идти на него (от имени удаленной машины)
На скриншоте это видно (на удаленной машине установлен nginx и при запросе на localhost:80 отдается страница wp)
Еще пример
Делаю вот такую команду
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. Это действительно работает.
Можно также указать локальный адрес
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
-
SSHFS (дотестить и написать тут)(пункт 16 в статье на хабре)
No Comments