Удаленный доступ через SSH к командной строке Keenetic
Начиная с версии операционной системы KeeneticOS 2.12 был добавлен сервер SSH (Secure Shell — безопасная оболочка), с помощью которого можно безопасно подключаться к командной строке интернет-центра. Рассмотрим далее настройку интернет-центра для осуществления удаленного подключения к его интерфейсу командной строки (CLI).
Для работы сервера SSH нужно в интернет-центре предварительно установить компонент системы "Сервер SSH". Сделать это можно на странице "Общие настройки" в разделе "Обновления и компоненты", нажав на "Изменить набор компонентов".
После установки компонента сервер SSH будет включен автоматически. Доступ к нему разрешен в локальных интерфейсах с уровнем безопасности private
. Информацию об уровнях доступа, которые определяют уровень безопасности (логику работы сетевого экрана), вы найдете в статье: "Настройка правил межсетевого экрана из командного интерфейса".
Чтобы разрешить доступ из внешних сетей, нужно серверу SSH установить публичный
уровень безопасности, выполнив в интерфейсе командной строки интернет-центра команды:
(config)>ip ssh
Core::Configurator: Done. (config-ssh)>security-level public
Ssh::Manager: Security level changed to public.
Чтобы избежать нежелательных попыток взлома со стороны ботов, случайных Black/Grey Hat хакеров, а также для случаев когда на стандартном порту уже работает SSH-сервер в OPKG-подсистеме, рекомендуется сменить стандартный порт сервера. Порт, на котором работает сервер, по умолчанию стандартный - с номером 22
. Его можно поменять на один из неиспользуемых номеров (например, на 2022
):
(config-ssh)> port 2022
Ssh::Manager: Port changed to 2022.
Теперь пользователи, имеющие право доступа к командной строке Keenetic, смогут обратиться из SSH-клиента на внешний IP-адрес интернет-центра по порту 2022
и получить доступ к его командной строке в зашифрованном безопасном канале.
Для сохранения настройки нужно выполнить команду:
(config)> system configuration save
Core::ConfigurationSaver: Saving configuration...
Подключение к серверу SSH
Для подключения к Keenetic по протоколу SSH можно воспользоваться любой терминальной программой с поддержкой данного типа подключений. Например, бесплатным клиентом PuTTY.
Скачайте, установите и запустите на компьютере терминальный клиент PuTTY. В поле "Connection type" (Тип соединения) укажите тип подключения "SSSHSH". Введите в поле "Host Name or IP address" (Имя хоста или IP-адрес) сетевое имя или IP-адрес устройства (локальный IP при подключении из домашней сети или публичный "белый" WAN IP при подключении из Интернета), а в поле "Port" (Порт) – номер порта, по которому будет осуществляться подключение (по умолчанию протокол SSH использует порт 22
, в нашем примере используется порт 2022
).
После нажатия кнопки "Open" (Соединиться) появится запрос логина и пароля для авторизации на устройстве. Введите данные учетной записи администратора. После успешного ввода логина и пароля администратора появится приглашение командной строки роутера.
Также легко установить SSH-подключение из дистрибутива ОС Linux. Например, для подключения клиента SSH, с именем пользователя admin
, следует использовать команду:
[alexander@silverado ~]$ ssh admin@192.168.1.1 -p 2022
Warning: Permanently added '[192.168.1.1]:2022' (ECDSA) to the list of known hosts.
admin@192.168.1.1's password:
X11 forwarding request failed on channel 0
(config)>
Если ваши ключи скомпрометированы, сервер SSH может сгенерировать новые. Эта процедура происходит автоматически при установке компонента системы, но может также быть запущена по команде ip ssh keygen {keygen}
, где вместо {keygen}
следует указать нужный алгоритм — default
например.
(config-ssh)> keygen default
Ssh::Manager: Key generation is in progress...
progress, name = SSH key generation: 0
....
progress, name = SSH key generation: 50
progress, name = SSH key generation: 100
Если вы сменили ключи на сервере, то на клиенте, который их запомнил автоматически, следует выполнить очистку. В Linux-дистрибутивах для этого можно использовать приложение ssh-keygen
с ключом -R
(важен регистр, поскольку ключ -r
служит для печати на экран хэш-значений сохраненных ключей):
[alexander@silverado ~]$ ssh-keygen -R '[192.168.1.1]:2022'
# Host [192.168.1.1]:2022 found: line 1
/home/alexander/.ssh/known_hosts updated.
Original contents retained as /home/alexander/.ssh/known_hosts.old
Примечание
Начиная с версии KeeneticOS 2.11
, незащищенные telnet-сессии управления интернет-центром через командную строку автоматически завершаются через 3 минуты
неактивности пользователя. Значением этого таймаута можно управлять, но установить бесконечную продолжительность сессии нет возможности.
Для сессии SSH-подключения по умолчанию установлен таймаут 300 секунд
(5 минут
). При необходимости это значение можно увеличить. Данный параметр может принимать значение до 232-1
секунд включительно.