Замена Dropbear на OpenSSH + SFTP

Обычный OpenWrt изначально имеет маленький Dropbear SSH сервер. Но в нём не хватает множества функциональностей. Вы можете установить сервер OpenSSH который больше но богаче и используется по умолчанию на рабочих системах н.п. Ubuntu.

Установка

Чтобы избежать конфликта порта нам нужно сначала переназначить порт у существующего Dropbear с порта по умолчанию, затем установить OpenSSH, подключиться к нему и уже только потом удалить Dropbear.

Чтобы обезопаситься если авторизация по публичному ключу поломается вам нужно будет авторизоваться по паролю. Поэтому убедитесь, что у пользователя root установлен пароль используя passwd.

Установите порт Dropbear на неиспользуемый (например 2222) и перезапустите его:

uci set dropbear.@dropbear[0].Port=2222
uci commit dropbear
/etc/init.d/dropbear restart

Переподключитесь к SSH через указанный порт ssh root@192.168.1.1 -p 2222.

Установите сервер OpenSSH:

opkg update
opkg install openssh-server

Разрешить подключение для root:

sed -i 's/^#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

При подключении Dropbear проверяет что ваш публичный ключ разрешён в файле /etc/dropbear/authorized_keys. Но OpenSSH проверяет /root/.ssh/authorized_keys. Поэтому скопируйте этот файл:

mkdir /root/.ssh/
cp /etc/dropbear/authorized_keys /root/.ssh/

Активируйте и перезапустите сервер OpenSSH:

/etc/init.d/sshd enable
/etc/init.d/sshd restart

OpenSSH теперь использует порт 22. Переподключитесь к SSH чтобы убедиться ssh root@192.168.1.1.

При установке OpenSSH сгенерирует новые ключи хоста поэтому при соединение вы уведите предупреждение.

Теперь Вы можете отключить Dropbear:

/etc/init.d/dropbear disable
/etc/init.d/dropbear stop

Рекомендуемый шаг: Установите пакет openssh-sftp-server для поддержки протокола SFTP:

opkg update
opkg install openssh-sftp-server

Если нужно то настройте OpenSSH сервер в файле /etc/ssh/sshd_config и перезапустите его /etc/init.d/sshd restart