在 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 / 端口转发环境
    • 未验证密钥前就关闭密码登录
  • 推荐流程:
    1. 先添加密钥
    2. 验证可登录
    3. 再禁用密码

六、推荐的安全实践组合

适用于家庭路由、长期运行环境:

  • SSH:仅密钥登录
  • SSH:允许 root(OpenWrt 体系决定)
  • LuCI:HTTPS + 强密码
  • WAN:不直接暴露 22 端口
  • 密钥:使用 ed25519 优先

结语

在 OpenWrt 中启用 SSH 密钥登录并关闭密码认证,是一项低成本、高收益的安全加固措施。
只要遵循“先验证、后关闭”的原则,即可在不增加运维风险的前提下,大幅提升系统安全性。

该配置一旦完成,几乎不需要后续维护,非常适合长期运行的路由与家庭服务器环境。

Leave a Reply

Your email address will not be published. Required fields are marked *