Разработчики часто сталкиваются с риском кражи приватных SSH-ключей, если те доступны приложениям внутри контейнеров. Для защиты предлагается использовать SSH-агент вместо прямого монтирования ключей. Это позволяет контейнеру полноценно использовать SSH-права, не получая доступа к самому материалу приватного ключа.
Архитектура предполагает запуск Docker-демона в rootless-режиме, при котором контейнер работает от имени непривилегированного пользователя. В контейнер передается только Unix-сокет ssh-agent через переменную SSH_AUTH_SOCK. Даже при компрометации процесса внутри контейнера приватный ключ остается недоступным.
Основная техническая сложность заключается в несовпадении UID/GID внутри контейнера и на хосте из-за использования пространств имен пользователей (user namespaces). Поскольку проверка прав доступа к Unix-сокету выполняется на уровне ядра хоста, разработчикам необходимо вычислять соответствие идентификаторов через файлы /etc/subuid и /etc/subgid.
Для корректной настройки необходимо рассчитать хостовый UID, соответствующий пользователю внутри контейнера. Использование полученного значения позволяет правильно настроить права доступа к сокету ssh-agent. Такой подход исключает передачу ключа в переменные окружения или файловую систему контейнера.





