code4f 2025-12-21 13:45 采纳率: 98.8%
浏览 2
已采纳

小米路由R1D开启SSH后无法登录?

小米路由R1D开启SSH后无法登录的常见问题之一是:刷入开发版固件并开启SSH服务后,虽然提示开启成功,但使用SSH客户端(如PuTTY或SecureCRT)连接时出现“Connection refused”或“Connection timeout”错误。此问题通常由路由器防火墙规则未开放22端口、SSH服务未正常启动、或本地网络与路由器IP地址不在同一网段引起。此外,部分用户在Windows系统下使用SSH工具时,因未正确配置协议类型(误选Telnet等)导致连接失败。建议检查路由器是否已正确运行SSH守护进程、确认IP地址与端口无误,并尝试通过路由器后台日志排查服务状态。
  • 写回答

1条回答 默认 最新

  • 小小浏 2025-12-21 13:45
    关注

    1. 问题背景与现象描述

    小米路由R1D作为早期支持刷机和开发者模式的家用路由器,在极客圈中拥有较高的可玩性。在刷入开发版固件并成功开启SSH服务后,系统通常会提示“SSH已开启”,但用户在使用PuTTY、SecureCRT或OpenSSH等客户端连接时,常遇到“Connection refused”(连接被拒绝)或“Connection timeout”(连接超时)错误。

    该问题并非单一原因导致,而是涉及网络配置、服务状态、防火墙策略及客户端设置等多个层面。对于具备5年以上IT经验的技术人员而言,此类问题虽属常见,但在嵌入式设备上排查仍需结合底层日志与系统行为进行深度分析。

    2. 常见故障原因分类

    • 防火墙未开放22端口
    • SSH守护进程(dropbear)未正常启动
    • 本地PC与路由器IP不在同一子网
    • SSH客户端协议选择错误(如误选Telnet)
    • 固件刷写不完整或存在兼容性问题
    • 路由器NAT/ACL规则阻止了外部访问
    • SSH绑定地址限制为localhost而非0.0.0.0

    3. 排查流程图(Mermaid格式)

    
    graph TD
        A[SSH连接失败] --> B{能否Ping通路由器IP?}
        B -->|否| C[检查网线、IP配置、子网掩码]
        B -->|是| D[登录Web管理界面]
        D --> E[查看系统日志是否含dropbear启动信息]
        E -->|无记录| F[确认SSH功能是否真已启用]
        E -->|有记录| G[检查iptables规则是否放行22端口]
        G --> H[使用nmap扫描22端口状态]
        H -->|closed/filtered| I[调整防火墙或重启SSH服务]
        H -->|open| J[验证SSH客户端协议与认证方式]
        J --> K[成功连接]
    
    

    4. 深度技术分析

    小米R1D基于Linux内核运行OpenWrt风格的定制系统,其SSH服务依赖于轻量级的dropbear实现。即使Web界面提示“SSH已开启”,实际后台可能因权限不足、配置文件损坏或init脚本异常而未能真正启动服务。

    此外,部分开发版固件默认将SSH服务绑定至127.0.0.1,导致仅允许本地shell访问,外部无法连接。此行为可通过以下命令验证:

    netstat -tuln | grep :22

    若输出显示127.0.0.1:22而非0.0.0.0:22,则说明监听范围受限。

    5. 防火墙与端口配置检查

    检查项命令示例预期输出
    查看22端口监听状态netstat -tuln | grep 22tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
    检查iptables INPUT链iptables -L INPUT -n | grep 22包含ACCEPT规则且目标端口为22
    测试端口可达性nmap -p 22 192.168.31.1PORT STATE SERVICE
    22/tcp open ssh

    6. 客户端配置与操作系统差异

    在Windows平台使用PuTTY时,常见误区是创建会话时选择了错误的连接类型。例如,误将“Telnet”或“Serial”作为协议,而非“SSH”。应确保:

    1. 主机名填写正确的路由器局域网IP(通常为192.168.31.1)
    2. 端口号为22
    3. 连接类型明确选择“SSH”
    4. 用户名一般为root,密码为开启SSH时设置的令牌

    此外,某些安全软件(如360、卡巴斯基)可能拦截SSH连接尝试,建议临时关闭防火墙测试。

    7. 日志分析与服务状态验证

    通过Web后台或串口控制台访问系统日志,执行:

    logread | grep dropbear

    典型成功日志如下:

    dropbear[1234]: Child connection from 192.168.31.100:54321

    若无任何输出,则表明dropbear未启动。可尝试手动启动:

    /etc/init.d/dropbear start

    并设置开机自启:

    /etc/init.d/dropbear enable
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 12月22日
  • 创建了问题 12月21日