Как добавить SSH-ключ на сервер Ubuntu (Raspberry PI) через Ubuntu Cloud?

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

Контекст: Raspberry Pi 3B+, LTS 24.04.1 Server

Я протестировал устройство MQTT Core, которое автоматически запрашивает у пользователя ввод адреса электронной почты Ubuntu SSO (шаг 5):

Далее вам нужно будет ввести адрес электронной почты вашей учетной записи Ubuntu cloud. Ваш Pi подключится к вашей облачной учетной записи и получит ваши SSH-ключи.

console-conf

Указанная возможность описана как console-conf: https://ubuntu.com/core/docs/system-user

Есть ли команда, которая повторит этот шаг и запросит адрес электронной почты SSO и установит SSH-ключи?

Мне неизвестен существующий скрипт для получения ключа через электронную почту. Если вас устраивает использование имени пользователя, вы можете использовать ssh-import-id-lp для импорта ключа.

В противном случае это довольно легко сделать, используя API Launchpad, с кодом похожим на следующий.

#!/usr/bin/python3

from launchpadlib.launchpad import Launchpad

print("Пожалуйста, введите SSO email")
email = input().strip()

lp = Launchpad.login_anonymously('ssh importer', 'production')
user = lp.people.getByEmail(email=email)
print(f"Импорт ключей для пользователя {user.name}")
with open('/home/MYUSER/.ssh/authorized_keys', mode="a") as f:
    for k in user.sshkeys:
        f.write(f'ssh-{k.keytype.lower()} {k.keytext} {k.comment.strip()}\n')
    f.flush()

Обратите внимание, что обработка типа ключа очень специфична (тестировалась только с RSA-ключами).

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

Если вы хотите добавить публичный SSH-ключ на Ubuntu сервер, работающий на Raspberry Pi 3B+ с версией LTS 24.04.1, важно следовать правильной процедуре для обеспечения безопасного и эффективного доступа. В данной инструкции подробно рассматривается, как выполнить эту задачу, используя Ubuntu Cloud, и ссылается на использование консольной утилиты "console-conf".

Шаги по добавлению SSH-ключа через Ubuntu Cloud:

  1. Подготовка Raspberry Pi:

    • Убедитесь, что ваш Raspberry Pi подключен к интернету и включен. Загрузите Ubuntu Server LTS 24.04.1.
  2. Запуск console-conf:

    • В процессе установки или первого запуска Ubuntu Core на Raspberry Pi вы увидите приглашение от консольной утилиты "console-conf". Эта утилита позволяет установить начальные настройки, включая подключение к Ubuntu SSO и импорт SSH-ключей.
  3. Ввод имени пользователя Ubuntu SSO:

    • При появлении запроса введите адрес электронной почты от вашей облачной учётной записи Ubuntu SSO. Это действие позволит вашему устройству подключиться к вашей учётной записи и автоматически получить зарегистрированные в ней SSH-ключи.
  4. Использование Ubuntu Launchpad API (альтернативный способ):

    • Если вы не используете интерфейс console-conf или хотите выполнить процесс вручную, можно воспользоваться скриптом на Python, использующим API Launchpad для импорта SSH-ключей.
    #!/usr/bin/python3
    
    from launchpadlib.launchpad import Launchpad
    
    print("Введите ваш SSO email")
    email = input().strip()
    
    lp = Launchpad.login_anonymously('ssh importer', 'production')
    user = lp.people.getByEmail(email=email)
    print(f"Импорт ключей для пользователя {user.name}")
    with open('/home/ВАШ_ПОЛЬЗОВАТЕЛЬ/.ssh/authorized_keys', mode="a") as f:
       for k in user.sshkeys:
           f.write(f'ssh-{k.keytype.lower()} {k.keytext} {k.comment.strip()}\n')
       f.flush()
  5. Проверка и тестирование подключения:

    • После успешной установки SSH-ключей рекомендуется проверить подключение через SSH-клиенты с целью убедиться, что всё работает корректно.
    • Выполните команду ssh ВАШ_ПОЛЬЗОВАТЕЛЬ@RaspberryPi_IP для проверки удаленного доступа.

Заключение:

Добавление SSH-ключа на Ubuntu Server через Ubuntu Cloud — это важный шаг на пути к обеспечению удаленного доступа с повышенной безопасностью. Используйте встроенную консольную утилиту или alternativa Python-скрипт для управления SSH-ключами через Launchpad API. Это не только укрепит безопасность вашего устройства, но и оптимизирует процесс удаленного администрирования.

Следуйте данным рекомендациям, и ваши IT-системы будут защищены и оптимизированы для удаленного управления.

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

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