使用SSH客户端登录Linux实例时,提示“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/messages查看日志,出现类似如下错误信息。

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主机密钥。常见密钥文件异常情况如下:

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

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

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

解决方案

您可以通过重新生成SSH主机密钥文件解决该问题。

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

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

  2. 重新生成主机密钥文件。

    sudo rm -f /etc/ssh/ssh_host_*
    sudo /usr/bin/ssh-keygen -A
    sudo chmod 600 /etc/ssh/ssh_host_*
    sudo chmod 644 /etc/ssh/*.pub
  3. 执行如下命令,确认已生成密钥相关文件。

    ls -l /etc/ssh

    image

  4. 重启SSH服务。

    sudo systemctl restart sshd.service 

后续操作

在设置新的主机密钥后,使用SSH命令连接实例时,提示如下报错,这是由于您在本机保存了旧的主机密钥指纹锁导致的,修复该问题,请参见使用SSH远程连接Linux系统的ECS实例时,提示“Host key verification failed”错误怎么办

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
ae:6e:68:4c:97:a6:91:81:11:38:8d:64:ff:92:13:50.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:70
RSA host key for x.x.x.x has changed and you have requested strict checking.
Host key verification failed.