Сила .ssh/config

Извечная задача получить доступ к одной машине через другую чаще всего решается при помощи SSH-туннелей — удобно, пока не приходится получать доступ к группе машин. Недостаток традиционного решения — не всегда удаётся придумать удачное правило выбора портов, чтобы не запутаться как мы должны соединяться, чтобы попасть на нужную машину. SSH-туннель (12.37КиБ)
Пример конфигурационного файла для получения доступа к группе машин

К счастью, есть решение лучше, которое позволяет соединяться через SSH наиболее естественным способом — как будто у нас есть прямой доступ.

Тут нам пригодится файл ~/.ssh/config, служащий для конфигурирования SSH-соединений, я обычно туда вписываю символические имена вместо айпи-адресов, логины и прочую мишуру. Но его возможности несколько шире.

Например на картинке выше у меня конфигурация, которая позволяет к любому айпи-адресу, который начинается с 172.17.0 через машину 172.17.1.131. Вся магия заключается в директиве ProxyCommand — в ней указано, что надо залогиниться на 172.17.1.131 и там запустить команду nc, которая откроет соединение на нужный нам адрес (он будет подставлен вместо «%h»).

Таким образом получается соединение, весь трафик которого без изменений попадает на нужный нам адрес, а уже в этом соединении мы выполняем обычный логин на нужную нам машину. Все аутентификации у меня, естественно, сделаны через сертификаты.
8 марта 2017 16:15

hshhhhh.name (инкогнито)
8 марта 2017, 16:37

Можно лучше и создать хост для прокси :)

<code>
Host _proxy
HostName proxy.address.com
IdentityFile ~/.ssh/keys/proxy.key
User proxy_user

Host _destination
ProxyCommand ssh _proxy -W %h:%p
HostName destination.address.com
IdentityFile ~/.ssh/keys/destination.key
User destination_user
</code>

Потом можно писать
ssh _destination

bolknote.ru (bolknote.ru)
8 марта 2017, 17:16, ответ предназначен hshhhhh.name

Не вижу чем этот вариант лучше. Вроде как многословнее гораздо.

hshhhhh.name (инкогнито)
8 марта 2017, 21:40

Ну так можно использовать разные ключи для прокси и не указывать их как параметры строки
Так можно менять параметры прокси в одном месте и это удобно если прокси использует больше чем в одном месте
Да и строка подключения к прокси "ProxyCommand ssh _proxy -W %h:%p" выглядит намного приятнее :)

bolknote.ru (bolknote.ru)
9 марта 2017, 06:13, ответ предназначен hshhhhh.name

Понятно — наглядность. Ну, у меня сертификат один и хост никакой не прокси, в другие подсети в него не выйдешь. :) А вот что можно обойтись без nc — это действительно хорошо!

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)