Перейти к основному содержимому

Настройка SSH-ключей

Зачем использовать SSH-ключи

  • Безопасность — ключи значительно сложнее подобрать, чем пароль
  • Удобство — не требуется вводить пароль при каждом подключении
  • Интеграция — упрощает работу с VSCode, CI/CD и автоматическими скриптами

Настройка в Ubuntu

1. Генерация ключа

Создайте новую пару ключей на вашем компьютере:

ssh-keygen -t ed25519 -C "pi@motorstandNN" -f ~/.ssh/motorstandNN_ed25519

Что означают параметры:

  • -t ed25519 — современный и безопасный тип ключа
  • -C — комментарий (необязательно, используется для идентификации)
  • -f — путь к файлу ключа
  • NN - последние две цифры серийного номера изделия (это сочетание также принято и далее по тексту).

При запросе passphrase:

  • задайте пароль для дополнительной защиты (рекомендуется)
  • или нажмите Enter для упрощённого подключения

2. Копирование ключа на RPi

Передача публичного ключа на устройство выполняется одной командой:

ssh-copy-id -i ~/.ssh/motorstandNN_ed25519.pub pi@motorstandNN.local

Команда автоматически:

  • создаёт директорию ~/.ssh на RPi (если её нет)
  • добавляет ключ в файл authorized_keys
  • выставляет корректные права доступа

3. (Опционально) Добавление ключа в ssh-agent

Если ключ защищён passphrase, можно сохранить его в агенте:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/motorstandNN_ed25519

Это позволит вводить пароль один раз за сессию.


Настройка в Windows (PowerShell)

1. Генерация ключа

ssh-keygen -t rsa -b 4096 -C "pi@motorstandNN"

Параметры:

  • -t rsa — тип ключа (совместимый вариант)
  • -b 4096 — длина ключа

2. Копирование ключа на RPi

type $env:USERPROFILE\.ssh\id_rsa.pub | ssh pi@motorstandNN.local "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh"

Команда вручную выполняет те же действия, что ssh-copy-id в Linux.


3. (Опционально) Добавление ключа в ssh-agent

Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_rsa

Проверка подключения

ssh pi@motorstandNN.local

Ожидаемый результат:

  • подключение выполняется без запроса пароля
  • отображается приглашение терминала RPi

Устранение проблем

ПроблемаВозможная причинаРешение
Permission denied (publickey)Ключ не добавленПроверьте ~/.ssh/authorized_keys на RPi
Запрашивается парольSSH использует другой ключУбедитесь в правильности имени хоста и пути к ключу
Ошибка прав доступаНеверные права на .sshВыполните: chmod 700 ~/.ssh и chmod 600 ~/.ssh/authorized_keys

Рекомендации

  • не передавайте приватный ключ третьим лицам
  • используйте passphrase для защиты ключа
  • регулярно удаляйте неиспользуемые ключи из authorized_keys