Настройка SSH-ключей (подключение без пароля)

Создание SSH-ключей позволяет установить безопасное и удобное подключение между вашим компьютером и Робоголовой без ввода пароля при каждом сеансе. SSH-ключи представляют собой пару файлов:

  • Приватный ключ (id_ed25519 или id_rsa) хранится на вашем компьютере.

  • Публичный ключ (id_ed25519.pub или id_rsa.pub) копируется на Робоголову в текстовый файл ~/.ssh/authorized_keys.

При подключении SSH проверяет соответствие пары ключей и, если они совпадают, авторизует вас автоматически.


1. Зачем нужны SSH-ключи

  • Безопасность: подобрать ключ намного сложнее, чем угадать пароль.

  • Удобство: не нужно вводить пароль при каждом подключении.

  • Автоматизация: упрощает запуск скриптов, CI/CD и другие автоматизированные процессы.


2. Настройка SSH-ключей в Ubuntu 20.04+

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

    ssh-keygen -t ed25519 -C "pi@robohead" -f ~/.ssh/robohead_id_ed25519
    • При запросе Enter passphrase можно задать пароль для защиты ключа или оставить пустым для мгновенного подключения.

  2. Копирование публичного ключа на Робоголову

    ssh-copy-id -i ~/.ssh/robohead_id_ed25519.pub pi@roboheadXXX.local
  3. (Дополнительно) Добавление ключа в ssh-agent (если вы используете passphrase):

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

3. Настройка SSH-ключей в Windows (PowerShell)

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

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

    Прим.: можно использовать ed25519, если он поддерживается вашей версией OpenSSH в Windows.

  2. Копирование публичного ключа на Робоголову

    type $env:USERPROFILE\.ssh\id_rsa.pub | ssh pi@roboheadXXX.local "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh"
  3. (Если ключ с passphrase) Добавление в агент OpenSSH

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

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

Выполните команду:

ssh pi@roboheadXXX.local

Если вы попадаете в консоль без запроса пароля и видите приглашение pi@roboheadXXX:~$, значит, настройка прошла успешно.


5. Устранение неполадок

Проблема
Возможная причина
Решение

Permission denied (publickey)

Ключ не скопирован, неправильные права

Проверьте ~/.ssh/authorized_keys и выставьте права: chmod 700 ~/.ssh, chmod 600 ~/.ssh/authorized_keys.

SSH продолжает запрашивать пароль

Неверный хост, имя или путь к ключу

Убедитесь, что используете roboheadXXX.local и корректный ключ.

Часто запрашивается passphrase

Ключ защищён паролем

Добавьте ключ в ssh-agent или используйте Pageant (в Windows).


6. Рекомендации по безопасности

  • Никогда не передавайте приватный ключ третьим лицам.

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

  • Периодически меняйте ключи, удаляя устаревшие из authorized_keys.

  • Убедитесь, что доступ к файлам .ssh ограничен только пользователю.

Last updated