无法远程连接Linux系统的ECS实例,提示“error: Unable to load host key: /etc/ssh/ssh_host_rsa_key”错误怎么办?

本文主要介绍远程连接Linux系统的ECS实例,提示“error: Unable to load host key: /etc/ssh/ssh_host_rsa_key”错误的原因和解决方案。

问题现象

使用SSH方式无法连接Linux系统的ECS实例,通过VNC登录实例后,执行cat var/log/securecat var/log/message查看securemessage日志,出现类似如下错误信息。

error: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
error: @ WARNING: UNPROTECTED PRIVATE KEY FILE! @
error: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
error: Permissions 0777 for '/etc/ssh/ssh_host_rsa_key' are too open.
error: It is required that your private key files are NOT accessible by others.
error: This private key will be ignored.
error: Unable to load host key "/etc/ssh/ssh_host_rsa_key": bad permissions
 error: Unable to load host key: /etc/ssh/ssh_host_rsa_key
error: Unable to load host key "/etc/ssh/ssh_host_rsa_key": invalid format
error: Unable to load host key "/etc/ssh/ssh_host_rsa_key": invalid format
error: Unable to load host key: /etc/ssh/ssh_host_rsa_key
error: Unable to load host key "/etc/ssh/ssh_host_ecdsa_key": invalid format
error: Unable to load host key "/etc/ssh/ssh_host_ecdsa_key": invalid format
error: Unable to load host key: /etc/ssh/ssh_host_ecdsa_key

问题原因

该问题可能的由于ECS实例中SSH服务相关的密钥文件异常,导致sshd守护进程不能加载到正确的SSH密钥。常见密钥文件异常情况如下:

  • 相关密钥文件权限配置异常,导致无法正常读取。

    例如,私钥文件默认权限是600,如果配置成777等其他权限,导致其他用户也有读取或修改权限。此时,SSH服务会认为该配置存在安全风险,导致连接失败。

  • 相关密钥文件异常,例如文件损坏、被删除或篡改等。

解决方案

您可以通过修改SSH服务相关的密钥权限或修复密钥文件来解决此问题。

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

    具体操作,请参见连接方式概述

  2. 执行如下命令,查看SSH服务的公钥与密钥文件。

    ls -l /etc/ssh
    • 如果系统显示如下信息,说明公钥与密钥文件丢失,请执行步骤4

      密钥文件丢失
    • 如果系统显示如下信息,公钥与密钥文件权限为777,并且文件大小为0,说明文件存在异常,请执行步骤3

      说明

      权限异常并非是777时才是异常,当权限超过默认权限时,都会出现报错。

      查看密钥权限
  3. 执行如下命令,恢复相关密钥文件的默认权限。

    说明

    不同Linux发行版本中,密钥权限可能不同,你可以参考相同Linux发行版本中密钥权限进行修改。

    cd /etc/ssh/
    sudo chmod 600 ssh_host_*
    sudo chmod 644 *.pub
  4. 执行如下命令,重启SSH服务。

    重启SSH服务时,将会自动生成相关密钥文件。

    sudo systemctl restart sshd.service 
  5. 执行如下命令,确认已生成密钥相关文件。

    ls -l /etc/ssh
    查看密钥