Вопрос или проблема
Контекст: 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:
-
Подготовка Raspberry Pi:
- Убедитесь, что ваш Raspberry Pi подключен к интернету и включен. Загрузите Ubuntu Server LTS 24.04.1.
-
Запуск console-conf:
- В процессе установки или первого запуска Ubuntu Core на Raspberry Pi вы увидите приглашение от консольной утилиты "console-conf". Эта утилита позволяет установить начальные настройки, включая подключение к Ubuntu SSO и импорт SSH-ключей.
-
Ввод имени пользователя Ubuntu SSO:
- При появлении запроса введите адрес электронной почты от вашей облачной учётной записи Ubuntu SSO. Это действие позволит вашему устройству подключиться к вашей учётной записи и автоматически получить зарегистрированные в ней SSH-ключи.
-
Использование 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()
-
Проверка и тестирование подключения:
- После успешной установки SSH-ключей рекомендуется проверить подключение через SSH-клиенты с целью убедиться, что всё работает корректно.
- Выполните команду
ssh ВАШ_ПОЛЬЗОВАТЕЛЬ@RaspberryPi_IP
для проверки удаленного доступа.
Заключение:
Добавление SSH-ключа на Ubuntu Server через Ubuntu Cloud — это важный шаг на пути к обеспечению удаленного доступа с повышенной безопасностью. Используйте встроенную консольную утилиту или alternativa Python-скрипт для управления SSH-ключами через Launchpad API. Это не только укрепит безопасность вашего устройства, но и оптимизирует процесс удаленного администрирования.
Следуйте данным рекомендациям, и ваши IT-системы будут защищены и оптимизированы для удаленного управления.