SSH服务的公私钥异常导致无法SSH登录Linux实例

免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。

 

问题描述

无法通过SSH登录系统。查看日志文件/var/log/auth.log,可能显示如下几种错误信息。

  • 错误信息一如下所示,由于key格式无效导致无法加载密钥。

    May 21 12:03:46 debug sshd[1470]: error: key_load_public: invalid format
    May 21 12:03:46 debug sshd[1470]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key
    May 21 12:03:46 debug sshd[1470]: error: key_load_public: invalid format
    May 21 12:03:46 debug sshd[1470]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key
    May 21 12:03:46 debug sshd[1470]: error: key_load_public: invalid format
    May 21 12:03:46 debug sshd[1470]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
    May 21 12:03:46 debug sshd[1470]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    May 21 12:03:46 debug sshd[1470]: fatal: No supported key exchange algorithms [preauth]
  • 错误信息二如下所示,系统仅显示无法加载密钥。

    May 21 10:55:25 debug sshd[1337]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key
    May 21 10:55:25 debug sshd[1337]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key
    May 21 10:55:25 debug sshd[1337]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
    May 21 10:55:25 debug sshd[1337]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
    May 21 10:55:25 debug sshd[1337]: fatal: No supported key exchange algorithms [preauth]

 

问题原因

由于SSH服务的公私钥异常导致无法通过SSH登录Linux实例。

 

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
  1. 执行如下命令,查看SSH服务的公钥与密钥文件。
    ls -l /etc/ssh
    如果系统显示如下信息,说明公钥与密钥文件丢失。
  2. 如果系统显示如下信息,说明公钥与密钥文件异常。

  3. 执行如下命令,生成RSA类型的公钥与密钥文件。

    ssh-keygen -t rsa

    系统显示类似如下。

    填入RSA私钥的路径后回车,系统显示类似如下。

    注:RSA私钥的路径请在配置文件/etc/ssh/sshd_config里查询。

  4. 执行如下命令,生成DSA类型的公钥与密钥文件。

    ssh-keygen -t dsa
  5. 执行如下命令,生成ECDSA类型的公钥与密钥文件。

    ssh-keygen -t ecdsa
  6. 重启SSH服务后,正常登录Linux系统。

 

适用于

  • 云服务器ECS