SSH сквозь бастион хост
Концепция бастиона не нова и давно используется для доступа в охраняемый периметр. Но вот как получить доступ к внутренним серверам в прозрачном режиме? Тут мы это и рассмотрим.
ProxyJump
Опция командной строки
Начиная с версии SSH 7.3 есть настройка конфигурации клиента ProxyJump
или -J
флаг:
ssh -J <bastion-host> <remote-host>
Так же можно указать разные имена пользователей и порты:
ssh -J bastionuser@<bastion-host:port> user@<remote-host:port>
Так же, можно указать несколько бастионов:
ssh -J <bastion1>,<bastion2>,<bastion3> <remote-host>
SSH config
### The Bastion Host
Host bastion-host-nickname
HostName bastion-hostname
### The Remote Host
Host remote-host-nickname
HostName remote-hostname
ProxyJump bastion-host-nickname
А дальше как обычно:
ssh remote-host-nickname
Альтернативный метод: форвардинг stdin и stdout
Если ваш ssh клиент более старый, чем 7.3, то можно использовать такой подход:
ssh -o ProxyCommand="ssh -W %h:%p bastion-host" remote-host
Собственно, это все так же можно оформить в конфиг, чтоб не запоминать:
Host remote-host
ProxyCommand ssh bastion-host -W %h:%p
А дальше опять просто:
ssh remote-host
Комментарии: