如果您使用第三方SSH工具以金鑰組的方式認證登入Linux執行個體,您可以向執行個體中註冊有效期間60秒的臨時公開金鑰,然後在60秒之內使用私密金鑰登入執行個體,該方式相比永久金鑰組更加安全。本文為您介紹如何通過會話管理CLI(ali-instance-cli)向執行個體註冊臨時公開金鑰並免密登入。
什麼是臨時公開金鑰?
臨時公開金鑰認證是一種安全連線執行個體的方案,您可以不在執行個體中設定金鑰組,然後在每次通過SSH串連執行個體前,向執行個體中註冊一個有效期間60秒的臨時公開金鑰,然後通過與之對應的私密金鑰免密登入執行個體。
臨時公開金鑰儲存在雲助手服務端。
準備工作
開啟會話管理服務
檢查執行個體運行狀態是否為運行中
檢查執行個體雲助手Agent是否已安裝
準備用於使用會話管理的RAM使用者的憑證
1. 安裝&配置會話管理CLI
如果您已經安裝並配置完成會話管理CLI,可跳過本步驟。
1.1 安裝
首先需要在您的個人電腦中安裝會話管理CLI(ali-instance-cli),不同作業系統安裝方式不同,具體操作如下。
Windows
點擊下載Windows版ali-instance-cli,並儲存到本地檔案夾中。
本文以將ali-instance-cli.exe儲存在C:\Users\test
檔案夾中為例。
macOS
在macOS的終端中,輸入以下命令下載mac版ali-instance-cli。
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/mac/ali-instance-cli
下載完成後,輸入以下命令為ali-instance-cli賦予可執行許可權。
chmod a+x ali-instance-cli
Linux
輸入以下命令安裝Linux版ali-instance-cli。
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/linux/ali-instance-cli
下載完成後,輸入以下命令為ali-instance-cli賦予可執行許可權。
chmod a+x ali-instance-cli
1.2 配置
在您的個人電腦使用ali-instance-cli串連阿里雲執行個體時,需要配置相關身份憑證,即AccessKey,具體說明,請參見準備用於使用會話管理的RAM使用者的憑證。
Windows
選擇
,輸入cmd,按Enter
鍵,開啟命令提示字元視窗。切換到ali-instance-cli.exe所在目錄,本文以
C:\Users\test
為例。cd C:\Users\test
配置憑證。支援以下三種配置方式:
AccessKey
執行如下命令,並根據介面提示配置Access Key Id、Access Key Secret、Region Id。
ali-instance-cli.exe configure --mode AK
STS Token
執行以下命令完成配置操作:
ali-instance-cli.exe configure set --mode StsToken --region "<region>" --access-key-id "<ak>" --access-key-secret "<sk>" --sts-token "<sts_token>"
<region>
、<ak>
、<sk>
、<sts_token>
要修改為實際的Region ID、AccessKey ID、AccessKey Secret和STS Token
。CredentialsURI
執行如下命令,根據介面提示,輸入Credentials URI和Region Id。
ali-instance-cli.exe configure --mode=CredentialsURI
配置完成後,顯示如下內容證明配置完成。
macOS/Linux
進入ali-instance-cli所在目錄,本文以目前使用者根目錄
~
為例。cd ~
配置憑證。
AccessKey
執行如下命令,並根據介面提示配置Access Key Id、Access Key Secret、Region Id。
./ali-instance-cli configure --mode AK
STS Token
執行以下命令完成配置操作:
./ali-instance-cli configure set --mode StsToken --region "<region>" --access-key-id "<ak>" --access-key-secret "<sk>" --sts-token "<sts_token>"
<region>
、<ak>
、<sk>
、<sts_token>
要修改為實際的Region ID、AccessKey ID、AccessKey Secret和STS Token
。CredentialsURI
執行如下命令,根據介面提示,配置Credentials URI和Region Id。
./ali-instance-cli configure --mode=CredentialsURI
配置完成後,顯示如下內容證明配置完成。
2. 向目標執行個體中發送臨時公開金鑰
2.1 擷取待發送公開金鑰執行個體的ID
在操作前,需要先擷取待發送公開金鑰匙執行個體的ID,以供後續步驟使用。
控制台
|
阿里雲CLI
如果您已經配置好了阿里雲CLI,您可以通過以下命令擷取執行個體ID。具體參數說明,請參見DescribeInstances - 查詢執行個體的詳細資料列表。
以查詢杭州地區下名稱為SessionManager-example
的執行個體為例。
aliyun ecs DescribeInstances --region cn-hangzhou --RegionId 'cn-hangzhou' --InstanceName 'SessionManager-example'
返回結果中InstanceId
即執行個體ID。
API
通過API查詢執行個體ID,請參見DescribeInstances - 查詢執行個體的詳細資料列表。
2.2 產生金鑰組
在發送臨時公開金鑰前,您需要先在本地產生一對密鑰檔案,其中公開金鑰檔案將用作步驟2.3中的臨時公開金鑰。
本機為Windows
開啟命令提示字元,輸入以下命令並根據介面提示,產生金鑰組。
本樣本以通過OpenSSH用戶端在C:\Users\test
目錄下產生金鑰組為例。
ssh-keygen -t rsa -b 2048 -f id_rsa
-t rsa
:代表密鑰類型為rsa
金鑰組。-b 2048
:代表密鑰長度為2048位。-f id_rsa
:代表產生金鑰組的檔案名稱以及儲存位置。
執行這條命令後,系統會提示您輸入一個私密金鑰口令(passphrase),用於保護私密金鑰。設定私密金鑰口令後,即使私密金鑰被盜,攻擊者也需要私密金鑰口令才可以使用私密金鑰。
如果您不希望為私密金鑰設定私密金鑰口令,可以直接按斷行符號鍵跳過。
命令執行完成後,會在當前命令列所在目錄(本文以C:\Users\test
為例)下產生一對密鑰檔案:id_rsa.pub
(公開金鑰)、id_rsa
(私密金鑰)。
本機為macOS/Linux
開啟終端,輸入以下命令並根據介面提示,產生金鑰組。
本樣本以通過OpenSSH用戶端產生金鑰組為例。
ssh-keygen -t rsa -b 2048 -f id_rsa
-t rsa
:代表密鑰類型為rsa
金鑰組。-b 2048
:代表密鑰長度為2048位。-f id_rsa
:代表產生金鑰組的檔案名稱以及儲存位置。
執行這條命令後,系統會提示您輸入一個私密金鑰口令(passphrase),用於保護私密金鑰。設定私密金鑰口令後,即使私密金鑰被盜,攻擊者也需要私密金鑰口令才可以使用私密金鑰。
如果您不希望為私密金鑰設定私密金鑰口令,可以直接按斷行符號鍵跳過。
命令執行完成後,會在當前命令列所在目錄(本文以目前使用者根目錄~為例)下產生一對密鑰檔案:id_rsa.pub
(公開金鑰)、id_rsa
(私密金鑰)。
2.3 將公開金鑰發送到執行個體作為臨時公開金鑰
本機為Windows
開啟命令提示字元,進入ali-instance-cli.exe
工具所在目錄,輸入以下命令向目標執行個體發送臨時公開金鑰。
其中<instance_id>
為待發送公開金鑰的執行個體的ID,<public_key_path>
為步驟2.2中產生公開金鑰的檔案路徑,<ecs_username>
為與該公開金鑰對應的使用者登入名稱。
ali-instance-cli.exe send_public_key --instance <instance_id> --public-key <public_key_path> --user-name <ecs_username>
例如,向執行個體ID為i-bp1******
的執行個體的ecs-user
使用者註冊臨時公開金鑰,本地公開金鑰儲存路徑為C:\Users\test\id_rsa.pub
,可通過以下命令實現。
ali-instance-cli.exe send_public_key --instance i-bp1****** --public-key C:\Users\test\id_rsa.pub --user-name ecs-user
命令執行成功後請在60秒之內登入執行個體。
本機為macOS/Linux
開啟終端,進入ali-instance-cli
工具所在目錄,輸入以下命令向目標執行個體發送臨時公開金鑰。
其中<instance_id>
為待發送公開金鑰的執行個體的ID,<public_key_path>
為步驟2.2中產生公開金鑰的檔案路徑,<ecs_username>
為與該公開金鑰對應的使用者登入名稱。
./ali-instance-cli send_public_key --instance <instance_id> --public-key <public_key_path> --user-name <ecs_username>
例如,向執行個體ID為i-bp1******
的執行個體的ecs-user
使用者註冊臨時公開金鑰,本地公開金鑰儲存路徑為~/id_rsa.pub
,可通過以下命令實現。
./ali-instance-cli send_public_key --instance i-bp1****** --public-key ~/id_rsa.pub --user-name ecs-user
命令執行成功後請在60秒之內登入執行個體。
3. 以SSH的方式串連執行個體
如果在串連執行個體時提示輸入密碼或公開金鑰不正確,請確認您的公開金鑰是否已經到期。臨時公開金鑰有效期間為60s。
選擇合適的SSH工具串連執行個體,在本機命令提示字元或終端,輸入以下命令串連執行個體。
其中<private_key_path>
為步驟2.2中產生的私密金鑰檔案路徑,<ecs-username>
為執行個體登入名稱,對應步驟2.3中被設定臨時公開金鑰的使用者,<ecs_ip>
為您ECS執行個體的公網IP。
ssh -i <private_key_path> <ecs-username>@<ecs_ip>
例如,私密金鑰檔案路徑~/id_rsa
,登入名稱稱為ecs-user
,執行個體公網IP為223.***.***.187
可通過以下命令串連執行個體。
ssh -i ~/id_rsa ecs-user@223.***.***.187
此外,您也可以結合ali-instance-cli
工具的連接埠轉寄功能,實現登入無公網執行個體。具體操作,請參見通過會話管理CLI的連接埠轉寄訪問無公網執行個體。