Безопасный вход на Raspberry Pi без пароля
Нам постоянно говорят выбирать длинный, сложный для угадывания пароль для всех наших аккаунтов, так как же мы можем входить на Raspberry Pi без пароля, используя SSH (Secure Shell)?
Пароли — не самый безопасный способ входа. Их можно угадать или «подобрать перебором», выполняя миллионы попыток с использованием распространённых слов или известных паролей. Есть способ лучше — использовать секреты, которые известны только Raspberry Pi и компьютеру, с которого вы входите, в виде сертификатов.
Для этого мы воспользуемся инструментом для генерации так называемой пары приватного/публичного ключей на ПК, С КОТОРОГО вы будете входить. Вы абсолютно обязаны хранить «приватный ключ» в секрете и никому его не передавать. Однако «публичный ключ» вы можете передавать кому угодно, так как он бесполезен без приватного ключа.
Существует множество различных способов генерации пар ключей, но распространённое приложение для Windows называется PuTTygen. Оно входит в состав PuTTy — SSH- и Telnet-клиента для Windows. Скачайте его с https://www.putty.org/, перейдя по ссылке в раздел загрузок.
Генерация пар ключей
После установки вам нужно запустить PuTTygen. Вы увидите простое окно:
НЕ используйте ключ 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. Вы увидите список сохранённых сессий или компьютеров, для которых вы ранее сохраняли данные для входа:
Введите имя хоста или IP-адрес Raspberry Pi, на который вы хотите войти, в поле «Host Name», оставьте порт 22 и тип подключения SSH.
Далее нажмите на Data в разделе Connection. Введите «pi» в поле «Auto-login username»:
Нажмите на + рядом с SSH в категории Connection слева:
Затем выберите «Auth»:
Здесь вы укажете PuTTy использовать ваш Приватный ключ для подключения к Raspberry Pi. Нажмите Browse и выберите файл .ppk, сохранённый из PuTTygen.
Вернитесь на экран Session, прокрутив полосу прокрутки слева до самого верха и выбрав «Session». Введите имя вашего Raspberry Pi в поле Saved Sessions и нажмите Save.
Теперь нажмите Open. Это откроет SSH-терминал к вашему Raspberry Pi, и вы будете авторизованы:
Завершение настройки
Отключение входа по паролю
После того как вы проверили вход с использованием пар ключей, вы можете ОТКЛЮЧИТЬ вход по имени пользователя/паролю для завершения настройки.
«Демон 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
Заключение
Теперь каждый раз, когда вы используете PuTTy для входа на Raspberry Pi, вы будете подключаться напрямую, без запроса пароля.