اجرا از راه دور دستورات بر روی نمونه EC2 با AWS Systems Manager
یاد بگیرید چگونه به‌طور امن و کارآمد از AWS Systems Manager برای اجرای دستورات بر روی سرورهای EC2 استفاده کنید.

اجرا از راه دور دستورات بر روی نمونه EC2 با AWS Systems Manager

این مقاله به شما آموزش می‌دهد چگونه می‌توانید به‌طور ایمن و بدون باز کردن پورت SSH، دستورات را بر روی نمونه‌های EC2 با استفاده از AWS Systems Manager اجرا کنید. با بررسی پیش‌نیازها، بهترین شیوه‌ها و تنظیمات IAM، شما قادر خواهید بود تا به‌راحتی به مدیریت و اجرای دستورات بر روی سرورهای خود بپردازید.
0 Акции
0
0
0
0

 

چطور بدون باز کردن SSH دستورات را روی EC2 اجرا کنیم؟

Remotely Run Commands on an EC2 Instance with AWS Systems Manager یک روش امن, مقیاس‌پذیر و بدون نیاز به باز کردن پورت SSH برای اجرای دستورات روی نمونه‌های EC2 است. در این راهنما قدم‌به‌قدم پیاده‌سازی، پیش‌نیازها، نمونه دستورات AWS CLI، پیکربندی IAM و نکات امنیتی عملی برای مدیران سایت، DevOps و مهندسان شبکه ارائه می‌شود.

 

پیش‌نیازها و معماری کلی

برای اینکه بتوانید به‌صورت از راه دور دستور روی EC2 اجرا کنید، سه جزء اصلی لازم است:

  • SSM Agent روی EC2 نصب و در حال اجرا باشد.
  • EC2 یک IAM instance profile داشته باشد که حداقل policy لازم برای ثبت‌نام و ارتباط با Systems Manager را داشته باشد (AmazonSSMManagedInstanceCore).
  • اتصال شبکه‌ای به سرویس‌های SSM (از طریق اینترنت یا VPC endpoints برای SSM/EC2Messages/SSM-SessionManager).

معماری: کاربر یا اسکریپت از کنسول AWS یا AWS CLI/SDK دستور Run Command Или start-session را فراخوانی می‌کند → Systems Manager پیام را به SSM Agent روی EC2 می‌فرستد → Agent دستور را اجرا و خروجی را به CloudWatch/S3 یا نتیجه‌ی فراخوان برمی‌گرداند.

 

نکته درباره دسترسی شبکه‌ای

اگر EC2 در یک subnet خصوصی بدون NAT قرار دارد، از VPC endpoints برای com.amazonaws.<region>.ssm, ec2messages, ssmmessages и с3 Использовать.

 

تنظیم IAM Role و policy لازم

ساخت یک IAM Role برای EC2 و attach کردن policy مدیریت‌شده AWS:

Trust policy (trust entity برای EC2):

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

Attach managed policy: AmazonSSMManagedInstanceCore

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

این policy شامل دسترسی‌های لازم برای ثبت‌نام و ارسال لاگ‌ها به SSM است. برای ذخیره خروجی‌ها در S3 یا استفاده از KMS برای رمزنگاری، باید اجازه نوشتن به آن S3 bucket و استفاده از KMS key را نیز اضافه کنید.

سپس این role را به Instance Profile تبدیل و به EC2 متصل کنید.

 

نصب و بررسی SSM Agent روی توزیع‌های متداول لینوکس

برای Amazon Linux 2:

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

برای Ubuntu (مثالی با دانلود دبیان پکیج):

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

Проверьте статус:

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

 

اجرای دستورات با Run Command (نمونه aws cli)

روش سریع برای اجرای یک دستور شل روی یک یا چند نمونه EC2:

مثال: اجرای apt update و upgrade روی یک نمونه:

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

برای هدف‌گیری با تگ (مثلاً همه وب‌سرورهای با tag 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

دریافت خروجی یک دستور:

1) با خروجی send-command، یک CommandId دریافت می‌کنید.

2)

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

اگر خروجی به S3 فرستاده شده باشد، پارامترهای send-command را با –output-s3-bucket-name и –output-s3-key-prefix Указать.

 

نکات عملی برای اجرای اسکریپت‌های بزرگ

  • اسکریپت‌ها را روی S3 آپلود کنید و در Run Command فقط wget + اجرا کنید.
  • برای اسکریپت‌های تکرارشونده از State Manager Использовать.
  • از پارامترها و اسناد مدیریت‌شده SSM (Automation documents) برای اتوماسیون کامل استفاده کنید.

 

استفاده از Session Manager برای دسترسی تعاملی و Port Forwarding

Session Manager امکان یک شل تعاملی بدون SSH فراهم می‌کند و می‌تواند پورت‌فورواردینگ را نیز انجام دهد.

شروع جلسه تعاملی:

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

برای استفاده تعاملی در کنسول یا طریق AWS CLI نیاز به نصب session-manager-plugin روی کلاینت دارید.

مثال port forwarding برای دسترسی به دیتابیس:

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

