本文介紹如何使用ali-instance-cli的子命令send_public_key註冊公開金鑰並免密登入執行個體。
前提條件
目標執行個體必須為Linux系統,並且需要串連的目標執行個體中已安裝雲助手Agent,Linux用戶端版本大於等於2.2.3.256。具體操作,請參見安裝雲助手Agent和升級或禁止升級雲助手Agent。
目標執行個體所在帳號已開啟會話管理功能,具體操作,請參見通過會話管理串連執行個體。
背景資訊
使用ali-instance-cli子命令send_public_key,可以將SSH公開金鑰發送到目標執行個體內部供指定使用者使用,密鑰保留60s。在60s內,您可以通過SSH公開金鑰登入的方式進入執行個體,無需輸入密碼。
會話管理用戶端支援Linux、macOS和Windows作業系統,不同作業系統使用方式不同,具體說明如下:
Linux或macOS作業系統
本文操作以test使用者為例,具體操作以您實際操作的使用者和使用者目錄為準。
登入工作階段管理用戶端。
在會話管理用戶端安裝ali-instance-cli。
不同作業系統的用戶端安裝方式不同,具體說明如下:
Linux
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/linux/ali-instance-cli chmod a+x ali-instance-cli
macOS:
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/mac/ali-instance-cli chmod a+x ali-instance-cli
可選:建立
config
檔案並添加相關配置。使用instance_id登入到目錄執行個體時,需執行該步驟。
在目前使用者目錄下建立
.ssh
目錄,本文以/home/test為例。mkdir .ssh
切換到
.ssh
目錄下。cd .ssh
建立並開啟
config
檔案。vim config
按
i
進入編輯模式。在
config
檔案中添加如下內容。說明ali-instance-cli需要替換成檔案的絕對路徑,例如
/home/test/ali-instance-cli
。host i-* ProxyCommand sh -c "ali-instance-cli ssh -i '%h' --port '%p'"
按
Esc
鍵,退出編輯模式。輸入
:wq
,並按Enter
鍵,儲存並退出。為
config
檔案添加執行許可權。chmod 755 config
配置AccessKey、STS Token。
關於如何擷取AccessKey或STS Token,請參見建立AccessKey和什麼是STS。
切換到test目錄。
cd /home/test
配置鑒權認證方式。
支援以下兩種配置方式:
AccessKey配置方式
執行如下命令,根據介面提示,輸入AccessKey ID、AccessKey Secret、RegionID。
./ali-instance-cli configure --mode AK
STS Token配置方式
說明region、ak、sk、token要修改為實際的Region ID、AccessKey ID、AccessKey Secret和STS Token。
./ali-instance-cli configure set --mode StsToken --region "region" --access-key-id "ak" --access-key-secret "sk" --sts-token "token"
當回顯如下圖所示時,說明鑒權方式已配置完成。
在會話管理用戶端,執行如下命令,產生RSA類型的公開金鑰與密鑰檔案。
ssh-keygen -t rsa
根據介面提示,按Enter,當介面顯示如下所示時,說明公開金鑰與密鑰檔案已產生。
說明產生的公開金鑰路徑預設為~/.ssh/id_rsa.pub。
在會話管理用戶端中,發送SSH公開金鑰到目標執行個體中。
./ali-instance-cli send_public_key --instance <instance-id> --public-key "<本地公開金鑰檔案的內容或者檔案路徑>" --user-name testuser
說明--user-name參數指定公開金鑰的使用者名稱,以上命令中testuser僅為樣本。如果不指定預設為root。指定的使用者名稱需要確保在目標執行個體上已經存在。
運行SSH命令免密登入目標執行個體。
支援以下兩種方式登入目標執行個體:
通過公網IP地址免密登入到目標執行個體。
ssh -i ~/.ssh/id_rsa testuser@instance_ip
說明使用過程中,請將~/.ssh/id_rsa修改成實際的密鑰路徑;instance_ip修改成您遠程登入目標執行個體的IP地址;testuser修改成您遠程登入的使用者名稱。
使用instance_id免密登入到目標執行個體。
ssh -i ~/.ssh/id_rsa testuser@instance_id
說明使用過程中,請將~/.ssh/id_rsa修改成實際的密鑰路徑;instance_id修改成您遠程登入目標執行個體ID;testuser修改成您遠程登入的使用者名稱。
當回顯如下圖所示時,說明已經通過Session Manager轉寄SSH方式串連到目標執行個體。
Windows作業系統
使用會話管理用戶端的Windows作業系統已安裝OpenSSH,具體操作,請參見使用雲助手在Windows執行個體中安裝OpenSSH程式。
本文操作以test使用者為例,具體操作以您實際操作的使用者和使用者目錄為準。
登入工作階段管理用戶端。
在會話管理用戶端下載安裝ali-instance-cli。
不同作業系統的用戶端安裝方式不同,具體說明如下:
使用OpenSSH用戶端下載。
Invoke-WebRequest -Uri "https://aliyun-client-assist.oss-cn-beijing.aliyuncs.com/session-manager/windows/ali-instance-cli.exe" -OutFile <destination>
說明<destination>請修改成實際的本地路徑。
使用瀏覽器下載。
下載Windows版ali-instance-cli並儲存到本地檔案夾中,如
C:\Users\test
。
可選:建立
config
檔案並添加相關配置。使用instance_id登入到目錄執行個體時,執行該步驟。
在C:\Users\username下建立
.ssh
檔案夾。說明C:\Users\username需替換成實際的檔案夾,如
C:\Users\test
。在案頭左下角單擊表徵圖,然後在搜尋方塊輸入
Windows PowerShell
。單擊Windows PowerShell。
在C:\Users\username下,執行
mkdir .ssh
命令,建立.ssh
檔案夾。
在
.ssh
檔案夾下建立config
檔案。重要config
檔案名稱中不能含有副檔名。在
config
檔案中添加如下內容。ali-instance-cli.exe需要替換成檔案的絕對路徑,例如
C:\Users\test\ali-instance-cli.exe
。host i-* ProxyCommand C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "ali-instance-cli.exe ssh -i '%h' --port '%p'"
配置AccessKey或STS Token。
關於如何擷取AccessKey或STS Token,請參見建立AccessKey和什麼是STS。
選擇
,輸入cmd,按Enter
鍵,開啟命令提示字元視窗。切換到test目錄。
cd C:\Users\test
配置鑒權認證方式。
支援以下兩種配置方式:
AccessKey配置方式
執行如下命令,根據介面提示,輸入AccessKey ID、AccessKey Secret、RegionID。
.\ali-instance-cli.exe configure --mode AK
STS Token配置方式
說明region、ak、sk、token要修改為實際的Region ID、AccessKey ID、AccessKey Secret和STS Token。
.\ali-instance-cli.exe configure set --mode StsToken --region "region" --access-key-id "ak" --access-key-secret "sk" --sts-token "token"
當回顯如下圖所示時,說明鑒權方式已配置完成。
在會話管理用戶端,執行如下命令,產生RSA類型的公開金鑰與密鑰檔案。
ssh-keygen -t rsa
根據介面提示,按Enter,當介面顯示如下所示時,說明公開金鑰與密鑰檔案已產生。
說明產生的公開金鑰路徑預設為C:\Users\Administrator/.ssh/id_rsa.pub。
在會話管理用戶端中,發送SSH公開金鑰到目標執行個體中。
.\ali-instance-cli.exe send_public_key --instance <instance-id> --public-key "<本地公開金鑰檔案的內容或者檔案路徑>" --user-name testuser
說明--user-name參數指定公開金鑰的使用者名稱,以上命令中testuser僅為樣本。如果不指定預設為root。指定的使用者名稱需要確保在目標執行個體上已經存在。
運行SSH命令免密登入目標執行個體。
通過公網IP免密登入到目標執行個體。
ssh -i ~/.ssh/id_rsa testuser@instance_ip
說明使用過程中,請將~/.ssh/id_rsa修改成實際的密鑰路徑;instance_ip修改成您遠程登入目標執行個體的IP;testuser修改成您遠程登入的使用者名稱。
使用instance_id免密登入到目標執行個體。
ssh -i ~/.ssh/id_rsa testuser@instance_id
說明使用過程中,請將~/.ssh/id_rsa修改成實際的密鑰路徑;instance_id修改成您遠程登入目標執行個體ID;testuser修改成您遠程登入的使用者名稱。
當回顯如下圖所示時,說明已經通過Session Manager轉寄SSH方式串連到目標執行個體。
常見問題
為什麼免密登入時提示輸入密碼?
公開金鑰註冊完成之後,有效期間為60s,請確認您的公開金鑰是否已經到期。