Вы можете включить доступ по
для всех контейнеров вашего проекта, кроме созданных из тестового образа.Доступ по SSH позволит получать удаленный доступ к командной строке контейнера, смотреть логи контейнера, выполнять отладку и диагностику работы контейнера.
В Container Apps для доступа по SSH используется одна и та же пара ключей для всех контейнеров Container Services с поддержкой SSH-доступа, которые созданы одним пользователем в рамках одного проекта.
Если вы включаете доступ по SSH впервые, подготовьте Docker-образ, включите и настройте доступ по SSH и скачайте приватный SSH-ключ. Затем вы сможете подключаться к контейнеру по SSH.
Чтобы Docker-образ был совместим с опцией Доступ по SSH, необходимо его подготовить.
Для поддержки доступа по SSH в Docker-образе:
Установите openssh-server.
Добавьте системного пользователя для подключения по SSH.
В конфигурационном файле для SSHD sshd_config укажите системного пользователя и путь к каталогу с публичными ключами etc/ssh/authorized_keys.
Запустите в фоне OpenSSH Daemon.
Запустите контейнерное приложение.
Например, приложение Terminalio с включенным доступом по SSH.
Трафик приходит на фиксированный порт 2222, зарезервированный в сервисе Container Apps для SSH, и маршрутизируется в главный контейнер приложения. SSH-сервер в приложении слушает трафик на указанном в конфигурации порте. Порт, настроенный для прослушивания SSH-трафика, может совпадать с фиксированным портом 2222.
SSH-сервер, запущенный от лица системного пользователя, обращается к каталогу с публичными ключами с правами владельца каталога. Сервер использует публичный ключ для проверки подлинности приватного SSH-ключа клиента. При успешной аутентификации SSH-трафик в контейнер разрешен.
Конфигурация контейнера:
Пользователь: jovyan. Системный пользователь для подключения по SSH.
Настраиваемый SSH-порт: 2222. Порт проброшен на порт хоста 2222. Этот порт используется для прослушивания SSH-трафика в главном контейнере.
Веб-порт: 8080. Порт проброшен на порт хоста 8080. Этот порт используется для HTTP-трафика в главном контейнере.
Пользователь, от имени которого запущен SSH-сервер, имеет доступ к локальному каталогу с публичными SSH-ключами.
В конфигурационном файле SSHD ../utils/sshd_config указан путь к каталогу с публичными ключами:
AuthorizedKeysFile /etc/ssh/authorized_keys
При включении опции Доступ по SSH для контейнера в Container Apps укажите следующие значения:
Имя пользователя — jovyan
Порт — 2222
Путь монтирования публичных SSH-ключей — /etc/ssh/authorized_keys
Значения настроек доступа по SSH в Container Apps соответствуют указанным в конфигурации приложения с поддержкой SSHD.
В личном кабинете перейдите на главную страницу сервиса Container Apps.
Перейдите в раздел Container Services.
Выберите нужный контейнер из списка.
При включении доступа по SSH рекомендуется использовать контейнеры с горячим стартом. Запросы по SSH не вызывают создание экземпляра контейнера с «холодным» стартом.
Перейдите на вкладку Доступ по SSH.
Вкладка недоступна, если при создании контейнера был использован тестовый образ.
Активируйте переключатель Доступ по SSH.
Заполните следующие поля.
Поле/Опция | Описание |
|---|---|
Имя пользователя | Пользователь с административным доступом к sudo. |
Порт | Порт для подключения по SSH к SSH-серверу в контейнере. Порты 8008, 8012, 8013, 8112, 8022, 9090, 9091 зарезервированы сервисом и не могут использоваться. Если для контейнера включен привилегированный режим, зарезервированы также порты 1–1024. Значение по умолчанию: 2222. Должен совпадать со значением параметра Port, указанным в конфигурационном файле sshd_config вашего Docker-образа. |
Путь монтирования публичных SSH-ключей | Путь монтирования папки с публичными SSH-ключами контейнера. При включении аутентификации через пару SSH-ключей укажите этот путь как место расположения публичных ключей. Значение по умолчанию: /etc/ssh/authorized_keys. Запрещено указывать следующие пути:
Путь должен совпадать со значением параметра AuthorizedKeysFile, указанным в конфигурационном файле sshd_config вашего Docker-образа. Внимание Если для контейнера примонтированы тома, значение поля Путь монтирования публичных SSH-ключей должно отличаться от пути, указанного в параметрах монтирования тома. |
Нажмите Сохранить.
В течение нескольких секунд для контейнера будет создана новая ревизия с поддержкой доступа по SSH.
Перейдите в раздел Container Services.
Выберите нужный контейнер из списка.
Перейдите на вкладку Доступ по SSH.
Нажмите Скачать приватный SSH-ключ.
На ваше устройство будет загружен приватный SSH-ключ ssh_key.txt.
Переименуйте скачанный приватный SSH-ключ:
если ключ скачан в личном кабинете, используйте команду:
cat <your_key> > priv_key
если ключ получен по API, используйте команду:
echo <your_key> > priv_key
Где <your_key> — скачанный файл ssh_key.txt или текст приватного ключа, полученный через API.
Поменяйте права доступа для скачанного приватного SSH-ключа.
chmod 600 priv_key
Подключитесь к контейнеру по названию контейнера:
ssh -i priv_key <container_name>.<project_id>@ssh.containers.cloud.ru -p 2222
Где:
<container_name> — название контейнера.
<project_id> — идентификатор проекта, в котором размещен контейнер.
Порт, указанный в строке подключения, статичен и не меняется в зависимости от порта, настроенного для опции Доступ по SSH в поле Порт. Значения полей в строке подключения и в поле Порт могут совпадать.
В личном кабинете перейдите на главную страницу сервиса Container Apps.
Перейдите в раздел Container Services.
Выберите нужный контейнер из списка.
Перейдите на вкладку Доступ по SSH.
Выключите опцию Доступ по SSH.
Нажмите Сохранить.
Доступ к контейнеру по SSH отключен. Все активные подключения по SSH к контейнерам с включенным SSH-доступом будут разорваны.
Для активных подключений в терминале отобразится сообщение:
Connection to ssh.containers.cloud.ru closed.