2 заметки с тегом

ssh_config

ProxyJump

Как-то писал заметку про .ssh/config и опцию ProxyCommand, а потом почти сразу после этого, перечитывая руководство по теме, наткнулся на схожую опцию ProxyJump:

Host 10.1.10.*
        IdentityFile ~/.ssh/id_rsa
        #ProxyCommand /usr/bin/ssh -W %h:%p bolk@rptn.tunnel
        ProxyJump rptn.tunnel

Возможности её у́же, зато пользоваться ею проще. Кроме указания в конфиге, её просто использовать и из командной строки, как ключ, причём цепочки выстраиваются очень просто:

ssh -J bolk.sed-php7:2258,rptn.tunnel 10.1.10.158

Сейчас в большинстве случаев использую именно этот ключ. С его помощью указывать туннели до того просто, что я даже не утруждают с занесением в конфигурационный файл.

2018   ssh   ssh_config   программирование

Сила .ssh/config

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

SSH-туннель (12.37КиБ)
Пример конфигурационного файла для получения доступа к группе машин

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

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

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

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

2017   ssh   ssh_config   программирование