Как подключиться через SSH через несколько хостов, если каждый из промежуточных хостов принимает ключи только от первого хоста?

Вопрос или проблема

Я хочу подключиться с хоста A через хост B через хост C к хосту D с использованием SSH-ключей, не изменяя конфигурацию SSH.

Хост A находится в открытом интернете, хосты B, C и D находятся в одной локальной сети.

  • Хост B принимает ключи от хоста A.
  • Хост C принимает только ключи от хоста A.
  • Хост D принимает только ключи от хоста A.

Это возможно?

При условии, что все хосты — A, B, C и D — имеют открытый ключ вашего клиента в соответствующем файле ~/.ssh/authorized_keys, вам просто нужно использовать опцию -A (пересылка агента аутентификации) с начальным SSH-соединением так:

ssh -A hostA.com

Дополнительную информацию об опции -A (пересылка агента аутентификации) можно найти на странице man; man ssh:

-A Включает пересылку соединения агента аутентификации. Это также может быть указано для каждого хоста в конфигурационном файле.

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

Ответ или решение

Как подключиться к нескольким хостам через SSH с помощью ключей

Подключение через SSH к нескольким хостам, где каждый промежуточный хост принимает только ключи от первого хоста, является распространенной задачей среди системных администраторов и DevOps-специалистов. В данной статье мы подробно рассмотрим, как организовать такое подключение, с использованием SSH-агента и ключей, не редактируя конфигурацию SSH.

Проблема

В данном сценарии у нас имеется четыре хоста:

  • Хост A: ваш локальный компьютер с доступом к интернету.
  • Хост B: первый промежуточный хост, который принимает ключи только от хоста A.
  • Хост C: второй промежуточный хост с такими же ограничениями.
  • Хост D: конечный хост, куда вы хотите подключиться.

Все хосты B, C и D находятся в одной локальной сети и должны принимать ключи только от хоста A.

Решение

Для решения данной задачи нам поможет параметр -A, который позволяет использовать перенаправление SSH-агента. Это дает возможность гостевым хостам (B, C и D) использовать ключи, загруженные в SSH-агент на вашем локальном компьютере (A).

Шаги для выполнения

  1. Подготовьте SSH-ключи: Убедитесь, что на хосте A у вас есть SSH-ключи (по умолчанию это ~/.ssh/id_rsa и ~/.ssh/id_rsa.pub). Обязательно добавьте открытый ключ в файл ~/.ssh/authorized_keys на хостах B, C и D.

  2. Запустите SSH-агент: На вашем локальном хосте A убедитесь, что SSH-агент запущен. Откройте терминал и выполните команду:

    eval "$(ssh-agent -s)"
  3. Добавьте ключ в агент: Если ключи уже не добавлены в агент, выполните следующую команду:

    ssh-add ~/.ssh/id_rsa
  4. Подключитесь к хосту B с перенаправлением агента: Используйте параметр -A при подключении к хосту B:

    ssh -A user@hostB

    Замените user на ваше имя пользователя на хосте B.

  5. Подключитесь к хосту C: Теперь, находясь на хосте B, вы можете подключиться к хосту C также с перенаправлением агента:

    ssh -A user@hostC
  6. Подключитесь к хосту D: Последний шаг – подключение к хосту D:

    ssh -A user@hostD

Теперь вы успешно подключились к хосту D через промежуточные хосты B и C, используя ключи от вашего локального компьютера A.

Важные замечания

  • Безопасность: Применяйте перенаправление агента с осторожностью. Если на промежуточных хостах кто-то сможет обойти права доступа к файлам, то это может привести к компрометации вашего агентского доступа.

  • Избегайте хранения паролей: На хостах B, C и D не должно быть сохраненных паролей. Используйте только ключи для аутентификации.

  • Мониторинг: Рекомендуется применять мониторинг доступа на промежуточных и конечных хостах, чтобы быть в курсе любых потенциально несанкционированных действий.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...