通過ali-instance-cli注冊(cè)公鑰免密登錄實(shí)例
本文介紹如何使用ali-instance-cli的子命令send_public_key注冊(cè)公鑰并免密登錄實(shí)例。
前提條件
目標(biāo)實(shí)例必須為L(zhǎng)inux系統(tǒng),并且需要連接的目標(biāo)實(shí)例中已安裝云助手Agent,Linux客戶端版本大于等于2.2.3.256。具體操作,請(qǐng)參見安裝云助手Agent和升級(jí)或禁止升級(jí)云助手Agent。
目標(biāo)實(shí)例所在賬號(hào)已開啟會(huì)話管理功能,具體操作,請(qǐng)參見通過會(huì)話管理連接實(shí)例。
背景信息
使用ali-instance-cli子命令send_public_key,可以將SSH公鑰發(fā)送到目標(biāo)實(shí)例內(nèi)部供指定用戶使用,密鑰保留60s。在60s內(nèi),您可以通過SSH公鑰登錄的方式進(jìn)入實(shí)例,無需輸入密碼。
會(huì)話管理客戶端支持Linux、macOS和Windows操作系統(tǒng),不同操作系統(tǒng)使用方式不同,具體說明如下:
Linux或macOS操作系統(tǒng)
本文操作以test用戶為例,具體操作以您實(shí)際操作的用戶和用戶目錄為準(zhǔn)。
登錄會(huì)話管理客戶端。
在會(huì)話管理客戶端安裝ali-instance-cli。
不同操作系統(tǒng)的客戶端安裝方式不同,具體說明如下:
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
可選:創(chuàng)建
config
文件并添加相關(guān)配置。使用instance_id登錄到目錄實(shí)例時(shí),需執(zhí)行該步驟。
在當(dāng)前用戶目錄下創(chuàng)建
.ssh
目錄,本文以/home/test為例。mkdir .ssh
切換到
.ssh
目錄下。cd .ssh
創(chuàng)建并打開
config
文件。vim config
按
i
進(jìn)入編輯模式。在
config
文件中添加如下內(nèi)容。說明ali-instance-cli需要替換成文件的絕對(duì)路徑,例如
/home/test/ali-instance-cli
。host i-* ProxyCommand sh -c "ali-instance-cli ssh -i '%h' --port '%p'"
按
Esc
鍵,退出編輯模式。輸入
:wq
,并按Enter
鍵,保存并退出。為
config
文件添加執(zhí)行權(quán)限。chmod 755 config
配置AccessKey、STS Token。
關(guān)于如何獲取AccessKey或STS Token,請(qǐng)參見創(chuàng)建AccessKey和什么是STS。
切換到test目錄。
cd /home/test
配置鑒權(quán)認(rèn)證方式。
支持以下兩種配置方式:
AccessKey配置方式
執(zhí)行如下命令,根據(jù)界面提示,輸入AccessKey ID、AccessKey Secret、RegionID。
./ali-instance-cli configure --mode AK
STS Token配置方式
說明region、ak、sk、token要修改為實(shí)際的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"
當(dāng)回顯如下圖所示時(shí),說明鑒權(quán)方式已配置完成。
在會(huì)話管理客戶端,執(zhí)行如下命令,生成RSA類型的公鑰與密鑰文件。
ssh-keygen -t rsa
根據(jù)界面提示,按Enter,當(dāng)界面顯示如下所示時(shí),說明公鑰與密鑰文件已生成。
說明生成的公鑰路徑默認(rèn)為~/.ssh/id_rsa.pub。
在會(huì)話管理客戶端中,發(fā)送SSH公鑰到目標(biāo)實(shí)例中。
./ali-instance-cli send_public_key --instance <instance-id> --public-key "<本地公鑰文件的內(nèi)容或者文件路徑>" --user-name testuser
說明--user-name參數(shù)指定公鑰的用戶名,以上命令中testuser僅為示例。如果不指定默認(rèn)為root。指定的用戶名需要確保在目標(biāo)實(shí)例上已經(jīng)存在。
運(yùn)行SSH命令免密登錄目標(biāo)實(shí)例。
支持以下兩種方式登錄目標(biāo)實(shí)例:
通過公網(wǎng)IP地址免密登錄到目標(biāo)實(shí)例。
ssh -i ~/.ssh/id_rsa testuser@instance_ip
說明使用過程中,請(qǐng)將~/.ssh/id_rsa修改成實(shí)際的密鑰路徑;instance_ip修改成您遠(yuǎn)程登錄目標(biāo)實(shí)例的IP地址;testuser修改成您遠(yuǎn)程登錄的用戶名。
使用instance_id免密登錄到目標(biāo)實(shí)例。
ssh -i ~/.ssh/id_rsa testuser@instance_id
說明使用過程中,請(qǐng)將~/.ssh/id_rsa修改成實(shí)際的密鑰路徑;instance_id修改成您遠(yuǎn)程登錄目標(biāo)實(shí)例ID;testuser修改成您遠(yuǎn)程登錄的用戶名。
當(dāng)回顯如下圖所示時(shí),說明已經(jīng)通過Session Manager轉(zhuǎn)發(fā)SSH方式連接到目標(biāo)實(shí)例。
Windows操作系統(tǒng)
使用會(huì)話管理客戶端的Windows操作系統(tǒng)已安裝OpenSSH,具體操作,請(qǐng)參見使用云助手在Windows實(shí)例中安裝OpenSSH程序。
本文操作以test用戶為例,具體操作以您實(shí)際操作的用戶和用戶目錄為準(zhǔn)。
登錄會(huì)話管理客戶端。
在會(huì)話管理客戶端下載安裝ali-instance-cli。
不同操作系統(tǒng)的客戶端安裝方式不同,具體說明如下:
使用OpenSSH客戶端下載。
Invoke-WebRequest -Uri "https://aliyun-client-assist.oss-cn-beijing.aliyuncs.com/session-manager/windows/ali-instance-cli.exe" -OutFile <destination>
說明<destination>請(qǐng)修改成實(shí)際的本地路徑。
使用瀏覽器下載。
下載Windows版ali-instance-cli并保存到本地文件夾中,如
C:\Users\test
。
可選:創(chuàng)建
config
文件并添加相關(guān)配置。使用instance_id登錄到目錄實(shí)例時(shí),執(zhí)行該步驟。
在C:\Users\username下創(chuàng)建
.ssh
文件夾。說明C:\Users\username需替換成實(shí)際的文件夾,如
C:\Users\test
。在桌面左下角單擊圖標(biāo),然后在搜索框輸入
Windows PowerShell
。單擊Windows PowerShell。
在C:\Users\username下,執(zhí)行
mkdir .ssh
命令,創(chuàng)建.ssh
文件夾。
在
.ssh
文件夾下創(chuàng)建config
文件。重要config
文件名中不能含有擴(kuò)展名。在
config
文件中添加如下內(nèi)容。ali-instance-cli.exe需要替換成文件的絕對(duì)路徑,例如
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。
關(guān)于如何獲取AccessKey或STS Token,請(qǐng)參見創(chuàng)建AccessKey和什么是STS。
選擇
,輸入cmd,按Enter
鍵,打開命令提示符窗口。切換到test目錄。
cd C:\Users\test
配置鑒權(quán)認(rèn)證方式。
支持以下兩種配置方式:
AccessKey配置方式
執(zhí)行如下命令,根據(jù)界面提示,輸入AccessKey ID、AccessKey Secret、RegionID。
.\ali-instance-cli.exe configure --mode AK
STS Token配置方式
說明region、ak、sk、token要修改為實(shí)際的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"
當(dāng)回顯如下圖所示時(shí),說明鑒權(quán)方式已配置完成。
在會(huì)話管理客戶端,執(zhí)行如下命令,生成RSA類型的公鑰與密鑰文件。
ssh-keygen -t rsa
根據(jù)界面提示,按Enter,當(dāng)界面顯示如下所示時(shí),說明公鑰與密鑰文件已生成。
說明生成的公鑰路徑默認(rèn)為C:\Users\Administrator/.ssh/id_rsa.pub。
在會(huì)話管理客戶端中,發(fā)送SSH公鑰到目標(biāo)實(shí)例中。
.\ali-instance-cli.exe send_public_key --instance <instance-id> --public-key "<本地公鑰文件的內(nèi)容或者文件路徑>" --user-name testuser
說明--user-name參數(shù)指定公鑰的用戶名,以上命令中testuser僅為示例。如果不指定默認(rèn)為root。指定的用戶名需要確保在目標(biāo)實(shí)例上已經(jīng)存在。
運(yùn)行SSH命令免密登錄目標(biāo)實(shí)例。
通過公網(wǎng)IP免密登錄到目標(biāo)實(shí)例。
ssh -i ~/.ssh/id_rsa testuser@instance_ip
說明使用過程中,請(qǐng)將~/.ssh/id_rsa修改成實(shí)際的密鑰路徑;instance_ip修改成您遠(yuǎn)程登錄目標(biāo)實(shí)例的IP;testuser修改成您遠(yuǎn)程登錄的用戶名。
使用instance_id免密登錄到目標(biāo)實(shí)例。
ssh -i ~/.ssh/id_rsa testuser@instance_id
說明使用過程中,請(qǐng)將~/.ssh/id_rsa修改成實(shí)際的密鑰路徑;instance_id修改成您遠(yuǎn)程登錄目標(biāo)實(shí)例ID;testuser修改成您遠(yuǎn)程登錄的用戶名。
當(dāng)回顯如下圖所示時(shí),說明已經(jīng)通過Session Manager轉(zhuǎn)發(fā)SSH方式連接到目標(biāo)實(shí)例。
常見問題
為什么免密登錄時(shí)提示輸入密碼?
公鑰注冊(cè)完成之后,有效期只有60s,注冊(cè)公鑰之后,免密登錄如果提示需要密碼,請(qǐng)確認(rèn)您的公鑰是否已經(jīng)過期。