Registre uma chave pública temporária de 60 segundos com o ali-instance-cli e conecte-se a uma instância ECS usando a chave privada em vez de senha.
Chaves públicas temporárias
As chaves públicas temporárias permitem a conexão com instâncias via SSH sem a necessidade de configurar pares de chaves nelas. A cada conexão, registre uma chave pública temporária válida por 60 segundos e use a chave privada correspondente em vez de senha.
O servidor do Cloud Assistant armazena as chaves públicas temporárias.
Pré-requisitos
Ative o serviço do Session Manager
Verifique se a instância está no status Running
Verifique se o **Cloud Assistant Agent** está instalado
Prepare as credenciais de um usuário RAM para o Session Manager
1. Instale e configure o Session Manager CLI
Pule esta etapa caso já tenha instalado e configurado o Session Manager CLI.
1,1 Instale
Instale o Session Manager CLI (ali-instance-cli) no seu computador. O método de instalação varia de acordo com o sistema operacional.
Windows
Clique para baixar o ali-instance-cli para Windows e salve-o em uma pasta local.
Este tópico usa a pasta C:\Users\test como exemplo.
macOS
No terminal do macOS, baixe o ali-instance-cli para macOS:
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/mac/ali-instance-cli
Conceda permissões de execução:
chmod a+x ali-instance-cli
Linux
Instale o ali-instance-cli para Linux:
x86 architecture
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/linux/ali-instance-cli
arm architecture
curl -O https://aliyun-client-assist.oss-cn-beijing.aliyuncs.com/session-manager/linux_arm/ali-instance-cli
Conceda permissões de execução:
chmod a+x ali-instance-cli
1,2 Configure
Para se conectar a uma instância ECS com o ali-instance-cli, configure as credenciais de identidade, como um AccessKey. Consulte Prepare the credentials of a RAM user for Session Manager.
Windows
Clique em , insira cmd e pressione a tecla
Enterpara abrir uma janela do prompt de comando.-
Acesse o diretório do ali-instance-cli.exe. Este exemplo usa
C:\Users\test.cd C:\Users\test -
Configure as credenciais usando um dos métodos a seguir:
AccessKey
Configure o AccessKey ID, o AccessKey secret e o Region ID conforme solicitado:
ali-instance-cli.exe configure --mode AKSTS Token
Conclua a configuração:
ali-instance-cli.exe configure set --mode StsToken --region "<region>" --access-key-id "<ak>" --access-key-secret "<sk>" --sts-token "<sts_token>"Substitua <region>, <ak>, <sk> e <sts_token> pelos valores reais do seu region ID, AccessKey ID, AccessKey secret e
STS token.CredentialsURI
Insira o Credentials URI e o Region ID conforme solicitado:
ali-instance-cli.exe configure --mode=CredentialsURIA saída a seguir indica uma configuração bem-sucedida.

macOS/Linux
-
Acesse o diretório do ali-instance-cli. Este exemplo usa o diretório home
~.cd ~ -
Configure as credenciais:
AccessKey
Configure o AccessKey ID, o AccessKey secret e o Region ID conforme solicitado:
./ali-instance-cli configure --mode AKSTS Token
Conclua a configuração:
./ali-instance-cli configure set --mode StsToken --region "<region>" --access-key-id "<ak>" --access-key-secret "<sk>" --sts-token "<sts_token>"Substitua <region>, <ak>, <sk> e <sts_token> pelos valores reais do seu region ID, AccessKey ID, AccessKey secret e
STS token.CredentialsURI
Configure o Credentials URI e o Region ID conforme solicitado:
./ali-instance-cli configure --mode=CredentialsURIA saída a seguir indica uma configuração bem-sucedida.

2. Registre uma chave pública temporária na instância
2.1 Obtenha o ID da instância
Obtenha o ID da instância de destino.
Use the ECS console
|
|
Use Alibaba Cloud CLI
Caso tenha configurado o Alibaba Cloud CLI, execute um comando para chamar a operação DescribeInstances e consultar o ID da instância à qual deseja se conectar. Para obter informações sobre os parâmetros da operação DescribeInstances, consulte DescribeInstances.
Por exemplo, execute o seguinte comando para consultar o ID de uma instância chamada SessionManager-example na região China (Hangzhou):
aliyun ecs DescribeInstances --region cn-hangzhou --RegionId 'cn-hangzhou' --InstanceName 'SessionManager-example'
O valor do parâmetro InstanceId na saída do comando é o ID da instância.

