Возвращаемся к рассмотрению наиболее часто задаваемых вопросов по работе с Raspberry Pi. И сегодня разберем механизм создания SSH-ключей. При использовании ключа отпадает необходимость вводить пароль каждый раз при новом подключении к плате по SSH, что, несомненно, является большим плюсом. Итак, переходим к сути вопроса.
Вспоминаем, что схема подключения по SSH выглядит следующим образом:
Нашей первостепенной задачей является создание SSH-ключей на ПК, который мы используем для подключения к Raspberry.
В этой статье все команды будут выполняться исключительно на ПК, поэтому не будем помечать каждую команду, как мы делаем в том случае, если часть команд выполняется на Raspberry, а часть - на ПК.
Первым делом проверим, нет ли существующих ключей:
ls ~/.ssh
Если в результате выполнения команды будут обнаружен какой-либо из файлов:
- id_rsa.pub
- id_dsa.pub
То это означает, что ключи уже присутствуют в системе. В этом случае шаг генерации можно пропустить.
Генерация SSH-ключей.
Для создания ключей используем:
ssh-keygen
После вызова команды нужно указать путь для сохранения файлов ключей. Обычно путь по умолчанию (~/.ssh/) вполне подходит, и менять его не требуется. Так что нажимаем Enter и двигаемся дальше.
А, собственно, дальше будет предложено ввести пароль для дополнительной защиты приватного ключа. Даже если злоумышленник скопирует ваш ключ, то не сможет его использовать без этого пароля. Впрочем, можно и не создавать дополнительный пароль, а просто нажать Enter, оставив поле ввода пустым.
На этом процедура генерации SSH-ключей успешно завершена. И теперь снова проверим папку .ssh командой:
ls ~/.ssh
В результате обнаружим файлы:
- id_rsa.pub - публичный (открытый) ключ
- id_rsa - приватный (закрытый) ключ
Приватный ключ хранится на ПК, а публичный на том устройстве, к которому необходимо подключиться. В данном случае в этой роли выступает Raspberry Pi.
Копирование ключа на Raspberry Pi.
Чтобы использовать сгенерированные ключи для подключения по SSH, необходимо добавить публичный ключ в файл ~/.ssh/authorized_keys на Raspberry. Можно скопировать файл id_rsa.pub вручную, либо использовать команду:
ssh-copy-id <user_name>@<ip_address>
<user_name> и <ip_address> - это, соответственно, имя пользователя и ip-адрес платы. Например:
ssh-copy-id pi@192.168.0.102
Итогом всех этих операций будет то, что теперь мы сможем подключаться к Raspberry Pi без использования пароля:
ssh <user_name>@<ip_address>
И пример:
ssh pi@192.168.0.102