Linux#

Для подключения к целевому узлу под управлением операционной системы Linux рекомендуется использовать протокол SSH. Для этого на узле должен быть установлен серверный пакет OpenSSH. Если этого компонента нет или он не настроен, воспользуйтесь соответствующей инструкцией в зависимости от дистрибутива Linux:

Примечание

ВМ, созданные из образов Astra Linux UBI, уже содержат установленный и активированный сервер OpenSSH.

SSH позволяет авторизоваться на узле различными способами, но чаще всего используются следующие два:

  • пароль;

  • ключи SSH (далее – ключи).

Рекомендуемым способом авторизации является использование ключей. Для этого необходимо создать пару ключей – приватный и публичный. Приватный ключ необходимо оставить на управляющем узле, а публичный разместить на управляемых узлах.

Приведенные далее инструкции описывают процесс настройки для Astra Linux Special Edition, но большинство шагов можно использовать и для других операционных систем.

Генерация ключей#

Для создания пары ключей выполните следующие действия (обычно на управляющем узле):

  1. При необходимости создайте каталог ~/.ssh/ и перейдите в него:

    mkdir -p ~/.ssh && chmod 700 ~/.ssh && cd ~/.ssh/
    
  2. Выполните команду:

    ssh-keygen -C "<comment>" -f ./<filename> -N "<password>"
    

    Здесь:

    • <comment> – комментарий к ключу.

    • <filename> – название файла для сохранения приватного ключа. Публичный ключ хранится в файле с тем же названием, к которому добавляется расширение .pub.

    • <password> – пароль для защиты приватного ключа. Если в качестве пароля используется пустая строка "", приватный ключ создается без защиты.

    Подробности о команде ssh-keygen доступны во встроенной справке:

    man ssh-keygen
    
    Пример

    Для создания пары ключей можно использовать следующую команду:

    ssh-keygen -C "Astra Automation" -f ~/.ssh/astra-automation
    

    Утилита ssh-keygen запросит пароль для защиты приватного ключа, после чего создаст в каталоге ~/.ssh/ два файла:

    • astra-automation – приватный ключ;

    • astra-automation.pub – публичный ключ.

  3. Установите на приватный ключ права доступа 600:

    chmod 600 ./<filename>
    

    Здесь <filename> – название файла, в котором сохранен приватный ключ.

    Примечание

    Права доступа 600 означают, что только пользователь-владелец файла имеет права на чтение и запись.

Настройка целевого узла#

Для разрешения подключения к узлу по SSH с использованием ключей выполните следующие действия:

  1. Установите пакет сервера OpenSSH, если он не установлен:

    sudo apt update && sudo apt install --yes openssh-server
    
  2. Включите автоматический запуск сервера OpenSSH при загрузке системы (если не настроено):

    sudo systemctl enable ssh.service
    
  3. В каталоге /etc/ssh/sshd_config.d/ создайте файл ssh_auth_keys.conf со следующим содержимым:

    PubkeyAuthentication  yes
    AuthorizedKeysFile   .ssh/authorized_keys  .ssh/authorized_keys2
    

    Примечание

    Сервер OpenSSH обрабатывает в каталоге /etc/ssh/sshd_config.d/ только файлы с расширением .conf.

  4. Перезапустите сервер OpenSSH:

    sudo systemctl restart ssh
    
  5. Выберите учетную запись, которую будете использовать для авторизации по протоколу SSH при выполнении сценариев автоматизации. В домашнем каталоге этой учетной записи создайте подкаталог .ssh/, а в нем – файл authorized_keys. Владельцем домашнего каталога и всех файлов внутри него должна быть выбранная учетная запись.

  6. Установите права доступа 700 на каталог ~/.ssh/ и 600 на файл ~/.ssh/authorized_keys:

    chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
    
  7. Добавьте в файл ~/.ssh/authorized_keys содержимое соответствующего публичного ключа, например (часть содержимого ключа опущена с целью сокращения):

    ssh-rsa AAAAB3NzaC1yc2EAd...4bwy3tY2/ administrator@node1.example.com
    

    Совет

    Если узел разрешает подключение с использованием протокола SSH с авторизацией по паролю, публичную часть ключей можно разместить с помощью утилиты ssh-copy-id:

    ssh-copy-id -i <filename> <user>@<host>
    

    Здесь:

    • <filename> – путь к файлу публичного ключа;

    • <user> – название учетной записи пользователя узла;

    • <host> – IP-адрес или FQDN узла.

  8. Проверьте подключение к узлу с управляющего узла:

    ssh -i <filename> <user>@<host>
    

    Здесь:

    • <filename> – путь к файлу приватного ключа;

    • <user> – название учетной записи пользователя узла;

    • <host> – IP-адрес или FQDN узла.

    Ожидаемый результат: подключение выполняется без запроса пароля учетной записи.

Примечание

Для выполнения задач с повышением привилегий (ansible_become) выбранной учетной записи необходимо разрешить выполнение команд с помощью sudo.