Полезности по SSH. Туннель, проброс портов, socks-прокси

· 377 words · 2 minute read

Поскольку мне в последнее время приходится каждый день работать по ssh, то хочется поделиться теми вещами, которые мне помогают в работе. Прежде всего надо отметить, что часть отличных возможностей ssh остается в тени. Хотя в мане это все есть. В этот топик буду складывать фичи ssh, ssh туннели, пробросы портов и все что касаемо OpenSSH. Итак:

  1. Подключение цепочки. Например host-2 недоступный нам, но находится за host-1, который доступен. Тогда:

ssh -t user@host-1 ssh user@host-2

проходим двойную авторизацию и мы оказываемся на host-2. На самом деле это упрощение что бы не заходить отдельно на host-1. Звеньев цепочки может быть больше двух.. Если нужен X Server forwarding, то ключ -X надо писать для каждого хоста. Подробнее об опции -t ниже.

  1. Опция -t. Запуск консольного приложения на удаленном хосте в качестве оболочки. Например можно запускать screen, mc, или какое-нибудь собственное меню.

ssh -t user@remote_host mc

Запустит Midnight Commander, при выходе из него сессия оборвется.

  1. Проброс порта удаленного хоста на локальный порт. Пример: есть веб-сервер host-2 в частной сети, есть ssh доступ к remote_host, который находится в одной сети (или имеет доступ к host-2), нам надо залезть на этот веб-сервер:

sudo ssh -L 8888:host-2:80 user@remote_host

Именно с правами рута, после этого веб-сервер host-2 будет доступен у нас, localhost:8888

  1. Проброс локального порта c хоста на нашей стороне на удаленный хост. То есть допустим, надо на удаленном remote_host открыть веб-сервер host-1 который доступен только нам.

sudo ssh -R 8888:host-1:80 user@remote_host

И на remote_host на localhost:8888 будет проброшен веб-сервер host-1

  1. Проброс удаленных GUI приложений на локальный X Server.

ssh -X user@host

для этого в /etc/ssh/sshd_config должна быть опция: X11Forwarding yes (В Debian/Ubuntu включена по дефолту) На локальном компьютере должен быть установлен и запущен X Window System. В Windows - Xming, в MacOS - XQuartz.

(Полезности по SSH. Туннель, проброс портов, socks-прокси)

  1. Динамический проброс. Ситуация: необходим прокси-сервер, или нужда поработать с сервисами в закрытой удаленной сети, находящейся за host.

sudo ssh -D 777 user@host

И тогда на localhost:777 будет работать socks сервер, который соответственно работает с окружением удаленного хоста host, поверх ssh соединения.

(Полезности по SSH. Туннель, проброс портов, socks-прокси)

  1. Копирование файла поверх SSH

Файл source-file c локального хоста на удаленный remote_host:

scp source-file user@remote_host:~/

Файл с удаленного хоста remote_host на локальный, неудобство в том, что нужно знать точный путь файла-источника:

scp user@remote_host:~/source-file file

На сегодня все. Позже еще добавлю про поднятие ssh туннелей, как их сам опробую :)