本文介绍如何使用config_ecs_instance_connect插件连接Linux实例。
前提条件
- 目标实例所在账号已开通会话管理功能。具体操作,请参见通过会话管理连接实例。
- 已安装云助手客户端,且客户端版本支持会话管理,即确保Linux操作系统中使用的客户端版本不低于2.2.3.196,Windows操作系统中使用的客户端版本不低于2.1.3.196。具体操作,请参见安装云助手客户端。
- 目标实例必须为Linux系统。
说明 会话管理功能正在公测中,如需使用请以阿里云账号登录后开通。
背景信息
使用config_ecs_instance_connect插件和云助手公共命令,可以将ssh公钥发送到指定实例内部供指定用户使用,密钥保留60s。在60s内,您可以通过ssh公钥登录的方式进入实例,无需输入密码。
操作步骤
- 在会话管理客户端,执行如下命令,生成RSA类型的公钥与密钥文件。
ssh-keygen -t rsa
根据界面提示,按Enter,当界面显示如下所示时,说明公钥与密钥文件已生成。

说明 生成的公钥路径默认为~/.ssh/id_rsa.pub。
- 在目标实例中,使用云助手发送如下命令,安装并启用config_ecs_instance_connect。
具体操作,请参见
执行命令。
acs-plugin-manager -e -P config_ecs_instance_connect --params --install
- 在目标实例中,发送ssh公钥。
您可以选择以下任一方式,发送ssh公钥到目标实例。
- 使用API发送ssh公钥到目标实例。
调用InvokeCommand,执行名称为ACS-ECS-SendSshPublicKey-linux.sh
的公共命令,将公钥发送到目标实例。
您需要注意以下三个参数,更多参数说明,请参见
InvokeCommand。
- CommandId:命令ID,取值为
ACS-ECS-SendSshPublicKey-linux.sh
。
- username: 远程登录目标实例的用户名,默认为root。
- sshpublickey: 必填参数,参数的值为步骤1中生成的id_rsa.pub的内容。
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.ecs.model.v20140526.*;
public class InvokeCommand {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "<accessKeyId>", "<accessSecret>");
IAcsClient client = new DefaultAcsClient(profile);
InvokeCommandRequest request = new InvokeCommandRequest();
request.setRegionId("cn-beijing");
request.setCommandId("ACS-ECS-SendSshPublicKey-linux.sh");
List<String> instanceIdList = new ArrayList<String>();
instanceIdList.add("i-xxxxxx");
request.setInstanceIds(instanceIdList);
request.setParameters("{\"username\":\"root\", \"sshpublickey\":\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDftEm8H5A19FXv5SCVzHqmS9vg+8B4wsp9M/U/vKwPMlM0fJr8Z52ErGnEnpFA24hLSf/Ffpht19tp+QtsYhVcg xxx\"}");
try {
InvokeCommandResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}
- 使用云助手发送ssh公钥到目标实例。
- 登录ECS管理控制台。
- 在左侧导航栏,选择。
- 单击公共命令页签。
- 选择ACS-ECS-SendSshPublicKey-linux.sh,在操作列,单击执行。
- 在弹出的执行命令面板,配置参数。
- 命令参数:
- username : 远程登录目标实例的用户名,默认为root。
- sshpublickey : 必填参数,参数的值为步骤1中生成的id_rsa.pub的内容。
- 选择实例:选中要连接的目标实例。

- 单击执行。
- 免密登录目标实例。
常见问题
为什么免密登录时提示输入密码?
公钥注册完成之后,有效期只有60s,注册公钥之后,免密登录如果提示需要密码,请确认您的公钥是否已经过期。
通过云助手安装config_ecs_instance_connect,或者通过公共命令报错时候,如何查看具体问题?