Настройка SSH-доступа к OpenWrt по публичному ключу
Скачать клиент PuTTY и генератор ключей PuTTYgen можно здесь.
Чтобы получить беспарольный доступ к роутеру, нам необходимо создать пару ключей: публичный (будет храниться на роутере) и приватный (будет храниться на клиентском компьютере). Для этого будем использовать PuTTYgen.
Публичный ключ
Чтобы создать новый публичный ключ, в окне генератора ключей выбираем тип ключа и его размер. Я обычно выбираю SSH-2 RSA, 4096 bits. Затем нажимаем "Generate", после чего водим курсором в окне программы, пока не заполнится шкала, и ждём, пока не сгенерируется публичный ключ.
В случае, если у нас уже есть приватный ключ, жмём "File->Load private key" и выбираем наш файл ключа (с расширением .ppk).
Затем скопируем сгенерированный публичный ключ в файл /etc/dropbear/authorized_keys на роутере (весь ключ одной строкой, каждый добавляемый ключ с новой строки).
В этом же окне, ниже, отображается "key fingerprint" - это такой короткий идентификатор ключа, который нам будет сообщать удалённый сервер (то есть наш роутер), чтобы можно было убедиться, что мы подключились именно к нашему удалённому серверу, а не какому-либо другому хосту.
Приватный ключ
Если мы генерируем новую пару ключей, то нажимаем "Save private key" и сохраняем приватный ключ (.ppk) в надёжное место. Если компьютер домашний, и мы уверены, что кроме нас никто не получит доступ к нашему файлу ключа, можно просто сохранить его на жёстком диске в любом удобном месте. Если же компьютер может использоваться посторонними лицами, то лучше сохранить ключ на съёмном носителе, либо сохранить его в директории, недоступной для других пользователей.
Тут же можно ещё задать пароль для ключа ("Key passphrase"). При этом повысится безопасность SSH-доступа, но всё равно придётся вводить пароль при каждом подключении (от чего мы, собственно, и уходим). Можно конечно пользоваться программой Pageant, которая позволяет ввести все пароли только один раз при запуске, но это целесообразно, если мы постоянно администрируем несколько удалённых серверов и постоянно подключаемся то к одному, то к другому из них, в течении рабочего дня. Поскольку нам требуется настроить доступ всего лишь к одному домашнему роутеру - оставляем поля "Key passphrase" пустыми.
Дополнительные настройки dropbear
Для большей безопасности можно, также, отключить на роутере возможность SSH-аутентификации пользователя root (и остальных пользователей) по паролю (без приватного ключа).
C помощью UCI:
uci set dropbear.@dropbear[0].PasswordAuth=off
uci set dropbear.@dropbear[0].RootPasswordAuth=off
uci commit dropbear
Либо редактированием файла /etc/config/dropbear:
config dropbear
option Port '22'
option PasswordAuth 'off'
option RootPasswordAuth 'off'
Так же, параметры доступа по SSH можно настроить через веб-интерфейс LUCI на вкладке "система->управление":
Настройка клиента PuTTY
В PuTTY создаём сессию, после чего открываем вкладку "Connection->Data" и в пункте "Auto-login username" указываем нашего пользователя root (или другого, под которым будем логиниться):
Затем переходим на вкладку "SSH->Auth" и в пункте "Private key file for authentication" указываем путь к нашему файлу ключа (.ppk):
После этого возвращаемся на вкладку "Session", не забываем сохранить настройки сессии и пробуем подключиться. При первом подключении PuTTY выдаст сообщение, что публичный ключ удалённого сервера отсутствует в реестре и отобразит его идентификатор (fingerprint). Если fingerprint соответствует нашему - можем добавлять удалённый сервер в реестр известных хостов, нажав "YES" в этом окне. При следующем подключении сессия откроется без всяких дополнительных вопросов.
Комментариев: 0