Ejecute comandos de forma remota en una instancia EC2 con AWS Systems Manager
Aprenda a utilizar AWS Systems Manager de forma segura y eficiente para ejecutar comandos en servidores EC2.

Ejecute comandos de forma remota en una instancia EC2 con AWS Systems Manager

Este artículo le enseña a ejecutar comandos de forma segura en instancias EC2 con AWS Systems Manager sin abrir un puerto SSH. Al revisar los prerrequisitos, las prácticas recomendadas y la configuración de IAM, podrá administrar y ejecutar comandos fácilmente en sus servidores.
0 acciones
0
0
0
0

 

¿Cómo ejecutar comandos en EC2 sin abrir SSH?

Ejecutar comandos de forma remota en una instancia EC2 con AWS Systems Manager Un método Seguro, Escalable Y sin necesidad de abrir un puerto SSH para ejecutar comandos en instancias EC2. Esta guía proporciona una implementación paso a paso, prerrequisitos, ejemplos de comandos de la CLI de AWS, configuración de IAM y consejos prácticos de seguridad para administradores de sitios, DevOps e ingenieros de red.

 

Prerrequisitos y arquitectura general

Para poder ejecutar comandos de forma remota en EC2, se requieren tres componentes principales:

  • El agente SSM está instalado y ejecutándose en EC2.
  • EC2 tiene un perfil de instancia IAM que tiene las políticas mínimas requeridas para registrarse y comunicarse con Systems Manager (Núcleo de instancia administrada de Amazon SSM).
  • Conectividad de red a los servicios SSM (a través de Internet o puntos finales de VPC para SSM/EC2Messages/SSM-SessionManager).

Arquitectura: Usuario o script de la consola de AWS o comando AWS CLI/SDK Comando Ejecutar O inicio de sesión Llamadas → Systems Manager envía el mensaje al Agente SSM en EC2 → El Agente ejecuta el comando y devuelve la salida a CloudWatch/S3 o el resultado de la llamada.

 

Una nota sobre el acceso a la red

Si EC2 está en una subred privada sin NAT, utilice Puntos finales de VPC Para com.amazonaws. .ssm, mensajes ec2, mensajes ssmmessages y s3 Usar.

 

Configuración del rol y la política de IAM necesarios

Cree un rol de IAM para EC2 y adjunte la política administrada de AWS:

Política de confianza (entidad de confianza para EC2):

{
  "Version":"2012-10-17",
  "Statement":[{"Effect":"Allow","Principal":{"Service":"ec2.amazonaws.com"},"Action":"sts:AssumeRole"}]
}

Adjuntar política administrada: Núcleo de instancia administrada de Amazon SSM

aws iam create-role --role-name SSMInstanceRole --assume-role-policy-document file://trust-policy.json
aws iam attach-role-policy --role-name SSMInstanceRole --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

Esta política incluye los permisos necesarios para registrar y enviar registros a SSM. Para almacenar resultados en S3 o usar KMS para el cifrado, también debe agregar permisos para escribir en ese bucket de S3 y usar la clave KMS.

Luego, convierta este rol en un perfil de instancia y conéctelo a EC2.

 

Instalación y comprobación del agente SSM en distribuciones comunes de Linux

Para Amazon Linux 2:

sudo yum install -y amazon-ssm-agent
sudo systemctl enable --now amazon-ssm-agent

Para Ubuntu (ejemplo con descarga de paquete Debian):

REGION=us-east-1
wget https://s3.${REGION}.amazonaws.com/amazon-ssm-${REGION}/latest/debian_amd64/amazon-ssm-agent.deb
sudo dpkg -i amazon-ssm-agent.deb
sudo systemctl enable --now amazon-ssm-agent

Comprobar el estado:

sudo systemctl status amazon-ssm-agent
sudo tail -n 200 /var/log/amazon/ssm/amazon-ssm-agent.log

 

Ejecución de comandos con Run Command (ejemplo de CLI de AWS)

Manera rápida de ejecutar un comando de shell en una o más instancias EC2:

Ejemplo: ejecutar apt update y upgrade en una instancia:

aws ssm send-command \
  --instance-ids "i-0123456789abcdef0" \
  --document-name "AWS-RunShellScript" \
  --parameters commands=["sudo apt-get update -y","sudo apt-get upgrade -y"] \
  --comment "Update packages" \
  --region us-east-1

Para segmentar por etiqueta (por ejemplo, todos los servidores web con la etiqueta Role=web):

aws ssm send-command \
  --targets Key=tag:Role,Values=web \
  --document-name "AWS-RunShellScript" \
  --parameters commands=["/opt/deploy/deploy.sh"] \
  --region eu-central-1

Obtener la salida de un comando:

1) Con la salida de send-command, obtienes un CommandId.

2)

aws ssm get-command-invocation --command-id <COMMAND_ID> --instance-id i-0123456789abcdef0

Si la salida se envía a S3, configure los parámetros del comando de envío en --output-s3-bucket-name y --prefijo-de-clave-de-salida-s3 Especificar.

 

Consejos prácticos para ejecutar scripts grandes

  • Sube los scripts a S3 y en Ejecutar comando simplemente wget + Correr.
  • Para scripts recurrentes de Gerente Estatal Usar.
  • Utilice parámetros y documentos administrados por SSM (documentos de automatización) para una automatización completa.

 

