Linux系统的ECS实例中,启动SSH服务时提示“fatal: Cannot bind any address”错误怎么办?

本文介绍在Linux系统的ECS实例中,启动SSH服务时提示“fatal: Cannot bind any address”错误的原因和解决方案。

问题现象

在Linux系统的ECS实例中启动SSH服务时,命令行或Secure日志出现类似如下错误信息。

FAILED.
fatal: Cannot bind any address.
address family must be specified before ListenAddress.

问题原因

该问题可能是因为ECS实例中SSH服务的配置文件/etc/ssh/sshd_config中AddressFamily配置为inet6,但ECS实例没有启用IPv6或IPv6协议配置错误,导致出现该问题。

解决方案

  1. 以VNC方式远程连接ECS实例。

    具体操作,请参见通过密码认证登录Linux实例

  2. 执行如下命令,查看/etc/ssh/sshd_config配置文件。

    cat /etc/ssh/sshd_config

    当返回信息包含如下内容时,说明配置了IPv6协议族。

    AddressFamily inet6
    说明

    AddressFamily参数值说明如下。

    • inet:使用IPv4协议族,为默认值。

    • inet6:使用IPv6协议族。

    • any:同时启用IPv4和IPv6协议族。

  3. 修改AddressFamily参数值。

    重要

    修改时,请确保AddressFamily参数在ListenAddress之前配置,方能生效。

    1. 执行如下命令,打开/etc/ssh/sshd_config配置文件。

      vim /etc/ssh/sshd_config
    2. i键进入编辑模式。

    3. 将AddressFamily设置为inet,或在AddressFamily前加#注释该配置,如下所示。

      # AddressFamily inet6  #注释该配置
      AddressFamily inet4    #使用IPv4协议簇
    4. 按下Esc键后,输入:wq并按Enter键以保存关闭配置文件。

  4. 执行以下命令,重启SSH服务。

    systemctl restart sshd.service