精品軟體與實用教程
如何解決“所選的用戶秘鑰未在遠端主機上註冊”
在使用Xshell進行遠端登入AWS的伺服器時,會遇到“所選的使用者秘鑰未在遠端主機上註冊” 的錯誤,基本上每個新手都會遇到相同的錯誤,那麼到底是什麼造成SSH連接時的“所選的用戶秘鑰未在遠端主機上註冊” 錯誤呢?下面具體分析一下造成錯誤的原因。
Xshell工具是比較流行的SSH遠端工具之一,和putty相比,功能強大且支援openssh。
在創建好EC2伺服器後,使用SSH進行連接,連接時會遇到SSH安全警告。
請驗證主機密鑰。
xxx的主機密鑰與本地主機密鑰資料庫中保存的不一致。主機密鑰已更改或有人試圖監聽此連線。若無法確定建議取消此連線。
到這一步有點懵,是AWS給產生的金鑰問題,還是使用Xshell進行SSH連線造成的問題?下一面一步一步排查錯誤出在哪裡。
第一步:首先看一下,是否是使用者名稱錯誤,AWS有一個小坑,就是每個類型的伺服器,預設的使用者名稱居然不同,不像Google Cloud那樣都是預設的root,下面看一下AWS各種Linux實例的使用者名稱。
亞馬遜EC2 Linux實例的預設使用者名稱是什麼(用於SSH、PuTTY等)
EC2/AWS伺服器上Linux執行個體(Ubuntu, Debian, Fedora, Amazon Linux等)的預設使用者名
- Amazon Linux 2023/Amazon Linux 2/Amazon Linux ec2-user
- CentOS centos or ec2-user
- Debian admin
- Fedora fedora or ec2-user
- RHEL ec2-user or root
- SUSE ec2-user or root
- Ubuntu ubuntu
- Oracle ec2-user
- Bitnami bitnami
測試機安裝的RHEL系統,預設的使用者名稱是ec2-user或是root,在遠端連線時,將兩個使用者名稱都嘗試了一下,依舊無法連線。
AWS官方的說明頁面:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html
第二步:確認了不是使用者名稱的問題,那麼接下來看看是否是金鑰上出了問題。
官方文件中給出了使用密鑰進行遠端連接的說明。
您必須知道私鑰檔案的位置才能連接到您的實例。對於SSH 連接,您必須設定權限,以便只有您可以讀取該檔案。
有關使用Amazon EC2 時金鑰對如何運作的信息,請參閱Amazon EC2 金鑰對和Linux 執行個體。
找到私鑰
.pem取得您在啟動執行個體時指定的金鑰對的檔案在電腦上位置的完全限定路徑。有關更多信息,請參閱識別啟動時指定的公鑰。如果您找不到私鑰文件,請參閱我丟失了私鑰。如何連線到我的Linux 實例?
如果您使用Putty 連接到實例並需要將檔案轉換.pem為.ppk,請參閱本節的使用PuTTY 從Windows 連線到Linux 實例主題中的使用PuTTYgen 轉換私鑰。
設定您的私鑰的權限,以便只有您可以讀取它
從 macOS 或Linux 連接
如果您打算在macOS 或Linux 電腦上使用SSH 用戶端連線Linux 實例,請使用下列命令設定私鑰檔案的權限,以便只有您可以讀取它。
chmod 400 key-pair-name.pem
如果您不設定這些權限,則無法使用此金鑰對連線到您的執行個體。有關詳細信息,請參閱錯誤:私鑰文件不受保護。從Windows 連接
開啟檔案總管並右鍵點選該.pem檔案。選擇“屬性” > “安全性”選項卡,然後選擇“進階”。選擇禁用繼承。刪除除目前使用者之外的所有使用者的存取權限。
嘗試在Windows進行遠端連線時候,修改私鑰的屬性。
修改完屬性後,使用密鑰依舊無法連線。
第三步:SSH遠端連線工具Xshell 6是否版本過低,導致無法進行SSH連線。
因為之前電腦裡一直都是使用Xshell 6來管理伺服器,導致很長一段時間沒有進行Xshell 更新,接下來將Xshell 6更新到Xshell 7後,再嘗試連線。
連結成功!
折騰一大圈,原來是Xshell版本過低的問題。
最後總結一下,遠端連線AWS EC2時,如果無法連接伺服器,大概率的原因是你沒有正確輸入用戶名,例如預設輸入root
另外一個原因就是SSH的軟體版本過低。升級Xshell。
如果你還沒有免費的亞馬遜雲伺服器AWS EC2的話,可以免費註冊。
免費申請12個月AWS 亞馬遜雲端伺服器amazon cloud 亞馬遜雲端最新教程
AWS中國官網: https://aws.amazon.com/cn/
亞馬遜雲端科技官網: https://www.amazonaws.cn/