Замена 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