通過config_ecs_instance_connect插件注冊公鑰免密連接Linux實例
本文介紹如何通過config_ecs_instance_connect插件注冊公鑰免密連接Linux實例。
功能介紹
config_ecs_instance_connect是阿里云提供的用于連接Linux實例的插件。使用該插件,用戶可以無需密碼、安全、快速地連接指定的Linux實例,提高連接效率和安全性。
技術(shù)原理:該方式是基于config_ecs_instance_connect插件和云助手公共命令,將SSH公鑰發(fā)送到指定實例內(nèi)部,供指定用戶使用。密鑰有效期為60s。在此期間,您可以通過SSH公鑰連接實例,無需輸入密碼,避免密碼泄露等風(fēng)險。
適用場景
需要頻繁連接多個實例。
需要遠(yuǎn)程操作較為敏感的實例。
前提條件
目標(biāo)實例處于運(yùn)行中狀態(tài)。
目標(biāo)實例所在賬號已開通會話管理功能。具體操作,請參見通過會話管理連接實例。
目標(biāo)實例必須為Linux系統(tǒng),并且已安裝云助手Agent,并且Agent版本不低于2.2.3.196。
關(guān)于如何查詢云助手Agent版本及升級云助手Agent,請參見安裝云助手Agent和升級或禁止升級云助手Agent。
會話管理客戶端已安裝ali-instance-cli。具體操作,請參見Linux、macOS操作系統(tǒng)或Windows操作系統(tǒng)。
操作步驟
在會話管理客戶端,執(zhí)行如下命令,生成RSA類型的公鑰與密鑰文件。
ssh-keygen -t rsa
根據(jù)界面提示,按
Enter
鍵,當(dāng)界面顯示如下所示時,說明公鑰與密鑰文件已生成。說明生成的公鑰路徑默認(rèn)為
~/.ssh/id_rsa.pub
。安裝并啟用config_ecs_instance_connect。
控制臺方式
使用云助手發(fā)送如下命令到目標(biāo)實例,安裝并啟用config_ecs_instance_connect。
具體操作,請參見創(chuàng)建并執(zhí)行命令。
acs-plugin-manager -e -P config_ecs_instance_connect --params --install
CLI方式
說明以下示例中的i-bp15vhvt43ciprqkxxxx請?zhí)鎿Q成實際的實例ID。
aliyun ecs RunCommand --RegionId 'cn-hangzhou' \ --Type 'RunShellScript' \ --CommandContent 'acs-plugin-manager -e -P config_ecs_instance_connect --params --install' \ --InstanceId.1 'i-bp15vhvt43ciprqkxxxx'
發(fā)送SSH公鑰到目標(biāo)實例。
OpenAPI方式
調(diào)用InvokeCommand,執(zhí)行名稱為
ACS-ECS-SendSshPublicKey-linux.sh
的公共命令,將SSH公鑰發(fā)送到目標(biāo)實例。您需要注意以下三個參數(shù):
CommandId:命令I(lǐng)D,取值為
ACS-ECS-SendSshPublicKey-linux.sh
。Parameters:
username:遠(yuǎn)程登錄目標(biāo)實例的用戶名,默認(rèn)為root。
sshpublickey:遠(yuǎn)程登錄目標(biāo)實例使用的SSH公鑰,必填參數(shù),參數(shù)的值為步驟1中生成的id_rsa.pub的內(nèi)容。
控制臺方式
登錄ECS管理控制臺。
在左側(cè)導(dǎo)航欄,選擇
。單擊公共命令頁簽。
在搜索框中輸入ACS-ECS-SendSshPublicKey-linux.sh,單擊Enter鍵。
在ACS-ECS-SendSshPublicKey-linux.sh公共命令對應(yīng)的操作列,單擊執(zhí)行。
在彈出的執(zhí)行命令面板,配置參數(shù)。
命令參數(shù):
username:遠(yuǎn)程登錄目標(biāo)實例的用戶名,默認(rèn)為root。
sshpublickey:遠(yuǎn)程登錄目標(biāo)實例使用的SSH公鑰,必填參數(shù),參數(shù)的值為步驟1中生成的id_rsa.pub的內(nèi)容。
選擇實例:選中要連接的目標(biāo)實例。
單擊執(zhí)行。
CLI方式
執(zhí)行名稱為
ACS-ECS-SendSshPublicKey-linux.sh
的公共命令,將公鑰發(fā)送到目標(biāo)實例。您需要注意以下三個參數(shù):
CommandId:命令I(lǐng)D,取值為
ACS-ECS-SendSshPublicKey-linux.sh
。Parameters:
username:遠(yuǎn)程登錄目標(biāo)實例的用戶名,默認(rèn)為root,請?zhí)鎿Q成實際的用戶名。
sshpublickey:遠(yuǎn)程登錄目標(biāo)實例使用的SSH公鑰,必填參數(shù),參數(shù)的值為步驟1中生成的id_rsa.pub的內(nèi)容。
CLI示例如下:
aliyun ecs InvokeCommand --RegionId 'cn-hangzhou' \ --CommandId 'ACS-ECS-SendSshPublicKey-linux.sh' \ --InstanceId.1 'i-bp15vhvt43ciprqkxxxx' \ --Parameters '{"username":"ecs-user","sshpublickey":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5A0cE4tq7oq6q0NyEp/EuVNY9AGVVC1Kkp9MM2O0P+hXjghPVLk2j8rNue6IPwAcLPKwgwOMbcNKGu6U90Kt8XPE5fOyp1dakqXiG1hZFrNjfqkR7xpceV/N4tQvb5/8DCq98u85qouj/KGIvZ6+BIQKBBh96iy/iHNLVNIS0H7UmBhYM4q9jjnxa+qy1JRCvV5Cc5mRgr87LfXbx+zmNiibFF23R9B9zeY1cS7RKRvzkpUWAN46f0gwY6Lg++wtg6DPWOKQ98P9is5rFpbYLv0xkV9h9vHH95RNNxOf0/RDcD7LbF0Kjz9oHp807pNinO94fvhWe5qZDH4VT**** test@iZnl7ckqcca****"}'
免密登錄目標(biāo)實例。
支持以下兩種方式登錄目標(biāo)實例。
說明以下命令中
~/.ssh/id_rsa
請?zhí)鎿Q成您的實際私鑰路徑,username請?zhí)鎿Q成您遠(yuǎn)程登錄目標(biāo)實例的用戶名,instance_ip請?zhí)鎿Q成您遠(yuǎn)程登錄的目標(biāo)實例IP。通過公網(wǎng)IP免密登錄目標(biāo)實例。
ssh -i ~/.ssh/id_rsa username@instance_ip
通過instance_id免密登錄目標(biāo)實例。
ssh -i ~/.ssh/id_rsa username@instance_id
常見問題
為什么免密登錄時提示輸入密碼?
公鑰注冊完成之后,有效期為60s,請確認(rèn)您的公鑰是否已經(jīng)過期。
通過云助手安裝config_ecs_instance_connect,或者通過公共命令報錯時候,如何查看具體問題?
您可以通過查看日志分析具體問題。
云助手Agent日志路徑:
/usr/local/share/aliyun-assist/云助手版本號/log/aliyun_assist_main.log.*
云助手插件模塊日志路徑:
/usr/local/share/aliyun-assist/云助手版本號/log/acs_plugin_manager.log