SSH服务启动失败,提示 “Bad configuration options” 错误如何解决?

问题原因

SSH服务配置错误,导致SSH服务启动失败:

  • 语法错误:配置项拼写错误或配置项的值不在其允许的范围或预定义的枚举列表内(例如,on/off,true/false,或特定的数值区间)。

  • 文件编码错误:文件包含BOM头或CRLF换行符。

解决方案

方案一:修复SSH服务配置错误

  1. 通过VNC连接登录ECS实例。

    1. 访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。

    2. 进入目标实例详情页,单击远程连接,选择通过VNC远程连接。输入账号和密码,登录ECS实例。

  2. 诊断SSH服务配置。

    sudo /usr/sbin/sshd -t

    分析命令返回的错误信息。错误输出会指出问题所在的文件、行号和错误类型:

    # 示例1:使用了已废弃的配置项
    /etc/ssh/sshd_config: line 82: Bad configuration option: RSAAuthentication
    
    # 示例:配置项值不正确
    /etc/ssh/sshd_config: line 23: bad value for Port "222222"
  3. 修改配置文件。

    sudo vim /etc/ssh/sshd_config
    • 处理废弃的配置项:随着OpenSSH版本更新,一些旧的配置项会被废弃。应注释或删除相关行。

      • RSAAuthentication:在OpenSSH 7.0及更高版本中废弃。

      • UsePrivilegeSeparation:在OpenSSH 7.5及更高版本中默认启用且配置项被废弃。

    • 修正语法错误:根据错误提示修改指定行号的配置,确保语法正确且值在有效范围内。

    • 检查并修复文件编码:从Windows系统复制的配置文件可能包含BOM头或CRLF换行符,导致解析失败。

      • 检查换行符格式:输入 :set fileformat?

        若显示fileformat=dos,说明文件包含CRLF换行符,输入:set fileformat=unix进行修复。

      • 检查BOM头: 输入:set bomb?

        若显示 bomb,说明文件包含BOM头,输入 :set nobomb进行修复。

    如果以上问题不存在,或配置文件损坏严重,可重新安装SSH服务

  4. 验证配置。

    无返回信息时,说明sshd配置正确。

    # 验证配置
    sudo /usr/sbin/sshd -t
  5. 重新启动SSH服务。

    sudo systemctl restart sshd
  6. 验证服务状态。

    若返回信息包含active (running),说明服务启动成功。

    sudo systemctl status sshd

方案二:重新安装SSH服务

  1. 通过VNC连接登录ECS实例。

    1. 访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。

    2. 进入目标实例详情页,单击远程连接,选择通过VNC远程连接。输入账号和密码,登录ECS实例。

  2. 备份配置文件。

    重新安装SSH服务会丢失所有自定义的SSH配置(如修改过的端口、密钥认证设置等)。

    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup-$(date +%Y%m%d-%H%M%S)
  3. 卸载SSH服务。

    sudo rpm -e openssh-server
  4. 安装SSH服务。

    安装完成后,建议手动将必要的自定义配置从备份文件迁移到新的默认配置文件中。

    sudo yum install openssh-server
  5. 启动SSH服务。

    sudo systemctl start sshd
  6. 验证服务状态。

    若返回信息包含active (running),说明服务启动成功。

    sudo systemctl status sshd