Безопасный вход на Raspberry Pi без пароля

Безопасный вход на Raspberry Pi без пароля

Нам постоянно говорят выбирать длинный, сложный для угадывания пароль для всех наших аккаунтов, так как же мы можем входить на Raspberry Pi без пароля, используя SSH (Secure Shell)?

Пароли — не самый безопасный способ входа. Их можно угадать или «подобрать перебором», выполняя миллионы попыток с использованием распространённых слов или известных паролей. Есть способ лучше — использовать секреты, которые известны только Raspberry Pi и компьютеру, с которого вы входите, в виде сертификатов.

Для этого мы воспользуемся инструментом для генерации так называемой пары приватного/публичного ключей на ПК, С КОТОРОГО вы будете входить. Вы абсолютно обязаны хранить «приватный ключ» в секрете и никому его не передавать. Однако «публичный ключ» вы можете передавать кому угодно, так как он бесполезен без приватного ключа.

Существует множество различных способов генерации пар ключей, но распространённое приложение для Windows называется PuTTygen. Оно входит в состав PuTTy — SSH- и Telnet-клиента для Windows. Скачайте его с https://www.putty.org/, перейдя по ссылке в раздел загрузок.

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

После установки вам нужно запустить PuTTygen. Вы увидите простое окно:

Генератор ключей PuTTy

НЕ используйте ключ RSA по умолчанию, потому что он уже не так безопасен, как раньше. Вместо этого выберите ED25519, а затем нажмите Generate. Вас попросят случайным образом перемещать мышь в пустой области окна. Это обеспечит программе «энтропию» или «случайность», необходимую для генерации хорошего приватного ключа:

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

Не волнуйтесь, я не собираюсь использовать этот приватный ключ где-либо!

Не вводите парольную фразу. Если вы это сделаете, вас будут просить вводить её каждый раз при попытке входа на Raspberry Pi.

Может быть полезно отредактировать комментарий к ключу, изменив его на имя ПК, с которого вы будете входить, что упростит удаление нужной строки, если к вашему Raspberry Pi имеют доступ несколько компьютеров.

Теперь сохраните оба ключа — Публичный и Приватный — в файлы на вашем ПК, назвав их, например, myssh.pub и myssh.ppk соответственно. Не забудьте хранить Приватный ключ в безопасности и сделайте его резервную копию в предпочитаемом хранилище паролей, например LastPass (вы ведь используете такое, правда?).

Теперь вы готовы установить публичный ключ на Raspberry Pi и приватный ключ в SSH-клиент на вашем ПК.

Установка публичного ключа

Теперь войдите на Raspberry Pi текущим предпочтительным способом — будь то SSH с паролем или VNC. Откройте окно терминала и создайте новую папку, используя следующие команды:

cd ~
mkdir .ssh
cd ~/.ssh

Теперь нам нужно создать новый файл авторизованных ключей и скопировать в него публичный ключ. Публичный ключ отображается в верхнем поле окна PuTTygen:

Публичный ключ

Создайте и отредактируйте файл командой:

nano ~/.ssh/authorized_keys

Скопируйте и вставьте публичный ключ в этот файл, затем закройте его с сохранением, нажав Ctrl+X, ответив «Y» на запрос сохранения и нажав Enter.

Если вы хотите получать доступ к Raspberry Pi с других компьютеров, вы можете добавить несколько публичных ключей в файл authorized_keys.

Настройка SSH-клиента

На вашем ПК я предполагаю, что вы используете один из двух наиболее популярных SSH-клиентов: PuTTy или KiTTy. Оба очень похожи (KiTTy — это форк PuTTy), но поскольку мы установили PuTTy для использования PuTTygen, мы будем использовать именно его.

Откройте PuTTy. Вы увидите список сохранённых сессий или компьютеров, для которых вы ранее сохраняли данные для входа:

PuTTy

Введите имя хоста или IP-адрес Raspberry Pi, на который вы хотите войти, в поле «Host Name», оставьте порт 22 и тип подключения SSH.

Далее нажмите на Data в разделе Connection. Введите «pi» в поле «Auto-login username»:

Настройка пользователя SSH

Нажмите на + рядом с SSH в категории Connection слева:

Параметры SSH

Затем выберите «Auth»:

Настройка авторизации PuTTy

Здесь вы укажете PuTTy использовать ваш Приватный ключ для подключения к Raspberry Pi. Нажмите Browse и выберите файл .ppk, сохранённый из PuTTygen.

PuTTy — указание приватного ключа

Вернитесь на экран Session, прокрутив полосу прокрутки слева до самого верха и выбрав «Session». Введите имя вашего Raspberry Pi в поле Saved Sessions и нажмите Save.

PuTTy — сохранение конфигурации

Теперь нажмите Open. Это откроет SSH-терминал к вашему Raspberry Pi, и вы будете авторизованы:

SSH — вход выполнен

Завершение настройки

Отключение входа по паролю

После того как вы проверили вход с использованием пар ключей, вы можете ОТКЛЮЧИТЬ вход по имени пользователя/паролю для завершения настройки.

«Демон SSH» — сервис на Raspberry Pi, который позволяет вам входить по SSH — должен перестать запрашивать имя пользователя/пароль. Для этого подключитесь к Raspberry Pi по SSH и отредактируйте файл sshd_config командой:

sudo nano /etc/ssh/sshd_config

Отредактируйте строку PasswordAuthentication, раскомментировав её (убрав символ «#») и изменив значение с «yes» на «no»:

PasswordAuthentication no

Затем вам нужно перезапустить демон SSH, перезагрузив Raspberry Pi командой:

sudo reboot

Защита файла authorized_keys

Если на Raspberry Pi есть другие пользователи, кроме самого «pi», они могут просматривать файл authorized_keys, изменяя его содержимое или добавляя свои ключи. Поэтому хорошей практикой является защита файла от всех, кроме пользователя «pi», разрешив только ему просматривать и редактировать файл. Сделайте это, выполнив следующую команду в окне терминала:

chmod 700 ~/.ssh/authorized_keys

Заключение

Теперь каждый раз, когда вы используете PuTTy для входа на Raspberry Pi, вы будете подключаться напрямую, без запроса пароля.