Настройка SSH-ключей
SSH-ключи позволяют настроить безопасное подключение к BRover-E5 без ввода пароля при каждом подключении.
Вместо пароля используется криптографическая пара ключей:
- Приватный ключ — хранится только на вашем компьютере и используется для аутентификации
- Публичный ключ — размещается на ровере и используется для проверки подключения
- Пароль пользователя
pi— пароль учётной записи на ровере, по умолчаниюbrobro. При входе по SSH-ключу его вводить не нужно. Дляsudoон по-прежнему может понадобиться. - Парольная фраза ключа (
passphrase) — необязательный пароль, который вы задаёте при создании ключа на компьютере. Он защищает сам файл приватного ключа.
1. Подготовьте подключение
Убедитесь, что подключение по SSH с паролем уже работает. Оно потребуется для первоначального добавления ключа.
В примерах замените broverXX.local именем своего ровера. Если подключаетесь по IP-адресу, используйте его вместо имени.
Все команды ниже выполняются на компьютере, если явно не указано иное.
2. Настройте ключ
- Ubuntu
- Windows (PowerShell)
Проверьте существующие ключи
ls -la ~/.ssh
Если каталог отсутствует, переходите к созданию ключа. Файл с окончанием .pub — публичный ключ; одноимённый файл без .pub — приватный. Если подходящая пара уже есть, новый ключ создавать не обязательно. В последующих командах используйте имя выбранного ключа вместо id_ed25519.
Создайте ключ, если его ещё нет
mkdir -p ~/.ssh
ssh-keygen -t ed25519 -C "brover-access" -f ~/.ssh/id_ed25519
-t ed25519 выбирает тип ключа, -C задаёт произвольный комментарий, а -f — имя файла. Будут созданы id_ed25519 и id_ed25519.pub.
При запросе passphrase задайте парольную фразу и повторите её. Для подключения без парольной фразы можно оставить поле пустым, нажав Enter.
Если ssh-keygen предлагает перезаписать файл, откажитесь. Используйте существующую пару ключей или выберите другое имя файла для новой.
Добавьте публичный ключ на ровер
ssh-copy-id -i ~/.ssh/id_ed25519.pub pi@broverXX.local
При запросе введите текущий пароль пользователя pi. Команда добавит публичный ключ в ~/.ssh/authorized_keys на ровере. Уже установленный ключ обычно не добавляется повторно.
Проверьте подключение
ssh pi@broverXX.local
Стандартный ключ id_ed25519 из каталога .ssh OpenSSH ищет автоматически.
Проверьте существующие ключи
Get-ChildItem -Force "$env:USERPROFILE\.ssh"
Если каталог отсутствует, переходите к созданию ключа. Файл с окончанием .pub — публичный ключ; одноимённый файл без .pub — приватный. Если подходящая пара уже есть, новый ключ создавать не обязательно. В последующих командах используйте имя выбранного ключа вместо id_ed25519.
Создайте ключ, если его ещё нет
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.ssh" | Out-Null
ssh-keygen -t ed25519 -C "brover-access" -f "$env:USERPROFILE\.ssh\id_ed25519"
Будут созданы id_ed25519 и id_ed25519.pub. При запросе passphrase задайте парольную фразу и повторите её. Для подключения без парольной фразы можно оставить поле пустым, нажав Enter.
Если ssh-keygen предлагает перезаписать файл, откажитесь. Используйте существующую пару ключей или выберите другое имя файла для новой.
Добавьте публичный ключ на ровер
Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub" |
ssh pi@broverXX.local "umask 077; mkdir -p ~/.ssh && chmod 700 ~/.ssh && printf '\n' >> ~/.ssh/authorized_keys && tr -d '\r' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
При запросе введите текущий пароль пользователя pi. Команда передаст публичный ключ и добавит его в ~/.ssh/authorized_keys на ровере, сохранив другие ключи. Повторно выполнять её для уже добавленного ключа не требуется: она не удаляет дубликаты.
Проверьте подключение
ssh pi@broverXX.local
Стандартный ключ id_ed25519 из каталога .ssh OpenSSH ищет автоматически.
PowerShell и Ubuntu в WSL используют разные домашние каталоги и настройки SSH. Ключ, созданный в одном окружении, не обязательно автоматически доступен в другом. Выполняйте настройку в том окружении, из которого будете подключаться к роверу.
При успешном подключении появится приглашение терминала ровера. Пароль пользователя pi запрашиваться не должен. Запрос парольной фразы ключа допустим, если вы задали её при создании ключа.
3. Упростите подключение
Для стандартного ключа id_ed25519 дополнительных настроек не требуется. Если вы используете ключ с другим именем, его можно указать в конфигурации SSH.
Если ключ сохранён под другим именем
На компьютере откройте или создайте файл:
- Ubuntu:
~/.ssh/config; - Windows:
%USERPROFILE%\.ssh\config(без расширения.txt).
Добавьте блок, сохранив существующие настройки других подключений:
Host broverXX.local
User pi
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
Замените broverXX.local именем своего ровера, а id_ed25519 в строке IdentityFile — именем своего ключа. При подключении по IP укажите IP-адрес в строке Host.
Теперь путь к ключу указывать не нужно:
ssh pi@broverXX.local
Если подключение не работает
| Ситуация | Что проверить |
|---|---|
Запрашивается пароль pi@… | Проверьте имя ровера, наличие пары id_ed25519 и id_ed25519.pub на компьютере и добавление соответствующего публичного ключа на ровер. |
Запрашивается Enter passphrase for key… | Это парольная фраза ключа, а не пароль ровера. Введите фразу, заданную при создании ключа. |
Permission denied (publickey) | Проверьте пользователя pi, выбранный ключ и наличие его публичной части в ~/.ssh/authorized_keys на ровере. |
| Ключ есть на ровере, но вход не работает | В SSH-сеансе ровера проверьте права: chmod 700 ~/.ssh и chmod 600 ~/.ssh/authorized_keys. |
ssh или ssh-keygen не найдены в Windows | Проверьте наличие компонента Клиент OpenSSH в дополнительных компонентах Windows. Сервер OpenSSH на компьютере для подключения к роверу не нужен. |
Если ровер недоступен по сети, начните с раздела SSH-подключение.