全部產品
Search
文件中心

Elastic Compute Service:使用RSA密鑰無法登入ECS執行個體問題

更新時間:Feb 28, 2024

當您使用Ubuntu、CentOS Stream 9等作業系統的ECS執行個體,且通過RSA密鑰在FinalShell、nuoshell等部分SSH用戶端串連ECS執行個體時,可能出現登入失敗的問題,您可以參考本文的操作進行解決。

背景資訊

RSA密碼編譯演算法是一種非對稱式加密演算法,在公開祕密金鑰加密和電子商業中RSA被廣泛使用。 非對稱式加密演算法包含公開金鑰(Public Key)和私密金鑰(Private Key),公開金鑰和私密金鑰是一種通過演算法得到的金鑰組,在ECS中建立的金鑰組預設採用RSA加密方式。更多資訊,請參見SSH金鑰組概述

Ubuntu 22.04無法使用RSA密鑰登入

在SSH協議中,ssh-rsa簽名演算法是SHA1的雜湊演算法和RSA公開金鑰演算法的結合使用。由於目前SHA1的雜湊演算法容易受到攻擊,OpenSSH從8.7以後版本開始預設不支援ssh-rsa簽名方案。

說明

預設不支援ssh-rsa簽名方案並不意味著停止使用RSA密鑰,密鑰可以通過多種演算法進行簽名,RSA密鑰可以使用rsa-sha2-256(rsa/SHA256)、rsa-sha2-512(rsa/SHA512)等多種簽名演算法來進行簽名,只有ssh-rsa(rsa/SHA1)簽名演算法被預設禁用。

問題現象

使用FinalShell、nuoshell等部分SSH用戶端軟體通過RSA密鑰遠端連線ECS執行個體時,SSH用戶端提示登入失敗,sshd服務日誌提示如下:

userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth] 

問題原因

在最新版本的作業系統中,OpenSSH預設不再支援ssh-rsa(rsa/SHA1)簽名演算法,如果指定使用ssh-rsa(rsa/SHA1)簽名演算法將會登入失敗。由於FinalShell、nuoshell等部分SSH用戶端軟體預設僅支援使用ssh-rsa(rsa/SHA1)簽名演算法,不能相容使用rsa-sha2-256(rsa/SHA256)或者rsa-sha2-512(rsa/SHA512),所以無法登入。

解決方案

您可以通過以下任一種方案解決該問題:

  • 方案一:使用ECDSA或者DSA等其他加密方式。

  • 方案二:使用其他SSH用戶端進行登入,例如阿里雲內建的Workbench。關於Workbench串連方式的更多資訊,請參見使用Workbench串連執行個體

  • 方案三:運行以下命令,在sshd配置中允許使用ssh-rsa(rsa/SHA1)的簽名演算法。

    重要

    由於ssh-rsa(rsa/SHA1)簽名演算法並不安全,請您謹慎操作。

    echo 'PubkeyAcceptedAlgorithms=+ssh-rsa' >> /etc/ssh/sshd_config
    systemctl restart sshd

CentOS Stream 9等系統無法使用RSA密鑰登入

涉及系統範圍

  • CentOS Stream 9

  • AlmaLinux 9

  • Rocky Linux 9

  • Red Hat Enterprise Linux 9

  • Fedora 33及以上

問題現象

使用FinalShell、nuoshell等部分SSH用戶端軟體通過RSA密鑰遠端連線ECS執行個體時,SSH用戶端提示登入失敗,sshd服務日誌提示:

userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

問題原因

CentOS Stream 9系列系統在OS內部的crypto-policies策略預設為DEFAULT,在該策略模式下openssh-server禁用了ssh-rsa(rsa/SHA1)簽名演算法。由於FinalShell、nuoshell等部分SSH用戶端軟體預設僅支援使用ssh-rsa(rsa/SHA1)簽名演算法,不能相容使用rsa-sha2-256(rsa/SHA256)或者rsa-sha2-512(rsa/SHA512),所以無法登入。

說明

您可以通過update-crypto-policies --show命令查看當前系統的策略。

解決方案

您可以通過以下任一種方案解決該問題:

  • 方案一:使用ECDSA或者DSA等其他加密方式。

  • 方案二:使用其他SSH用戶端進行登入,例如阿里雲內建的Workbench。關於Workbench串連方式的更多資訊,請參見串連方式概述

  • 方案三:運行以下命令,切換策略為LEGACY。

    重要

    LEGACY策略模式可能存在未知安全隱患,請您謹慎操作。

    update-crypto-policies --set LEGACY
    update-crypto-policies --show