سپس می‌توانید به localhost:3307 متصل شوید و ترافیک از طریق SSM تونل می‌شود بدون بازکردن پورت 3306 روی اینترنت.

 

مدیریت خروجی‌ها و لاگ‌ها (CloudWatch / S3)

در Session Manager Preferences، فعال کردن CloudWatch logs یا S3 logging را فعال کنید تا تمام sessionها ذخیره شوند.

برای Run Command می‌توانید خروجی را به S3 هدایت کنید یا CloudWatch Output را فعال کنید:

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

 

سناریوهای عملی و مثال‌ها

اجرای بروزرسانی توده‌ای روی ده‌ها EC2 در چند منطقه:

  • از targeting با Tag یا Resource Group استفاده کنید.
  • از SSM Maintenance Windows یا Patch Manager برای زمان‌بندی و هماهنگی بهره ببرید.

استفاده برای سرورهای GPU و رندرینگ:

برای سرورهای GPU که در لوکیشن‌های مختلف استقرار یافته‌اند (مثلاً در کنار ۸۵+ لوکیشن ما یا مناطق AWS)، از Run Command برای نصب درایورهای NVIDIA، CUDA و بسته‌های وابسته استفاده کنید. نمونه:

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

راه‌اندازی سریع VPS مخصوص ترید با حداقل تاخیر:

  • به جای باز کردن SSH/22، Session Manager و Port Forwarding برای دسترسی امن به سرور ترید استفاده کنید.
  • انتخاب لوکیشن مناسب (نزدیک‌ترین دیتاسنتر با مسیر مستقیم به بروکر) و استفاده از CDN/BGP/Private Network می‌تواند پینگ را کاهش دهد؛ ما بیش از ۸۵+ لوکیشن در سراسر جهان برای همین نیازها ارائه می‌کنیم.

 

نکات امنیتی و بهترین شیوه‌ها

هرگز پورت SSH را به‌صورت عمومی باز نکنید؛ SSM به‌عنوان جایگزین کم‌خطر عمل می‌کند.

  • От least privilege برای IAM roles و users استفاده کنید. فقط اجازه اجرای اسناد خاص یا دسترسی به پارامترها را بدهید.
  • Session Manager logging را فعال کنید و خروجی‌ها را به S3 با KMS encryption یا CloudWatch بفرستید.
  • برای Parameter Store از نوع SecureString و کلید KMS اختصاصی استفاده کنید.
  • محدودیت‌های Session Manager: می‌توان زمان‌بندی و IAM policy گذاشت تا فقط در محدوده زمانی یا با MFA اجرا شود.
  • برای محیط‌های حساس از VPC endpoints برای SSM و از network ACLs و security groups محکم بهره ببرید.

 

خطاهای رایج و رفع مشکل

  • Instance not managed / Not registered: بررسی کنید SSM Agent نصب و در حال اجرا باشد و نقش IAM صحیح متصل باشد.
  • Connection timed out: بررسی مسیر شبکه، VPC endpoints، یا دسترسی به اینترنت/NAT.
  • Permission denied هنگام ارسال خروجی به S3: IAM role باید write access به آن bucket داشته باشد.
  • start-session خطا می‌دهد: اطمینان از نصب session-manager-plugin روی کلاینت و فعال بودن Session Manager در کنسول.

 

جمع‌بندی و چگونگی استفاده همراه سرویس‌های ما

Remotely Run Commands on an EC2 Instance with AWS Systems Manager روش امن و مناسب برای مدیریت از راه دور EC2ها، اجرای اسکریپت‌ها، پچ کردن و دسترسی بدون SSH است.

این راهکار به‌خوبی با نیازهای:

  • سرور گرافیکی (GPU) برای AI و رندرینگ،
  • VPS مخصوص ترید با نیاز به پینگ پایین،
  • سرورهای گیم و زیرساخت با SLA بالا،

قابل ترکیب است. اگر شما نیاز دارید ترکیبی از AWS EC2 و سرورهای بین‌المللی ما (۸۵+ لوکیشن) را مدیریت کنید، پیشنهاد می‌کنیم:

  • برای latency-sensitive workloads، نزدیک‌ترین لوکیشن ما را انتخاب کنید.
  • از شبکه BGP/CDN و لینک‌های اختصاصی (در صورت نیاز) استفاده کنید.
  • برای مدیریت و اتوماسیون بین محیط‌های On-prem / AWS / VPS ما از SSM + Automation documents استفاده کنید و لاگ‌ها را متمرکز در CloudWatch/S3 نگهدارید.

 

گام‌های پیشنهادی برای شروع

برای مشاهده پلن‌های سرور ابری، GPU Cloud و VPS مخصوص ترید یا مشاوره فنی در انتخاب بهترین لوکیشن و پیاده‌سازی امن با AWS Systems Manager، پلن‌ها را بررسی کنید یا با تیم پشتیبانی ما تماس بگیرید تا یک معماری سفارشی و امن برای پروژه شما طراحی کنیم.

 

Часто задаваемые вопросы

Вам также может понравиться