Call API operations
Chame a operação DescribeInstances para consultar o ID da instância à qual deseja se conectar. Para obter mais informações, consulte DescribeInstances.
2,2 Gere um par de chaves
Gere um par de chaves no seu computador. O arquivo de chave pública será usado como a chave pública temporária na Etapa 2,3.
Windows computer
Abra o Prompt de Comando e execute o seguinte comando para gerar um par de chaves.
Neste exemplo, o cliente OpenSSH é usado para gerar um par de chaves no diretório C:\Users\test .
ssh-keygen -t rsa -b 2048 -f id_rsa
-t rsa: o tipo de chaveRivest-Shamir-Adleman (RSA).-b 2048: o comprimento de chave de 2.048 bits.-f id_rsa: gera os arquivos de chave chamados id_rsa no diretório de trabalho.
O sistema solicitará a inserção de uma senha (passphrase). Se definida, a senha será exigida sempre que a chave privada for usada.
Pressione Enter para pular caso não precise de uma senha.
Os arquivos de chave pública id_rsa.pub e de chave privada id_rsa são gerados no diretório de trabalho. Neste exemplo, o diretório de trabalho é C:\Users\test.
macOS or Linux computer
Abra o Terminal e execute o seguinte comando para gerar um par de chaves.
Neste exemplo, o cliente OpenSSH é usado para gerar um par de chaves.
ssh-keygen -t rsa -b 2048 -f id_rsa
-t rsa: o tipo de chaveRSA.-b 2048: o comprimento de chave de 2.048 bits.-f id_rsa: gera os arquivos de chave chamados id_rsa no diretório de trabalho.
O sistema solicitará a inserção de uma senha (passphrase). Se definida, a senha será exigida sempre que a chave privada for usada.
Pressione Enter para pular caso não precise de uma senha.
Os arquivos de chave pública id_rsa.pub e de chave privada id_rsa são gerados no diretório de trabalho.
2,3 Envie a chave pública como uma chave pública temporária para a instância
Windows computer
Abra o Prompt de Comando, acesse o diretório do ali-instance-cli.exe e execute o seguinte comando para registrar a chave pública temporária em uma instância.
Substitua <instance_id> pelo ID da instância, <public_key_path> pelo caminho do arquivo de chave pública gerado na Etapa 2,2 e <ecs_username> pelo nome de usuário ao qual atribuir a chave pública temporária:
ali-instance-cli.exe send_public_key --instance <instance_id> --public-key <public_key_path> --user-name <ecs_username>
Exemplo: registre a chave pública em C:\Users\test\id_rsa.pub na instância i-bp1****** e atribua-a ao usuário ecs-user:
ali-instance-cli.exe send_public_key --instance i-bp1****** --public-key C:\Users\test\id_rsa.pub --user-name ecs-user
Após a execução bem-sucedida do comando, conecte-se à instância com a chave privada correspondente em até 60 segundos.
macOS or Linux computer
Abra o Terminal, acesse o diretório do ali-instance-cli e execute o seguinte comando para registrar a chave pública temporária em uma instância.
Substitua <instance_id> pelo ID da instância, <public_key_path> pelo caminho do arquivo de chave pública gerado na Etapa 2,2 e <ecs_username> pelo nome de usuário ao qual atribuir a chave pública temporária:
./ali-instance-cli send_public_key --instance <instance_id> --public-key <public_key_path> --user-name <ecs_username>
Exemplo: registre a chave pública em ~/id_rsa.pub na instância i-bp1****** e atribua-a ao usuário ecs-user:
./ali-instance-cli send_public_key --instance i-bp1****** --public-key ~/id_rsa.pub --user-name ecs-user
Após a execução bem-sucedida do comando, conecte-se à instância com a chave privada correspondente em até 60 segundos.
3. Conecte-se à instância via SSH
Se o sistema avisar que a senha ou a chave pública está incorreta, a chave pública pode ter expirado. Uma chave pública temporária é válida por 60 segundos.
Abra o Prompt de Comando ou o Terminal e execute o seguinte comando para se conectar à instância.
Substitua <private_key_path> pelo caminho do arquivo de chave privada gerado na Etapa 2,2 , <ecs-username> pelo nome de usuário especificado na Etapa 2,3 e <ecs_ip> pelo endereço IP público da instância.
ssh -i <private_key_path> <ecs-username>@<ecs_ip>
Exemplo: conecte-se à instância 223...187 como ecs-user com a chave privada ~/id_rsa:
ssh -i ~/id_rsa ecs-user@223.***.***.187
Também é possível usar o recurso de encaminhamento de porta do ali-instance-cli para se conectar a uma instância sem endereço IP público. Consulte Use the port forwarding feature of Session Manager CLI to connect to an instance without a public IP address.
FAQ
A linha de comando não responde após a execução de um comando (A instância não está no status Running)
Se a linha de comando não responder após a execução de um comando do ali-instance-cli, a instância pode não estar no status Running. Para visualizar o status da instância, consulte Check whether the instance is in the Running state neste tópico.
A linha de comando não responde após a execução de um comando (Problema de configuração do grupo de segurança)
Se a linha de comando não responder após a execução de um comando do ali-instance-cli, as portas de saída necessárias podem não estar abertas no grupo de segurança. Por padrão, os grupos de segurança básicos permitem todo o tráfego de saída. Esse problema pode ocorrer caso você modifique as regras de saída ou use um grupo de segurança avançado.
Ao usar o Session Manager para se conectar a uma instância ECS, certifique-se de que o Cloud Assistant Agent em execução na instância ECS esteja conectado ao servidor do Cloud Assistant. Para isso, adicione as seguintes regras a um grupo de segurança de saída:
Em comparação com métodos de conexão como SSH e Remote Desktop Protocol (RDP), o Cloud Assistant Agent estabelece ativamente uma conexão WebSocket com o servidor do Session Manager. Basta abrir a porta WebSocket de saída do servidor do Cloud Assistant em uma regra de segurança. Para obter informações sobre o funcionamento do Session Manager, consulte a seção How Session Manager works deste tópico.
Se você usar grupos de segurança básicos, incluindo o grupo de segurança padrão, todo o tráfego de saída é permitido. Nenhuma configuração adicional é necessária.
Se você usar um grupo de segurança avançado, todo o tráfego de saída é negado. Configure as regras relevantes descritas na tabela a seguir. Para obter informações sobre grupos de segurança, consulte Basic and advanced security groups.
Para obter informações sobre como adicionar regras a um grupo de segurança, consulte Add a security group rule.
|
Action |
Priority |
Protocol type |
Port range |
Authorization object |
Description |
|
Allow |
1 |
Custom TCP |
443 |
|
Esta porta é usada para acessar o servidor do Cloud Assistant. |
|
Allow |
1 |
Custom TCP |
443 |
|
Esta porta é usada para acessar o servidor que armazena o pacote de instalação do Cloud Assistant Agent ao instalar ou atualizar o Cloud Assistant Agent. |
|
Allow |
1 |
Custom UDP |
53 |
|
Esta porta é usada para resolver nomes de domínio. |
Para se conectar a uma instância usando apenas o Session Manager, exclua as regras de entrada que permitem a porta SSH (padrão 22) e a porta RDP (padrão 3389) do grupo de segurança. Isso melhora a segurança da instância ECS.
O erro DeliveryTimeout é relatado após a execução de um comando (O Cloud Assistant Agent está offline)
Se o erro DeliveryTimeout ocorrer ao executar um comando do ali-instance-cli, o Cloud Assistant Agent pode estar indisponível. Consulte Check whether Cloud Assistant Agent is installed on the instance.


