Скачать клиент PuTTY и генератор ключей PuTTYgen можно здесь.
Чтобы получить беспарольный доступ к роутеру (да и вообще, к любой Unix-системе) по SSH, нам необходимо создать пару ключей: публичный (будет храниться на роутере) и приватный (будет храниться на клиентском компьютере). Для этого будем использовать генератор ключей 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» в этом окне. При следующем подключении сессия откроется без всяких дополнительных вопросов.