Ssh-тунелі в прикладах, rtfm linux, devops і системне адміністрування

Розглянемо створення і налаштування за кількома варіантами.
І так, у нас є сервер, назвемо його host-1. До нього у нас є повний доступ тільки по SSH - але нам необхідно відкрити Tomcat. працює на порту 8082 - до якого нас ніяк пропустити не можуть.
Розглядати варіант будемо з налаштуванням Windows і Putty.
Відкриваємо SSH-з'єднання до потрібного сервера, логіном.
Далі - правою кнопкою клацають на заголовку вікна Putty. вибираємо Change settings. переходимо в SSH> Tunnels.
Вказуємо такі параметри:
Source port: будь-який невикористаний порт у вашій системі;
Destination port: 127.0.0.1:8082

Переходимо в настройки браузера, і встановлюємо параметри проксі:

Якщо тунель не працює - перевірте на сервері, чи включена пересилання пакетів. У файлі / etc / ssh / sshd_config знайдіть і раськоментіруйте рядок:
І перезапустити SSHd:
Виконуємо схожі дії, але з невеликими відмінностями. Налаштування в Putty:

Source port - залишаємо колишній, але замість Local - вибираємо Dynamic. Натискаємо Add. Apply.
Переходимо до налаштувань браузера:

Зверніть увагу, що тип проксі тут не HTTP - а SOCKS.
Насолоджуємося доступом до улюблених сайтів.
І більш цікавий випадок.
Маємо колишній host-1. Крім нього - другий сервер, назвемо його host-2. Крім цього - у нас є машина з Windows. якої необхідно надати доступ до ресурсу TeamCity на сервері host-1 на порту 8111. При цьому - доступ з Windows-машини у нас є тільки до сервера host-2. і тільки на 22-ій порт.
Для початку - піднімаємо тунель між host-1 і host-2. Виконуємо на host-1:
Так ми відкриваємо тунель, який локально (на host-1) дивиться на порт 8111. а з іншого боку - машина host-2. на якій відкривається порт 8082. і чекає вхідних з'єднань. При отриманні пакетів на порт 8082 (при чому - тільки по інтерфейсу lo0. Це важливо) - він буде їх перенаправляти на машину host-1 порт 8111.
Що стосується інтерфейсу lo0. При встановленні SSH -туннеля, навіть при вказівці зовнішнього IP машини - з'єднання піднімається тільки з localhost. тобто 127.0.0.1.
Подивимося на host-2:
Що б змінити це - необхідно відредагувати файл конфігурації демона sshd - / etc / ssh / sshd_config для зміни налаштувань:
Але зараз ми цього робити не будемо, це просто замітка.

SSH досить чутливий до втрат пакетів, тому тунелі можуть часто обриватися.
Що б уникнути цього - можна або погратися з параметрами у файлі налаштувань sshd - / etc / ssh / sshd_config:
Або - скористатися утилітою autossh: