管理SSH密鑰對
在通過SSH遠程連接Linux實例時,您可以通過密鑰對認證身份,在不輸入密碼的情況下進行身份驗證,實現免密登錄。
SSH密鑰對概述
什么是SSH密鑰對
SSH密鑰對是通過SSH連接實例的一種憑證。一對SSH密鑰對由公鑰和私鑰兩部分組成,公鑰可以公開,存儲在實例內,私鑰需保密并由您自行保管。密鑰對必須成對使用,公鑰負責加密數據,私鑰負責解密數據,由公鑰加密的數據僅能通過私鑰解密。
使用SSH密鑰對認證的優勢
安全可靠
SSH密鑰對安全強度遠高于常規用戶密碼,且從公鑰逆向推出私鑰的難度極高,可以杜絕暴力破解威脅。
便捷
通過使用SSH密鑰對,可以實現免密登錄,直接使用私鑰通過SSH命令或相關工具登錄目標實例。
支持登錄多臺Linux實例,更加方便地管理您的實例。如果您需要批量維護多臺Linux實例,推薦使用這種方式登錄。
SSH密鑰對如何工作
簡化后的SSH密鑰對認證流程如圖所示。在客戶端發起登錄請求后,服務端會通過公鑰加密一個隨機字符串,客戶端通過私鑰解密該字符串返回給服務端,通過對比兩個字符串是否一致來認證身份。
管理密鑰對
進入密鑰對管理頁(查看所有密鑰對)
通過控制臺
如圖所示,密鑰對的管理操作集中在密鑰對的管理頁面,您可以通過以下步驟進入密鑰對的管理頁。在該頁面,你可以看到當前地域下所有的密鑰對的信息并對密鑰對進行管理操作。
登錄ECS管理控制臺。
在左側導航欄,選擇 。
在頁面左側頂部,選擇目標資源所在的資源組和地域。
相關API
您可以調用
DescribeKeyPairs
接口查詢指定地域下所有的密鑰對,相關API說明,請參見DescribeKeyPairs - 查詢一個或多個密鑰對。
創建密鑰對
在控制臺創建密鑰對
重要創建密鑰對后,系統將自動下載私鑰,請您妥善保管。阿里云僅會保存您的公鑰,不會保存您的私鑰。使用密鑰對綁定ECS實例后,如果沒有私鑰,您將無法登錄該ECS實例。
您在一個地域最多可以擁有500個密鑰對。
您可以在阿里云控制臺,自動創建密鑰對,具體操作步驟如下。
在密鑰對管理頁,單擊創建密鑰對。
在創建密鑰對對話框中,完成配置,配置項說明如下。
完成配置后,單擊確定。
密鑰對創建成功后,瀏覽器自動下載私鑰文件(密鑰對名稱.pem)到本地電腦。
相關API
您可以調用
CreateKeyPair
接口創建密鑰對,相關API說明,請參見CreateKeyPair - 創建一對SSH密鑰對。
查看公鑰信息
如果您需要查看創建公鑰的信息,您可以參考以下方式,通過私鑰獲取公鑰。
本地為Linux或Mac系統
運行ssh-keygen
命令,并指定.pem
文件的路徑。
/path_to_key_pair/my-key-pair.pem為您私鑰文件的路徑
ssh-keygen -y -f /path_to_key_pair/my-key-pair.pem
返回公鑰信息,類似如下所示:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA****+GF9q7rhc6vYrExwT4WU4fsaRcVXGV2Mg9RHex21hl1au77GkmnIgukBZjywlQOT4GDdsJy2nBOdJPrCEBIPxxxxxxxxxx/fctNuKjcmMMOA8YUT+sJKn3l7rCLkesE+S5880yNdRjBiiUy40kyr7Y+fqGVdSOHGMXZQPpkBtojcxxxxxxxxxxx/htEqGa/Jq4fH7bR6CYQ2XgH/hCap29Mdi/G5Tx1nbUKuIHdMWOPvjxxxxxxxxxx+lHtTGiAIRG1riyNRVC47ZEVCxxxxxx
如果該命令失敗,請運行chmod 400 my-key-pair.pem
命令更改權限,確保只有您能查看該文件。
本地為Windows操作系統
完成以下操作,查看公鑰信息:
啟動PuTTYgen。
單擊Load。
選擇
.ppk
或.pem
文件。PuTTYgen會顯示公鑰信息。
在已綁定密鑰對的實例查看
遠程連接Linux實例。
具體操作,請參見通過密碼或密鑰認證登錄Linux實例。
執行以下命令,查看SSH密鑰對的公鑰信息。
sudo cat ~/.ssh/authorized_keys
說明公鑰內容放在
~/.ssh/authorized_keys
文件內。在實例內打開該文件,會返回公鑰信息。
導入密鑰對(公鑰)
待導入密鑰對支持的加密方式
導入阿里云的公鑰必須使用
Base64
編碼,且必須支持下列加密方式中的一種:rsa
dsa
ssh-rsa
ssh-dss
ecdsa
ssh-rsa-cert-v00@openssh.com
ssh-dss-cert-v00@openssh.com
ssh-rsa-cert-v01@openssh.com
ssh-dss-cert-v01@openssh.com
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521-cert-v01@openssh.com
在控制臺導入密鑰對
您可以在阿里云控制臺,自動創建密鑰對,具體操作步驟如下。
相關API
您可以調用
ImportKeyPair
接口,導入已有密鑰對(公鑰),相關API說明,請參見ImportKeyPair - 導入RSA密鑰對公鑰。
綁定密鑰對
您可以在創建實例時指定SSH密鑰對,也可以在創建實例后綁定SSH密鑰對,以滿足您安全地進行遠程服務器訪問、多用戶訪問管理以及自動化和批量操作等需求。
注意事項
只能為初始用戶綁定:在為ECS實例綁定密鑰對時,僅支持綁定實例的初始登錄用戶的密鑰對,實例初始登錄用戶是您在創建實例時選擇的登錄用戶,如需為其他用戶綁定密鑰對,請參見手動綁定密鑰對實現SSH免密登錄。
綁定后需重啟實例:通過該方式綁定密鑰對后,需要重啟ECS實例才能生效,如果重啟實例會對您現有實例造成影響,可以手動綁定密鑰對,具體操作,請參見手動綁定密鑰對實現SSH免密登錄。
在控制臺操作時,一臺ECS實例只能綁定一個SSH密鑰對,但是同一個密鑰對可用于多臺ECS實例。如果ECS實例已經綁定了SSH密鑰對,綁定新密鑰對后,新密鑰會自動替換原有的密鑰。
會切換登錄方式,如果ECS實例原先使用密碼認證,綁定密鑰對后,會關閉SSH的密碼登錄功能。
在控制臺綁定密鑰對
在阿里云控制臺為實例綁定密鑰對的方式如下。
在密鑰對管理頁,找到需要操作的密鑰對,在操作列中,單擊綁定密鑰對。
在選擇ECS實例欄中,選中需要綁定該密鑰對的ECS實例名稱,單擊>圖標,將其移入已選擇欄中。單擊下一步。
說明SSH密鑰對僅支持Linux實例,如果是Windows實例,此處無法選中。
根據界面提示,選擇重啟實例的方式,或者等待合適的時機重啟實例,重啟實例后,新的密鑰對可以生效。
相關API
您可以調用
AttachKeyPair
接口,為Linux實例綁定密鑰對,相關API說明,請參見AttachKeyPair - 綁定SSH密鑰對到Linux實例。
解綁密鑰對
如果您不再需要已綁定的密鑰對,例如使用了多個過期或不再需要的SSH密鑰對、定期進行密鑰輪換或某個用戶不再需要訪問特定實例,您可以解綁SSH密鑰對,以提高實例的安全性或限制訪問權限。
通過該方式解綁密鑰對后,需要重啟ECS實例,如果不能接受重啟實例,請手動解綁密鑰對,具體操作,請參見手動綁定密鑰對實現SSH免密登錄。
控制臺操作
在阿里云控制臺為實例綁定密鑰對的方式如下。
在密鑰對管理頁,找到需要操作的密鑰對,在操作列中,單擊解綁密鑰對。
在選擇ECS實例欄中,選中需要解綁該密鑰對的ECS實例名稱,單擊>圖標,將其移入已選擇欄中。單擊下一步。
根據界面提示,選擇重啟實例的方式,或者等待合適的時機重啟實例,重啟實例后密鑰對與實例解除綁定。
相關API
您可以調用
DetachKeyPair
接口,為Linux實例解綁密鑰對,相關API說明,請參見DetachKeyPair - 為Linux實例解綁 SSH 密鑰對。
刪除密鑰對
當待刪除的密鑰對存在已綁定的實例時,不支持刪除操作。
控制臺
在阿里云控制臺刪除密鑰對的步驟如下。
在密鑰對管理頁,找到需要操作的密鑰對,在操作列中,單擊刪除。
根據界面提示完成刪除操作。
相關API
您可以調用
DeleteKeyPairs
接口,刪除密鑰對,相關API說明,請參見DeleteKeyPairs - 刪除一對或者多對SSH密鑰對。