本文主要介紹遠端連線Linux系統的ECS執行個體,提示“error: Unable to load host key: /etc/ssh/ssh_host_rsa_key”錯誤的原因和解決方案。
問題現象
使用SSH方式無法串連Linux系統的ECS執行個體,通過VNC登入執行個體後,執行cat /var/log/secure或cat /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_keyerror: 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主機密鑰檔案解決該問題。
以VNC方式遠端連線ECS執行個體。
具體操作,請參見串連方式概述。
重建主機密鑰檔案。
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執行如下命令,確認已產生密鑰相關檔案。
ls -l /etc/ssh
重啟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.