O erro "session manager is disabled, please enable first" é relatado após a execução de um comando
Se o erro session manager is disabled, please enable first ocorrer após a execução de um comando do ali-instance-cli, enable Session Manager no console.
A conexão é fechada automaticamente devido a um longo período de inatividade
As conexões do Session Manager são fechadas após o tempo limite de inatividade, cujo padrão é de 3 minutos. Use o parâmetro --idle-timeout para definir um tempo limite de inatividade personalizado em segundos.
Exemplo: conecte-se com um tempo limite de inatividade de 10 minutos:
./ali-instance-cli session --instance instance-id --idle-timeout 600
Este recurso requer as seguintes versões do ali-instance-cli:
Linux:
1.2.0.48Windows:
1.1.0.48macOS:
1.3.0.48
Como analisar os logs do ali-instance-cli
Analise os logs do ali-instance-cli para identificar problemas.
Logs do Session Manager CLI: ao usar o ali-instance-cli, uma pasta de log (por exemplo,
~/log/aliyun_ecs_session_log.2022XXXX) é gerada no diretório da ferramenta.-
Logs do Cloud Assistant Agent:
-
Linux
/usr/local/share/aliyun-assist/<Cloud Assistant Agent version>/log/ -
Windows
C:\ProgramData\aliyun\assist\<Cloud Assistant Agent version>\log
-


