本文介绍如何通过config_ecs_instance_connect插件注册公钥免密连接Linux实例。
功能介绍
config_ecs_instance_connect是阿里云提供的用于连接Linux实例的插件。使用该插件,用户可以无需密码、安全、快速地连接指定的Linux实例,提高连接效率和安全性。
技术原理:该方式是基于config_ecs_instance_connect插件和云助手公共命令,将SSH公钥发送到指定实例内部,供指定用户使用。密钥有效期为60s。在此期间,您可以通过SSH公钥连接实例,无需输入密码,避免密码泄露等风险。
适用场景
需要频繁连接多个实例。
需要远程操作较为敏感的实例。
前提条件
目标实例处于运行中状态。
目标实例所在账号已开通会话管理功能。具体操作,请参见通过会话管理连接实例。
目标实例必须为Linux系统,并且已安装云助手Agent,并且Agent版本不低于2.2.3.196。
关于如何查询云助手Agent版本及升级云助手Agent,请参见安装云助手Agent和升级或禁止升级云助手Agent。
会话管理客户端已安装ali-instance-cli。具体操作,请参见Linux、macOS操作系统或Windows操作系统。
操作步骤
在会话管理客户端,执行如下命令,生成RSA类型的公钥与密钥文件。
ssh-keygen -t rsa
根据界面提示,按
Enter
键,当界面显示如下所示时,说明公钥与密钥文件已生成。说明生成的公钥路径默认为
~/.ssh/id_rsa.pub
。安装并启用config_ecs_instance_connect。
控制台方式
使用云助手发送如下命令到目标实例,安装并启用config_ecs_instance_connect。
具体操作,请参见创建并执行命令。
acs-plugin-manager -e -P config_ecs_instance_connect --params --install
CLI方式
说明以下示例中的i-bp15vhvt43ciprqkxxxx请替换成实际的实例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'
发送SSH公钥到目标实例。
OpenAPI方式
调用InvokeCommand,执行名称为
ACS-ECS-SendSshPublicKey-linux.sh
的公共命令,将SSH公钥发送到目标实例。您需要注意以下三个参数:
CommandId:命令ID,取值为
ACS-ECS-SendSshPublicKey-linux.sh
。Parameters:
username:远程登录目标实例的用户名,默认为root。
sshpublickey:远程登录目标实例使用的SSH公钥,必填参数,参数的值为步骤1中生成的id_rsa.pub的内容。
控制台方式
CLI方式
执行名称为
ACS-ECS-SendSshPublicKey-linux.sh
的公共命令,将公钥发送到目标实例。您需要注意以下三个参数:
CommandId:命令ID,取值为
ACS-ECS-SendSshPublicKey-linux.sh
。Parameters:
username:远程登录目标实例的用户名,默认为root,请替换成实际的用户名。
sshpublickey:远程登录目标实例使用的SSH公钥,必填参数,参数的值为步骤1中生成的id_rsa.pub的内容。
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****"}'
免密登录目标实例。
支持以下两种方式登录目标实例。
说明以下命令中
~/.ssh/id_rsa
请替换成您的实际私钥路径,username请替换成您远程登录目标实例的用户名,instance_ip请替换成您远程登录的目标实例IP。通过公网IP免密登录目标实例。
ssh -i ~/.ssh/id_rsa username@instance_ip
通过instance_id免密登录目标实例。
ssh -i ~/.ssh/id_rsa username@instance_id
常见问题
为什么免密登录时提示输入密码?
公钥注册完成之后,有效期为60s,请确认您的公钥是否已经过期。
通过云助手安装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