Задать вопрос
@islyamovasan

Как настроить подключение через SSH?

Работаю на windows 11
Роутер - Keenetic Ultra KN-1811
При подключении через putty к роутеру по SSH возникает проблема. Пробовал аналогичное подключение через telnet -все работает
ИИ советует в командной строке перед адресом добавить "-vvv", чтобы получить подробный вывод. На выходе получил вот такой текст. Подскажите пожалуйста в чем может быть проблема
Заранее спасибо
PS C:\Windows\System32> ssh -vvv root@192.168.1.1
OpenSSH_for_Windows_9.5p1, LibreSSL 3.8.2
debug3: Failed to open file:C:/Users/Asan Isliamov/.ssh/config error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_config error:2
debug2: resolve_canonicalize: hostname 192.168.1.1 is address
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> 'C:\\Users\\Asan Isliamov/.ssh/known_hosts'
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> 'C:\\Users\\Asan Isliamov/.ssh/known_hosts2'
debug3: ssh_connect_direct: entering
debug1: Connecting to 192.168.1.1 [192.168.1.1] port 22.
debug3: finish_connect - ERROR: async io completed with error: 10013, io:000002C9157F4000
debug1: connect to address 192.168.1.1 port 22: Permission denied
ssh: connect to host 192.168.1.1 port 22: Permission denied
  • Вопрос задан
  • 4980 просмотров
Подписаться 2 Простой 18 комментариев
Помогут разобраться в теме Все курсы
  • REBRAIN
    OpenSSH
    1 месяц
    Далее
  • Stepik
    Профессия Frontend-разработчик
    6 месяцев
    Далее
  • ProductStar × РБК
    Профессия DevOps-инженер + ИИ
    5 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 4
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Доступ по SHH - стоит галочка
...
во вкладке пользователи есть учетная запись admin

ssh -vvv root@192.168.1.1

А вы пытаетесь зайти под другим пользователем — вот поэтому и не пускает. Надо заходить под тем пользователем, которому разрешён вход. А уже только потом, зайдя как обычный пользователь, можно поднять привилегии или разрешить вход другим пользователям.
Ответ написан
@q2digger
никого не трогаю, починяю примус
Вот например официальный мануал кинетика - https://help.keenetic.com/hc/ru/articles/360000387...
и там есть интересное

После установки компонента сервер SSH будет включен автоматически. Доступ к нему разрешен в локальных интерфейсах с уровнем безопасности private.
...
...
Чтобы разрешить доступ из внешних сетей, нужно серверу SSH установить публичный уровень безопасности,

и так далее. Делал?
Ответ написан
А не проблема с сертификатом то? "debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> 'C:\\Users\\Asan Isliamov/.ssh/known_hosts'" Переместите файлы из этого места и попробуйте подключиться.
Ответ написан
Комментировать
@Dikkins
В общем, много разных советов читал, но нормальной инструкции так и не нашёл, так что вот вам моя версия с успешным подключением по ключу.
Подключение через порт DropBear (предустановленный пакет Entware) - не путайте с параметрами SSH, настраиваемыми на самом роутере. При подключении напрямую к DropBear вы попадаете в Entware минуя cli роутера (не нужно будет писать `exec sh`).
Может потребоваться настраивать разрешение в фаерволе самого роутера (через веб-морду).

Настройки для ROOT (пароль должен быть задан при первоначальной настройке Entware)!

Для Windows-пользователей расположение config-файла SSH и ключи по умолчанию в папке пользователя: C:\Users\`USERNAME`\.ssh ( %userprofile%\.ssh )

# Настройка входа по SSH-ключу в Entware Dropbear на Keenetic

## 1. Создать SSH-ключ на компьютере

Если ключа ещё нет:

```powershell
ssh-keygen -t ed25519
```

По умолчанию будут созданы:

```text
~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub
```

* `id_ed25519` — приватный ключ, его никому не передавать;
* `id_ed25519.pub` — публичный ключ, его нужно добавить на роутер.

## 2. Определить домашний каталог root в Entware

Подключиться к Entware Dropbear по паролю и выполнить:

```sh
echo "$HOME"
grep '^root:' /opt/etc/passwd /etc/passwd 2>/dev/null
```

Обычно для Entware:

```text
HOME=/opt/root
```

## 3. Создать каталог для ключей

На роутере:

```sh
mkdir -p /opt/root/.ssh
chmod 700 /opt/root/.ssh
```

