Что делает этот модуль #
SSH — это входная дверь к вашему серверу: зашифрованный канал, по которому вы подключаетесь для администрирования. Насколько правильно установлена эта дверь — с нужными ключами и без лишних замков — определяет, будет ли сервер защищённым или уязвимым.
Модуль ssh объединяет в одной команде задачи удалённого доступа: управляет авторизованными ключами пользователя (добавить, вывести список, удалить), контролирует ключи хоста, которыми сервер представляется клиентам, показывает активные сессии и проверяет или повторно применяет защиту sshd, заданную в вашей конфигурации. Каждая операция, затрагивающая sshd, сначала проверяет конфигурацию (sshd -t), чтобы ошибочное изменение не оставило вас за дверью.
Держите открытой одну сессию, пока меняете ключи или перезапускаете sshd: если что-то пойдёт не так, вы останетесь внутри и сможете всё исправить. По умолчанию модуль работает с управляемым пользователем ubuntu; используйте --user, чтобы работать с другим.
Типовые задачи #
Выберите, что нужно сделать. В каждом рецепте команда уже написана — просто замените пользователя или ключ на свои и нажмите Копировать.
1
Просмотреть состояние SSH-доступа
Проверьте одним взглядом, что sshd активен и правильно настроен.
Подключитесь по SSH к серверу под пользователем ubuntu и выполните:
$ sudo imaxe ssh statusНужно для скрипта? Добавьте --json и получите ту же информацию в машиночитаемом виде:
$ sudo imaxe ssh status --jsonsshd, на каком порту он слушает, и сводку применённой защиты.2
Добавить или удалить авторизованный ключ
Дайте доступ новой машине или отзовите тот, что больше не используете.
Сначала посмотрите, какие ключи авторизованы сейчас для управляемого пользователя:
$ sudo imaxe ssh keys listДобавьте публичный ключ, передав его как аргумент (или используйте -, чтобы прочитать его из стандартного ввода):
$ sudo imaxe ssh keys add "ssh-ed25519 AAAAC3Nz... ana@portatil" --comment "ana@portatil"Больше не нужен? Удалите его по отпечатку или по комментарию:
$ sudo imaxe ssh keys remove "ana@portatil"authorized_keys пользователя обновлён. Проверьте результат командой keys list.3
Пересоздать ключи хоста после клонирования
Обязательно после создания машины из AMI.
Когда вы клонируете образ, все копии наследуют одинаковую идентичность сервера. Создайте новые уникальные ключи хоста для этой машины:
$ sudo imaxe ssh hostkeys regenerate --yes4
Проверить и повторно применить защиту
Убедитесь, что sshd по-прежнему настроен как надо, и исправьте, если нет.
Сравните текущую защиту с желаемой (той, что задаёт ваша конфигурация):
$ sudo imaxe ssh harden showЕсть расхождения? Повторно примените защиту из YAML и безопасно перезагрузите sshd:
$ sudo imaxe ssh harden reapplysshd перезагружается, не разрывая вашу сессию.5
Просмотреть сессии и перезапустить sshd
Посмотрите, кто подключён, и применяйте изменения без страха остаться за дверью.
Выведите список активных SSH-сессий в данный момент:
$ sudo imaxe ssh sessionsДля применения изменений конфигурации предпочитайте reload (не разрывает соединения); используйте restart только если нужен полный перезапуск. Оба сначала проверяют конфигурацию:
$ sudo imaxe ssh reload
$ sudo imaxe ssh restartПеред перезапуском sshd или сменой порта держите открытой вторую, аварийную сессию. Если при переподключении появляется предупреждение о другом ключе хоста после hostkeys regenerate — это ожидаемо: примите новую идентичность.
Синопсис #
imaxe ssh <subcomando> [<subcomando-anidado>] [argumentos] [flags]Операции, которые читают или изменяют sshd, авторизованные ключи или ключи хоста, требуют привилегий root (используйте sudo). Группы keys, hostkeys и harden объединяют собственные вложенные подкоманды. Добавьте --json к status, sessions, keys list или harden show, чтобы получить вывод, пригодный для скриптинга.
Подкоманды #
| Подкоманда | Что делает | Значимые флаги |
|---|---|---|
| status | Состояние sshd: активность, порт и сводка защиты. | --json |
| keys list | Выводит авторизованные ключи управляемого пользователя. | --user, --json |
| keys add | Добавляет публичный ключ (из аргумента или stdin). | --user, --comment |
| keys remove | Удаляет ключ по отпечатку или комментарию. | --user |
| hostkeys regenerate | Пересоздаёт ключи хоста (критично после клонирования AMI; меняет отпечаток). | --yes |
| sessions | Выводит активные SSH-сессии. | --json |
| harden show | Показывает текущую защиту в сравнении с желаемой. | --json |
| harden reapply | Повторно применяет защиту из YAML и перезагружает sshd. | — |
| restart | Перезапускает sshd с предварительной проверкой конфигурации (sshd -t). | — |
| reload | Перезагружает sshd с предварительной проверкой конфигурации (sshd -t). | — |
Аргументы и флаги #
| Аргумент / Флаг | Тип | По умолчанию | Описание |
|---|---|---|---|
| <clave> обяз. | string | — | В keys add: публичный ключ или -, чтобы прочитать его из stdin. |
| <selector> обяз. | string | — | В keys remove: отпечаток (SHA256:...) или комментарий удаляемого ключа. |
| --user | string | ubuntu | Пользователь, чей authorized_keys просматривается или изменяется (в keys list/add/remove). |
| --comment | string | — | В keys add: комментарий, привязываемый к ключу для дальнейшей его идентификации. |
| --yes | bool | false | В hostkeys regenerate: подтверждает без запроса (меняет отпечаток, видимый клиентам). |
| --json | bool | false | В status, sessions, keys list и harden show: выдаёт результат в виде JSON в stdout. |
Файлы и пути #
| Путь | Содержимое |
|---|---|
| /etc/imaxe/ssh.yml | Конфигурация модуля: порт, политики входа (root, пароль, публичный ключ), разрешённые пользователи, управляемый пользователь и пересоздание ключей хоста. |
| /home/<usuario>/.ssh/authorized_keys | Авторизованные публичные ключи управляемого пользователя, которые изменяют keys add/remove. |
| /etc/ssh/sshd_config.d/ | Фрагменты конфигурации sshd, где применяется защита. |
| /etc/ssh/ssh_host_*_key | Ключи хоста, идентифицирующие сервер, которые обновляет hostkeys regenerate. |
Пример ssh.yml:
port: 22
permit_root_login: "no"
password_authentication: "no"
pubkey_authentication: "yes"
allow_users: []
managed_user: ubuntu
hostkeys:
regenerate_on_first_boot: trueКоды возврата и логи #
Каждый запуск возвращает код, который можно проверить командой echo $? — удобно для цепочек в скриптах:
sshd -t не прошла; ничего не применено.Следите за логом сервиса в реальном времени во время отладки:
$ sudo journalctl -u ssh -f
$ sudo imaxe ssh harden show --jsonУстранение неполадок #
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Возникает CONFIG (код 3) | Защита или ручное изменение оставили sshd с недопустимой конфигурацией. | Просмотрите различия командой imaxe ssh harden show и исправьте; проверка не даёт применить сломанную конфигурацию. |
| При переподключении — предупреждение о другом host key | Ключи хоста были пересозданы (ожидаемо после клонирования AMI). | Это нормально: примите новую идентичность на клиенте и обновите свой known_hosts. |
keys add возвращает NOTFOUND (код 4) | Пользователь, указанный в --user, не существует в системе. | Проверьте имя пользователя или используйте управляемого по умолчанию (ubuntu). |
| Больше не могу войти по паролю | password_authentication установлен в "no" из-за защиты. | Это намеренно: входите по публичному ключу и управляйте ключами через imaxe ssh keys. |
Застряли с модулем SSH?
Напишите нам, приложив вывод «imaxe <module> status --json», и мы быстро ответим.