O Session Manager cli (ali-instance-cli) permite o encaminhamento de portas TCP pelo Cloud Assistant e por WebSockets para acessar services de instâncias com ip privado ou criar túneis por meio de um jump server.
Casos de uso
Caso de uso 1: acessar services em uma instância com ip privado. Mapeie uma porta de service em uma instância sem endereço ip público, como a porta | Caso de uso 2: usar uma instância como jump server para alcançar outros hosts privados. Para services que você não consegue acessar diretamente, como um banco de dados apsaradb rds for MySQL, use como jump server uma instância ecs que tenha acesso de rede ao destino. A sessão de encaminhamento de portas cria um túnel por essa instância até os services privados. |
Uma sessão de encaminhamento de portas permanece ativa apenas enquanto a janela de linha de comando está aberta. Ao fechar a janela, a sessão é encerrada.
Acesse services em uma instância com ip privado
Conclua preparations e instale e configure o Session Manager cli. Em seguida, siga estas etapas.
No Windows
Em PowerShell, acesse o diretório de ali-instance-cli.exe e execute:
# Replace INSTANCE_ID with the ID of the instance for which you want to defina port forwarding, TARGET_PORT with the port of the target ecs instance, and LOCAL_PORT with the port to map on your local machine.
.\ali-instance-cli.exe portforward -i INSTANCE_ID -r TARGET_PORT -l LOCAL_PORT
Quando Waiting for connections aparecer, o túnel estará ativo. Acesse o TARGET_PORT da instância por 127.0.0.1:<local_port>.
Exemplo: encaminhar a porta do Nginx80na instânciai-bp1******para a porta local8080:.\ali-instance-cli.exe portforward -i i-bp1****** -r 80 -l 8080.
No macOS ou Linux
No terminal, acesse o diretório de ali-instance-cli e execute:
#Replace INSTANCE_ID with the ID of the instance for which you want to defina port forwarding, TARGET_PORT with the port of the target ecs instance, and LOCAL_PORT with the port to map on your local machine.
./ali-instance-cli portforward -i INSTANCE_ID -r TARGET_PORT -l LOCAL_PORT
Quando Waiting for connections aparecer, o túnel estará ativo. Acesse o TARGET_PORT da instância por 127.0.0.1:<local_port>.
Exemplo: encaminhar a porta do Nginx80na instânciai-bp1******para a porta local8080:./ali-instance-cli portforward -i i-bp1****** -r 80 -l 8080.
Use uma instância como jump server
Conclua preparations e instale e configure o Session Manager cli. Em seguida, siga estas etapas.
No Windows
Em PowerShell, acesse o diretório de ali-instance-cli.exe e execute:
# Replace INSTANCE_ID with the ID of the jump server instance, TARGET_IP with the ip address of the target host, TARGET_PORT with the port of the target host, and LOCAL_PORT with the port to map on your local machine.
.\ali-instance-cli.exe portforward -i INSTANCE_ID -r TARGET_IP:TARGET_PORT -l LOCAL_PORT
Quando Waiting for connections aparecer, o túnel do jump server estará estabelecido. O tráfego para 127.0.0.1:<local_port> passa pelo jump server até TARGET_IP:TARGET_PORT.
Exemplo: rotear o tráfego para uma instância RDS for MySQL emrm-******.mysql.rds.aliyuncs.com:3306por meio do jump serveri-bp1******para a porta local13306:.\ali-instance-cli.exe portforward -i i-bp1****** -r rm-******.mysql.rds.aliyuncs.com:3306 -l 13306.
No macOS ou Linux
No terminal, acesse o diretório de ali-instance-cli e execute:
#Replace INSTANCE_ID with the ID of the jump server instance, TARGET_IP with the ip address of the target host, TARGET_PORT with the port of the target host, and LOCAL_PORT with the port to map on your local machine.
./ali-instance-cli portforward -i INSTANCE_ID -r TARGET_IP:TARGET_PORT -l LOCAL_PORT
Quando Waiting for connections aparecer, o túnel do jump server estará estabelecido. O tráfego para 127.0.0.1:<local_port> passa pelo jump server até TARGET_IP:TARGET_PORT.
Exemplo: mapear uma instância RDS for MySQL (rm-******.mysql.rds.aliyuncs.com:3306) para a porta local13306por meio do jump serveri-bp1******:./ali-instance-cli portforward -i i-bp1****** -r rm-******.mysql.rds.aliyuncs.com:3306 -l 13306.
Perguntas frequentes
A linha de comando não responde depois que você executa um comando (a instância não está no status Running)
Se a linha de comando não responder depois que você executar um comando ali-instance-cli, talvez a instância não esteja no status Running. Para isso, visualize 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 depois que você executa um comando (problema na configuração do grupo de segurança)
Se a linha de comando não responder depois que você executar um comando ali-instance-cli, talvez as portas outbound necessárias não estejam abertas no grupo de segurança. Por padrão, basic security groups permitem todo o tráfego outbound. Esse problema pode ocorrer se você modifique as regras outbound ou usar um advanced security group.
Quando você usa o Session Manager para se conectar a uma instância ecs, verifique se o Cloud Assistant Agent em execução na instância ecs está conectado ao servidor do Cloud Assistant. Para isso, adicione as regras a seguir a um grupo de segurança outbound:
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 outbound WebSocket 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ê usa basic security groups, incluindo o default security group, todo o tráfego outbound é permitido. Nenhuma configuração adicional é necessária.
Se você usa um advanced security group, todo o tráfego outbound é negado. Configure as regras relevantes. A tabela a seguir descreve essas regras. 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.
|
Ação |
Prioridade |
Tipo de protocolo |
Intervalo de portas |
Objeto de autorização |
Descrição |
|
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 no qual o pacote de instalação do Cloud Assistant Agent fica armazenado quando você precisar, instale ou atualize o Cloud Assistant Agent. |
|
Allow |
1 |
Custom UDP |
53 |
|
Esta porta é usada para resolver nomes de domínio. |
Se você quiser se conectar a uma instância usando apenas o Session Manager, exclua de um grupo de segurança as regras inbound que permitem a porta SSH (padrão 22) e a porta RDP (padrão 3389) para aumentar a segurança da instância ecs.
Erro DeliveryTimeout: Cloud Assistant Agent está offline
Um erro DeliveryTimeout indica que o Cloud Assistant Agent pode estar offline. Para verificar o status do agente, consulte Check whether the Cloud Assistant Agent is installed on an instance.
O erro "session manager is disabled, please enable first" é relatado depois que você executa um comando
Se o erro session manager is disabled, please enable first ocorrer depois que você executar um comando ali-instance-cli, ative Session Manager no console.
Como analisar logs do ali-instance-cli
Analise os logs do ali-instance-cli para identificar problemas.
Logs do Session Manager cli: quando você usa 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
-