Let the SSH be with you

Let the SSH be with you

Мне часто приходится работать с удалёнными машинками, в большей или меньшей степени изолированными от окружающей сети. К некоторым нет доступа, кроме как по ssh, у других нет доступа во внешнюю сеть, у третьих - и то и другое сразу :). Итак, что же можно сделать, имея только ssh-доступ на удалённую машину?

Получить доступ к любому порту

Например, я хочу подёргать API бэкэнда, висящий на недоступном мне порту 8888 сервера test.server:

ssh -L 8888:locahost:8888 user@test.server

Этой командой я говорю: “создай ssh-соединение с хостом test.server под пользователем user” (ssh user@test.server), “которое будет перенаправлять траффик с порта 8888 моей машины” (-L 8888) “на порт 8888 удалённой машины” (:localhost:8888). После этого я спокойно общаюсь с API на порту 8888 моей машины.

Подменить удалённый сервис локальным

Или я собрал у себя новую версию бэкэнда и хочу по-быстрому проверить, как он интегрируется с фронтом на машине test.server:

ssh -R 8888:locahost:8888 user@test.server

Этой командой я говорю: “создай ssh-соединение с хостом test.server под пользователем user” (ssh user@test.server), “которое будет перенаправлять траффик с порта 8888 удалённой машины” (-R 8888) “на порт 8888 моей машины” (:localhost:8888). Теперь фронт, который думает, что общается с локальным бэкэндом, на самом деле ведёт диалог с бэкэндом, поднятым у меня.

Кстати, об использовании ssh-тоннелей в автотестах уже писал Кирилл Меркушев на blog.qatools.ru.

Соединить хосты из разных сетей

Не сложно догадаться, что можно соединить два тоннеля и устроить связь между хостами, которые раньше друг друга не видели :).

Поделиться интернетом

Нужно будет поставить у себя прокси или какой-нибудь squid и настроить проксирование стандартных (80/443) портов. После этого прокидываем эти порты к себе на машину и прописываем локальный прокси на удалённой машине.

Править удалённые файлы локально

Кроме сетевых портов, можно прокидывать целую файловую систему с помощью sshfs. Получается что ты работаешь с локальными файлами привычными тебе инструментами, а все твои изменения моментально оказываются на удалённом сервере.

Приятные мелочи

Чтобы не занимать окно терминала висящей сессией, добавь флаг -fN. N говорит что ты не будешь посылать в этой сессии команды, а f отправит процесс в фон. А чтобы не следить за состоянием соединения и автоматически его подымать, используй autossh.

And let the ssh be with you %)!

comments powered by Disqus