Uso del Administrador de sesiones para acceso interactivo y reenvío de puertos

El administrador de sesiones permite un shell interactivo sin SSH y también puede realizar reenvío de puertos.

Iniciar una sesión interactiva:

aws ssm start-session --target i-0123456789abcdef0

Requiere instalación para uso interactivo en la consola o mediante AWS CLI complemento de administrador de sesiones Lo tienes en el cliente.

Ejemplo de reenvío de puertos para acceso a base de datos:

aws ssm start-session \
  --target i-0123456789abcdef0 \
  --document-name AWS-StartPortForwardingSession \
  --parameters '{"portNumber":["3306"],"localPortNumber":["3307"]}'

Luego puedes ir a host local:3307 La conexión y el tráfico se tunelizan a través de SSM sin abrir el puerto 3306 a Internet.

 

Administrar salidas y registros (CloudWatch/S3)

En Preferencias del Administrador de sesiones, habilite los registros de CloudWatch o el registro de S3 para guardar todas las sesiones.

Para ejecutar comando, puede redirigir la salida a S3 o habilitar la salida de CloudWatch:

--cloud-watch-output-config '{"CloudWatchOutputEnabled":true}'

 

Escenarios prácticos y ejemplos

Realizar una actualización masiva en docenas de instancias EC2 en múltiples regiones:

  • Utilice la segmentación con etiqueta o grupo de recursos.
  • Utilice SSM Maintenance Windows o Patch Manager para programar y coordinar.

Uso para GPU y servidores de renderizado:

Para servidores GPU implementados en varias ubicaciones (por ejemplo, en nuestras más de 85 ubicaciones o regiones de AWS), use el comando Ejecutar para instalar los controladores de NVIDIA, CUDA y los paquetes dependientes. Ejemplo:

aws ssm send-command --instance-ids "i-..." --document-name "AWS-RunShellScript" --parameters commands=["sudo apt-get install -y nvidia-driver-470","sudo reboot"]

Configuración rápida de un VPS comercial con latencia mínima:

  • En lugar de abrir SSH/22, utilice el Administrador de sesiones y el reenvío de puertos para acceder de forma segura al servidor comercial.
  • Elegir la ubicación correcta (el centro de datos más cercano con una ruta directa al bróker) y usar CDN/BGP/red privada puede reducir el ping; tenemos más de Más de 85 ubicaciones Atendemos estas necesidades en todo el mundo.

 

Consejos de seguridad y mejores prácticas

Nunca abra el puerto SSH públicamente.SSM actúa como una alternativa de bajo riesgo.

  • De mínimo privilegio Utilice roles y usuarios de IAM. Permita únicamente la ejecución de documentos específicos o el acceso a parámetros.
  • Habilite el registro del Administrador de sesiones y envíe salidas a S3 con cifrado KMS o CloudWatch.
  • Para almacén de parámetros de tipo Cadena segura Y utiliza una clave KMS dedicada.
  • Limitaciones del administrador de sesiones: puede configurar programaciones y políticas de IAM para que se ejecuten solo durante un período de tiempo o con MFA.
  • Para entornos sensibles, aproveche los puntos finales de VPC para SSM y grupos de seguridad y ACL de red sólidos.

 

Errores comunes y solución de problemas

  • Instancia no administrada / No registrada: Verifique que el agente SSM esté instalado y en ejecución y que la función IAM correcta esté asociada.
  • Tiempo de conexión agotado: Verifique el enrutamiento de la red, los puntos finales de VPC o el acceso a Internet/NAT.
  • Permiso denegado al enviar salida a S3: El rol de IAM debe tener acceso de escritura a ese depósito.
  • start-session da un error: Asegúrese de que session-manager-plugin esté instalado en el cliente y que Session Manager esté habilitado en la consola.

 

Resumen y cómo utilizar nuestros servicios

Ejecutar comandos de forma remota en una instancia EC2 con AWS Systems Manager es una forma segura y conveniente de administrar EC2 de forma remota, ejecutar scripts, aplicar parches y acceder sin SSH.

Esta solución se adapta bien a las necesidades de:

  • Servidor de gráficos (GPU) para IA y renderizado,
  • VPS para comercio con requisitos de ping bajos,
  • Servidores de juegos e infraestructura con alto SLA,

Se puede combinar. Si necesita gestionar una combinación de AWS EC2 y nuestros servidores internacionales (más de 85 ubicaciones), ofrecemos:

  • Para cargas de trabajo sensibles a la latencia, elija nuestra ubicación más cercana.
  • Utilice BGP/CDN y enlaces dedicados (si es necesario).
  • Utilice los documentos SSM + Automation para administrar y automatizar entre nuestros entornos On-prem / AWS / VPS y mantener los registros centralizados en CloudWatch/S3.

 

Pasos sugeridos para comenzar

Para ver nuestros planes de Cloud Server, GPU Cloud y VPS para negociar o para recibir asesoramiento técnico sobre cómo elegir la mejor ubicación e implementación segura con AWS Systems Manager, revise los planes o comuníquese con nuestro equipo de soporte para diseñar una arquitectura personalizada y segura para su proyecto.

 

Preguntas frecuentes

También te puede gustar