在 OpenWrt 路由系统中,SSH 默认使用 Dropbear 作为服务端,并允许密码登录。
在具备公网访问、端口转发或远程运维场景下,切换为仅密钥登录可以显著降低暴力破解与误入侵风险。
本文记录 OpenWrt 中将 SSH 登录方式由“密码 + 密钥”调整为“仅密钥”的完整过程,并附带常见注意事项。
一、OpenWrt 中 SSH 的配置位置
OpenWrt 提供两种主要配置方式:
- LuCI Web 管理界面
- 直接编辑配置文件(命令行)
底层服务均由 Dropbear 控制。
二、通过 LuCI Web 界面配置(直观方式)
配置路径
系统 (System)
└─ 管理权 (Administration)
└─ SSH 访问 (SSH Access)
关键设置项
- 允许密码认证(Password authentication)
- 关闭
- 允许 root 登录
- 根据实际策略选择(OpenWrt 默认即 root)
- SSH 公钥
- 粘贴客户端的
*.pub公钥内容(完整一行)
- 粘贴客户端的
保存并应用即可生效。
三、通过命令行配置(可控性更高)
1️⃣ 准备 SSH 公钥(客户端)
在客户端生成或查看公钥,例如:
cat ~/.ssh/id_ed25519.pub
复制输出的整行内容。
2️⃣ 写入 OpenWrt 的 authorized_keys
登录 OpenWrt(此阶段仍保留密码登录):
ssh root@<router-ip>
创建并编辑公钥文件:
mkdir -p /etc/dropbear
vi /etc/dropbear/authorized_keys
示例内容:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... comment
设置正确权限(非常重要):
chmod 600 /etc/dropbear/authorized_keys
3️⃣ 禁用 SSH 密码认证
编辑 Dropbear 配置:
vi /etc/config/dropbear
确保包含以下配置项:
option PasswordAuth 'off'
option RootPasswordAuth 'off'
重启 SSH 服务使其生效:
/etc/init.d/dropbear restart
四、配置完成后的验证步骤(必须执行)
不要关闭当前会话。
在新终端中测试:
ssh root@<router-ip>
确认结果:
- 登录过程中 不再提示输入密码
- 使用密钥可直接进入系统
验证成功后,再退出旧会话。
五、常见问题与注意事项
1. 公钥路径错误
OpenWrt 使用的路径是:
/etc/dropbear/authorized_keys
而不是常见 Linux 系统中的:
/root/.ssh/authorized_keys
路径错误会导致密钥始终无效。
2. 文件权限不正确
权限必须至少满足:
chmod 600 /etc/dropbear/authorized_keys
权限过宽会被 Dropbear 忽略。
3. 远程环境下的风险操作
- 不要在 公网 / FRP / 端口转发环境 中
- 未验证密钥前就关闭密码登录
- 推荐流程:
- 先添加密钥
- 验证可登录
- 再禁用密码
六、推荐的安全实践组合
适用于家庭路由、长期运行环境:
- SSH:仅密钥登录
- SSH:允许 root(OpenWrt 体系决定)
- LuCI:HTTPS + 强密码
- WAN:不直接暴露 22 端口
- 密钥:使用 ed25519 优先
结语
在 OpenWrt 中启用 SSH 密钥登录并关闭密码认证,是一项低成本、高收益的安全加固措施。
只要遵循“先验证、后关闭”的原则,即可在不增加运维风险的前提下,大幅提升系统安全性。
该配置一旦完成,几乎不需要后续维护,非常适合长期运行的路由与家庭服务器环境。