Ссылки с примерами:
1 2 3 4 5 |
https://habr.com/ru/post/435546/ https://habr.com/ru/post/122445/ https://codex.so/ssh-tunnel https://ualinux.com/ru/stream/nabor-komand-dlya-raboty-s-ssh-na-vse-sluchai-zhizni https://www.opennet.ru/tips/1691_ssh_tunnel_socks.shtml |
ssh -J:
1 2 3 4 5 |
Подключаемся к host2 через host1: ssh -J host1 host2 Подключаемся к host4 через цепочку хостов: ssh -J host1,host2,host3 host4 |
ssh -L forward port:
1 2 3 4 |
!!! 8080 - локальный порт !!! 80 - порт который мы пробрасываем !!! serv1 - удаленный сервер на котором слушается 80 порт / можно указать localhost ssh -L 8080:localhost:80 serv1 |
ssh -L цепочка подключений:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
Описание: localhost - ПК с которого мы подключаемся serv1 - ПК с которого доступен serv2 serv2 - ПК к которому нет доступа с localhost Что: Очень хочется подключится по ssh к serv2 с localhost Но для localhost доступен только serv1 Подготовка: Открываем две консоли: Первая консоль: На ПК с которого будем подключатся запускаем выполняем ssh -L 2222:0.0.0.0:2222 serv1 Если команда выполнилась успешно нас подключит к серверу serv1 Выполняем уже на serv1: ssh -L 2222:0.0.0.0:2222 serv2 Если команда выполнилась успешно нас подключит к серверу serv2 Выполняем на serv2 !!! localhost имеется введу сам сервер serv2 ssh -L 2222:0.0.0.0:22 localhost Оставляем окно открытым, пока мы его не закрыли туннель работает Использование: Вторая консоль: ssh localhost -p 2222 Проблемы: !!! ошибка WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! !!! За чем? защищает нас от атаки (man-in-the-middle attack) !!! но нам нужно подключится через другой хост !!! временно игнорируем подпись хоста vim .ssh/config --------------- Host localhost StrictHostKeyChecking no -------------- |
SSH socks proxy:
1 2 3 4 5 6 7 8 9 10 11 |
0. на рабочей станции: ssh -D 7777 user@remotehost -f -N Опции: -D 7777 - эмуляция SOCKS сервера через порт 7777 -f - работа в фоне, после аутентификации -N - не запускать shell на удаленном хосте user@remotehost - хост имеющий доступ в интернет 1. Приложению которому требовалось интернет указываем socks5 proxy google-chrome --proxy-server="socks5://192.168.1.10:7777" |
Дополнительно:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
ssh -p2222 server9 - подключится по ssh к server9, используя порт 2222 ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@server - подключится по ssh к server используя учетные данные user, игнорируем все предупреждения о WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! ssh -o StrictHostKeyChecking=no user@host - подключится по ssh к server используя учетные данные user, игнорируем все предупреждения IDENTIFICATION HAS CHANGED! ssh user@host cat file.txt - выполнить (cat file.txt) на удаленной системе host ssh user@host df -h - выполнить команду df -h на удаленной системе host ssh user@host sudo reboot - - выполнить команду sudo reboot на удаленной системе host curl serv1:8080 - подключится к serv1 на порт 8080, если там веб сервер отобразит страницу nc localhost 2222 - подключится к localhost на порт 2222 scp -P2222 systemrescue-8.04-amd64.iso user@serv100: - выполнить копирование файла ystemrescue-8.04-amd64.iso из текущего каталога, используем порт 2222, ПК server100 !!! внимание для rsync использование / может привести к различным последствиям rsync -avz /home/user/folder serv1:/home/user/folder - синхронизация /home/user/folder в serv1:/home/user/folder rsync -avz /home/user/folder/ serv1:/home/user/folder/ - синхронизация содержимого лfolder в serv1:/home/user/folder rsync -avz /home/user/folder serv1:/home/user/folder/ - каталог будет скопирован внутрь и мы получим на удаленном ПК /home/user/folder/folder |
Пример проброса порта 80, 443, 544
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Пример раз ssh -p 2154 -L 127.0.0.1:8080:192.168.127.118:80 -L 127.0.0.1:8443:192.168.127.118:443 -L 127.0.0.1:8554:192.168.118.124:554 root@192.168.10.240 root@192.168.10.240 - ПК к которому у нас есть доступ по ssh -p 2154 - этот порт мы используем для подключения к ПК root@192.168.10.240 127.0.0.1:8080:192.168.127.118:80 - с локального хоста пробрасываем порт 8080 на ПК 192.168.10.240 там в свою очередь этот порт пробрасываем на 192.168.127.118:80 127.0.0.1:8443:192.168.127.118:443 - с локального хоста пробрасываем порт 8443 на ПК 192.168.10.240 там в свою очередь этот порт пробрасываем на 192.168.127.118:443 127.0.0.1:8554:192.168.127.118:554 - с локального хоста пробрасываем порт 8443 на ПК 192.168.10.240 там в свою очередь этот порт пробрасываем на 192.168.127.118:544 Пример два ssh -p 2154 -L 127.0.0.1:8080:192.168.127.124:80 -L 127.0.0.1:8443:192.168.127.124:443 -L 127.0.0.1:8554:192.168.127.124:554 root@192.168.10.240 root@192.168.10.240 - ПК к которому у нас есть доступ по ssh 127.0.0.1:8080:192.168.127.124:80 - с локального хоста пробрасываем порт 8080 на ПК 192.168.10.240 там в свою очередь этот порт пробрасываем на 192.168.127.124:80 127.0.0.1:8443:192.168.127.124:443 - с локального хоста пробрасываем порт 8443 на ПК 192.168.10.240 там в свою очередь этот порт пробрасываем на 192.168.127.124:443 127.0.0.1:8554:192.168.127.124:554 - с локального хоста пробрасываем порт 8443 на ПК 192.168.10.240 там в свою очередь этот порт пробрасываем на 192.168.127.124:544 Для подключения со своего пк просто используем браузер http://localhost:8080 http://localhost:8433 |