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
TLS vs. SSL: Comprensión de las diferencias clave y su importancia

TLS vs. SSL: Diferencias, historia e importancia para la seguridad web

En materia de seguridad web, siempre se escuchan los términos "SSL" y "TLS". Pero ¿cuál es exactamente la diferencia entre ambos? ¿Por qué se utiliza TLS como estándar web seguro hoy en día y SSL prácticamente se ha abandonado? En este artículo, analizaremos este tema desde una perspectiva profesional para que comprendas mejor los protocolos de seguridad web y la importancia de elegir el adecuado.
Amazon AWS Lambda

AWS Lambda: Computación sin servidor

En el mundo actual, donde la velocidad y la escalabilidad son primordiales, los servicios sin servidor desempeñan un papel crucial en la evolución de la arquitectura de software. AWS Lambda es uno de los servicios más importantes de Amazon en este ámbito, ya que permite a los desarrolladores ejecutar su código sin administrar servidores. Con Lambda, ya no es necesario configurar, dar soporte ni mantener servidores; basta con escribir el código y Amazon se encarga del resto.