Корисності по SSH. Тунель, кидок портів, socks-проксі
Оскільки мені останнім часом доводиться щодня працювати по ssh, то хочеться поділитися тими речами, які мені допомагають в роботі. Перш за все треба відзначити, що частина відмінних можливостей ssh залишається в тіні. Хоча в мане це все є. В цей топік буду складати фичи ssh, ssh тунелі, кидок портів і все що стосовно OpenSSH. Отже:
1. Підключення ланцюжка. Наприклад host-2 недоступний нам, але знаходиться за host-1, який доступний. тоді:
ssh -t user @ host-1 ssh user @ host-2
2. Опція -t. Запуск консольного застосування на віддалений хост в якості оболонки. Наприклад можна запускати screen, mc, або яке-небудь власне меню.
ssh -t user @ remote_host mc
Запустить Midnight Commander, при виході з нього сесія обірветься.
3. Проброс порту віддаленого хоста на локальний порт. Приклад: є веб-сервер host-2 в приватній мережі, є ssh доступ до remote_host, який знаходиться в одній мережі (або має доступ до host-2), нам треба залізти на цей веб-сервер:
sudo ssh -L 8888: host-2: 80 user @ remote_host
Саме з правами рута, після цього веб-сервер host-2 буде доступний у нас, localhost: 8888
4. Проброс локального порту c хоста на нашому боці на віддалений хост. Тобто припустимо, треба на віддаленому remote_host відкрити веб-сервер host-1 який доступний тільки нам.
sudo ssh -R 8888: host-1: 80 user @ remote_host
І на remote_host на localhost: 8888 буде проброшен веб-сервер host-1
5. Проброс віддалених GUI додатків на локальний X Server.
для цього в / etc / ssh / sshd_config повинна бути опція: X11Forwarding yes (В Debian / Ubuntu включена по дефолту) На локальному комп'ютері повинен бути встановлений і запущений X Window System. У Windows - Xming, в MacOS - XQuartz.
6. Динамічний кидок. Ситуація: необхідний проксі-сервер, або потреба попрацювати з сервісами в закритій віддаленої мережі, що знаходиться за host.
sudo ssh -D 777 user @ host
І тоді на localhost: 777 працюватиме socks сервер, який відповідно працює з оточенням віддаленого хоста host, поверх ssh з'єднання.
Файл source-file c локального хоста на віддалений remote_host:
scp source-file user @ remote_host:
Файл з віддаленого хоста remote_host на локальний, незручність в тому, що потрібно знати точний шлях файлу-джерела:
На сьогодні все. Пізніше ще додам про підняття ssh тунелів, як їх сам випробують :)