當您使用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簽名演算法是SHA-1的雜湊演算法和RSA公開金鑰演算法的結合使用。由於目前SHA-1的雜湊演算法容易受到攻擊,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串連方式的更多資訊,請參見ECS遠端連線方式概述。
方案三:運行以下命令,切換策略為LEGACY。
重要LEGACY策略模式可能存在未知安全隱患,請您謹慎操作。
update-crypto-policies --set LEGACY update-crypto-policies --show