TGViewer
Linux Ready | DevOps Linux Ready | DevOps @linux_ready · 11.2K subscribers
Post #1604 625
Подключаемся к закрытым серверам через SSH ProxyJump!

В инфраструктуре серверы часто не имеют публичного IP-адреса и доступны только из внутренней сети. При этом отдельный сервер может быть доступен извне и использоваться как промежуточный SSH-узел — bastion или jump host.

Например, bastion доступен по адресу 203.0.113.10, а внутренний сервер имеет адрес 10.0.0.20. Напрямую подключиться к внутреннему серверу из внешней сети нельзя:
ssh admin@10.0.0.20


Если bastion имеет доступ к 10.0.0.20:22, используем ProxyJump:
ssh -J user@203.0.113.10 admin@10.0.0.20


(адреса в примерах документационные — при повторении замените их на свои)

SSH сначала подключится к 203.0.113.10, а соединение с SSH-сервером на 10.0.0.20 будет установлено через этот промежуточный узел.

Если SSH на bastion работает на нестандартном порту, его можно указать прямо в параметре -J:
ssh -J user@203.0.113.10:2222 admin@10.0.0.20


Для постоянной работы удобнее описать оба сервера в ~/.ssh/config:
Host bastion
HostName 203.0.113.10
User user

Host internal
HostName 10.0.0.20
User admin
ProxyJump bastion


После этого подключение к внутреннему серверу выполняется обычной командой:
ssh internal


Через тот же маршрут можно использовать scp:
scp backup.tar.gz internal:/tmp/


Или sftp:
sftp internal


Если до целевого сервера нужно пройти через несколько промежуточных узлов, их можно перечислить через запятую:
ssh -J user@gateway1,user@gateway2 admin@internal


То же самое можно записать в конфигурации:
Host internal
HostName 10.0.0.20
User admin
ProxyJump gateway1,gateway2


Для bastion и внутреннего сервера можно использовать разные SSH-ключи:
Host bastion
HostName 203.0.113.10
User jump
IdentityFile ~/.ssh/bastion_ed25519

Host internal
HostName 10.0.0.20
User admin
IdentityFile ~/.ssh/internal_ed25519
ProxyJump bastion


Приватный ключ от внутреннего сервера при этом не требуется копировать на bastion. Аутентификацию на конечном сервере выполняет локальный SSH-клиент.

Посмотреть итоговую конфигурацию, которую SSH применит для подключения, можно через:
ssh -G internal


Например, отдельно вывести основные параметры:
ssh -G internal | grep -Ei 'hostname|user|proxyjump|identityfile'


Если соединение не устанавливается, запускаем SSH с диагностическим выводом:
ssh -v internal


Для более подробной диагностики:
ssh -vvv internal


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

ProxyJump можно использовать вместе с обычным port forwarding. Например, PostgreSQL работает на внутреннем сервере и слушает только локальный порт 5432:
ssh -N -J user@203.0.113.10 \
-L 5433:127.0.0.1:5432 \
admin@10.0.0.20


После этого локально подключаемся к базе через порт 5433:
psql -h 127.0.0.1 -p 5433 database


SSH-соединение пройдёт через bastion до внутреннего сервера, а перенаправление на 127.0.0.1:5432 будет выполнено уже со стороны конечного SSH-сервера.

🔥 ProxyJump позволяет подключаться к серверам во внутренних сетях через bastion без ручного создания промежуточных SSH-сессий. Настройку можно вынести в ~/.ssh/config и использовать тот же маршрут для ssh, scp, sftp и SSH-туннелей.

🚪 Linux Ready | #практика
  • 🔥 8
  • ❤ 6
  • 👍 5
More from @linux_ready
  1. Oct 7, 2026На Stepik запустили мощный курс по «Troubleshooting Docker и Kubernetes: поиск и устранени…
  2. Oct 7, 2026📂 Шпаргалка по DevOps, SRE и Platform Engineering! Например, SRE фокусируется на надёжнос…
  3. Oct 6, 2026В GNU/Linux есть отдельная утилита для преобразования чисел внутри текстовых потоков! Допу…
  4. Oct 6, 2026Удобный бот для мониторинга доступности сайтов и серверов Никаких сторонних сайтов и прило…
  5. Oct 6, 2026Большой файл можно клонировать почти мгновенно без полного копирования его данных! На файл…
  6. Oct 5, 2026Для отладки изолированного процесса необязательно заходить внутрь контейнера или менять ег…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →