MENU

OpenWRT编译安装OpenSSH替代Dropbear

January 6, 2022 • Read: 4602 • 随心笔记

OpenWRT默认ssh组件使用Dropbear,但不带SFTP,当然你也可以后续再安装,又或者直接使用openssh替代dropbear,像我这样折腾。

编译配置

进入您的编译目录,执行 make menuconfig进入配置界面

取消Dropbear

路径:Base System里面取消勾选Dropbear
取消dropbear.png

编译OpenSSH

路径 Network -> SSH 如图勾选
勾选openssh.png

最后记得保存,随后编译安装即可!

SSH登录配置

直接编译安装的OpenSSH默认不支持密码登录,所以你无论怎样也连不上,是不是发现被坑了?
哈哈,皮一下,毕竟这个坑我给大家趟过了,这里提供两种方法。

1、密钥登录

在编译之前,提前写入固件自己登录设备的公钥,具体操作:
进入编译目录,再进入路径:/package/base-files/files/,随后建立一个二级目录root/.ssh/,所以完整的路径为:

编译目录/package/base-files/files/root/.ssh

新建一个文件authorized_keys,写入自己电脑公钥即可,编译刷入固件之后,则无需密码直接登录。

2、利用luci开启密码登录

如果已经安装luci,并且设置了密码,那么适合本方法,具体操作:

ssh开启密码登录.png
登录luci后台,依次找到System -> Starup -> Locale Startup,会看到一个脚本编辑页面,在最后一行内容exit 0之前写入以下内容:

sed -i "s/#PasswordAuthentication yes/PasswordAuthentication yes/g"  /etc/ssh/sshd_config
sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g"  /etc/ssh/sshd_config

随后后台System -> Reboot点击重启,重启之后会发现已经可以直接使用密码登录,随后上面的增加的脚本内容则可以去掉啦。

可能的错误

以上都是基于Openwrt官方源码编译的操作流程,如果您基于lede的源码,那么编译之后可能会出现这个错误:
无论怎么改密码亦或者使用密钥,均无法正常登陆,在luci后台系统日志里面出现以下错误日志:

fatal: privsep_preauth: preauth child terminated by signal 31

那你可以参考一下这个解决方法,至于这个为什么会出现这个问题,暂时未知。

Last Modified: January 9, 2022