Добавить содержимое публичного ключа в файл:

```sh
nano /opt/root/.ssh/authorized_keys
```

Вставить одну строку вида:

```text
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... user@computer
```

После сохранения:

```sh
chmod 600 /opt/root/.ssh/authorized_keys
chown -R root:root /opt/root/.ssh
```

Проверить:

```sh
ls -ld /opt/root /opt/root/.ssh
ls -l /opt/root/.ssh/authorized_keys
```

Нормальные права:

```text
drwxr-xr-x /opt/root
drwx------ /opt/root/.ssh
-rw------- /opt/root/.ssh/authorized_keys
```

## 4. Проверить вход с явным указанием ключа

На компьютере:

```powershell
ssh -i ~/.ssh/id_ed25519 -p 222 root@ROUTER_IP
```

Для проверки без перехода к паролю:

```powershell
ssh -o BatchMode=yes -i ~/.ssh/id_ed25519 -p 222 root@ROUTER_IP
```

Если вход прошёл — настройка готова.

## 5. Если Dropbear всё равно требует пароль

Запустить временный Dropbear на другом порту, явно указав каталог с `authorized_keys`:

```sh
/opt/sbin/dropbear \
-F \
-E \
-p 223 \
-P /tmp/dropbear-test.pid \
-D /opt/root/.ssh
```

Из другого окна проверить:

```powershell
ssh -o BatchMode=yes -i ~/.ssh/id_ed25519 -p 223 root@ROUTER_IP
```

Если с параметром `-D` ключ заработал, значит установленный Dropbear по умолчанию ищет `authorized_keys` не в домашнем каталоге пользователя.

## 6. Постоянно указать каталог authorized_keys

Открыть конфигурацию:

```sh
nano /opt/etc/config/dropbear.conf
```

Добавить:

```sh
AUTHORIZED_KEYS_DIR="/opt/root/.ssh"
```

Пример полного файла:

```sh
PORT=222
PIDFILE="/opt/var/run/dropbear.pid"
AUTHORIZED_KEYS_DIR="/opt/root/.ssh"
```

Открыть init-скрипт:

```sh
nano /opt/etc/init.d/S51dropbear
```

Найти функцию запуска:

```sh
start()
{
$DROPBEAR -p $PORT -P $PIDFILE
}
```

Заменить на:

```sh
start()
{
$DROPBEAR -p "$PORT" -P "$PIDFILE" -D "$AUTHORIZED_KEYS_DIR"
}
```

Перезапустить Dropbear:

```sh
/opt/etc/init.d/S51dropbear restart
```

Текущую SSH-сессию до проверки лучше не закрывать.

Проверить из нового окна:

```powershell
ssh -o BatchMode=yes -i ~/.ssh/id_ed25519 -p 222 root@ROUTER_IP
```

## 7. Проверить параметры запущенного процесса

На роутере:

```sh
ps w | grep '[d]ropbear'
```

У Entware Dropbear должна быть строка примерно такого вида:

```text
/opt/sbin/dropbear -p 222 -P /opt/var/run/dropbear.pid -D /opt/root/.ssh
```

Также можно проверить слушающий порт:

```sh
netstat -lntp | grep ':222'
```

## 8. Удобная запись в SSH config

На компьютере можно добавить:

```sshconfig
Host my-router
HostName 192.168.1.1
User root
Port 222
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
```

После этого подключение выполняется одной командой:

```powershell
ssh my-router
```

## Диагностика

Для подробного вывода клиента:

```powershell
ssh -vvv -i ~/.ssh/id_ed25519 -p 222 root@ROUTER_IP
```

В исправном случае должны появиться строки:

```text
Offering public key
Server accepts key
Authenticated ... using "publickey"
```

Если есть:

```text
Offering public key
```

но нет:

```text
Server accepts key
```

значит клиент ключ нашёл, но Dropbear его отвергает. Нужно проверять:

* путь к `authorized_keys`;
* параметр `-D`;
* права каталогов и файла;
* соответствие публичного ключа приватному;
* пользователя, под которым выполняется вход.

Поиск файлов вида:

```text
id_ed25519-cert
id_ed25519-cert.pub
```

Поиск файлов вида `id_ed25519-cert` и `id_ed25519-cert.pub` в отладочном выводе OpenSSH является нормальным. Клиент автоматически проверяет наличие SSH-сертификата рядом с обычным ключом; отсутствие этих файлов не мешает авторизации обычным ключом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы