AWS Systems Manager kullanarak bir EC2 örneğinde uzaktan komut çalıştırma.
AWS Systems Manager'ı kullanarak EC2 sunucularında komutları güvenli ve verimli bir şekilde nasıl çalıştıracağınızı öğrenin.

AWS Systems Manager kullanarak bir EC2 örneğinde uzaktan komut çalıştırma.

Bu makale, SSH portu açmadan AWS Systems Manager kullanarak EC2 örneklerinde komutları güvenli bir şekilde nasıl çalıştıracağınızı öğretir. Ön koşulları, en iyi uygulamaları ve IAM ayarlarını inceleyerek, sunucularınızda komutları kolayca yönetebilecek ve çalıştırabileceksiniz.
0 Hisse senetleri
0
0
0
0

 

SSH bağlantısı kurmadan EC2 üzerinde komut çalıştırma nasıl yapılır?

AWS Systems Manager ile EC2 Örneğinde Uzaktan Komut Çalıştırma (Bir Yöntem) Güvenli, Ölçeklenebilir Üstelik EC2 örneklerinde komut çalıştırmak için SSH portu açmaya gerek kalmadan. Bu kılavuz, site yöneticileri, DevOps uzmanları ve ağ mühendisleri için adım adım uygulama, ön koşullar, örnek AWS CLI komutları, IAM yapılandırması ve pratik güvenlik ipuçları sunmaktadır.

 

Ön koşullar ve genel mimari

EC2 üzerinde uzaktan komut çalıştırmak için üç ana bileşen gereklidir:

  • SSM Agent, EC2'ye kurulmuş ve çalışır durumda.
  • EC2'nin, Systems Manager'a kaydolmak ve onunla iletişim kurmak için gereken minimum politikalara sahip bir IAM örnek profili vardır (AmazonSSMManagedInstanceCore).
  • SSM hizmetlerine ağ bağlantısı (SSM/EC2Messages/SSM-SessionManager için internet veya VPC uç noktaları aracılığıyla).

Mimari: AWS konsolundan veya AWS CLI/SDK komutundan kullanıcı veya komut dosyası Komutu Çalıştır Veya oturumu başlat Çağrı → Sistem Yöneticisi, EC2 üzerindeki SSM Aracısına mesaj gönderir → Aracı, komutu yürütür ve çıktıyı CloudWatch/S3'e veya çağrının sonucunu döndürür.

 

Ağ erişimiyle ilgili bir not

EC2, NAT'sız özel bir alt ağda bulunuyorsa, şunu kullanın: VPC uç noktaları İçin com.amazonaws. .ssm, ec2mesajları, ssmmessages Ve s3 Kullanmak.

 

Gerekli IAM Rolünü ve politikasını ayarlama

EC2 için bir IAM Rolü oluşturun ve AWS tarafından yönetilen politikayı ekleyin:

Güven politikası (EC2 için güven varlığı):

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

Yönetilen politikayı ekleyin: 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

Bu politika, SSM'ye kayıt olmak ve günlükleri göndermek için gereken izinleri içerir. Çıktıları S3'te depolamak veya şifreleme için KMS kullanmak için, ilgili S3 kovasına yazma ve KMS anahtarını kullanma izinlerini de eklemeniz gerekir.

Ardından bu rolü bir Örnek Profili'ne dönüştürün ve EC2'ye bağlayın.

 

Yaygın Linux dağıtımlarında SSM Agent'ın kurulumu ve kontrolü

Amazon Linux 2 için:

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

Ubuntu için (Debian paket indirme örneği):

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

Durumu kontrol edin:

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

 

Run Command ile komut çalıştırma (aws cli örneği)

Bir veya daha fazla EC2 örneğinde shell komutu çalıştırmanın hızlı yolu:

Örnek: Bir örnek üzerinde apt update ve upgrade komutlarını çalıştırmak:

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

Etikete göre hedefleme (örneğin, Role=web etiketine sahip tüm web sunucuları):

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

Bir komutun çıktısını alın:

1) send-command komutunun çıktısıyla bir CommandId elde edersiniz.

2)

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

Çıktı S3'e gönderilecekse, send-command parametrelerini şu şekilde ayarlayın: --çıktı-s3-kova-adı Ve --çıktı-s3-anahtar-öneki Belirtin.

 

Büyük komut dosyalarını çalıştırmak için pratik ipuçları

  • Komut dosyalarını S3'e yükleyin ve Çalıştır komutunda sadece... wget + Koş.
  • Tekrarlayan komut dosyaları için Eyalet Müdürü Kullanmak.
  • Tam otomasyon için SSM tarafından yönetilen parametreleri ve belgeleri (Otomasyon belgeleri) kullanın.

 

Oturum Yöneticisini Etkileşimli Erişim ve Port Yönlendirme için Kullanma

Oturum Yöneticisi, SSH olmadan etkileşimli bir kabuk sağlar ve ayrıca port yönlendirmesi de gerçekleştirebilir.

Etkileşimli bir oturum başlatmak:

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

Konsol üzerinden veya AWS CLI aracılığıyla etkileşimli kullanım için kurulum gereklidir. oturum yöneticisi eklentisi Bu bilgi istemci tarafında mevcut.

Veritabanına erişim için port yönlendirme örneği:

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

Sonra şuraya gidebilirsiniz: yerel sunucu:3307 Bağlantı kurulur ve trafik, 3306 numaralı port internete açılmadan SSM üzerinden tünellenir.

 

Çıktıları ve günlükleri yönetin (CloudWatch / S3)

Oturum Yöneticisi Tercihlerinde, tüm oturumların kaydedilmesi için CloudWatch günlüklerini veya S3 günlük kaydını etkinleştirin.

Çalıştırma komutu için çıktıyı S3'e yönlendirebilir veya CloudWatch çıktısını etkinleştirebilirsiniz:

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

 

Pratik senaryolar ve örnekler

Birden fazla bölgedeki onlarca EC2 örneğinde toplu güncelleme gerçekleştirme:

  • Etiket veya Kaynak Grubu ile hedefleme kullanın.
  • Planlama ve koordinasyon için SSM Maintenance Windows veya Patch Manager'ı kullanın.

GPU ve render sunucuları için kullanılır:

Birden fazla lokasyonda (örneğin 85'ten fazla lokasyonumuzda veya AWS bölgelerinde) konuşlandırılmış GPU sunucuları için, NVIDIA sürücülerini, CUDA'yı ve bağımlı paketleri yüklemek üzere Çalıştır Komutunu kullanın. Örnek:

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

Minimum gecikmeyle hızlı bir şekilde işlem VPS'si kurulumu:

  • SSH/22'yi açmak yerine, işlem sunucusuna güvenli bir şekilde erişmek için Oturum Yöneticisi ve Port Yönlendirme'yi kullanın.
  • Doğru konumu seçmek (broker'a doğrudan erişim yolu olan en yakın veri merkezi) ve CDN/BGP/Özel Ağ kullanmak ping süresini azaltabilir; bizde bunun daha fazla örneği var. 85'ten fazla lokasyon Dünyanın her yerinde bu ihtiyaçlara hizmet ediyoruz.

 

Güvenlik ipuçları ve en iyi uygulamalar

SSH portunu asla herkese açık hale getirmeyin.SSM düşük riskli bir alternatif olarak işlev görmektedir.

  • İtibaren en az ayrıcalıklı IAM rolleri ve kullanıcılarını kullanın. Yalnızca belirli belgelerin yürütülmesine veya parametrelere erişime izin verin.
  • Oturum Yöneticisi günlük kaydını etkinleştirin ve çıktıları KMS şifrelemesiyle S3'e veya CloudWatch'a gönderin.
  • Parametre Deposu türü için GüvenliDize Ve özel bir KMS anahtarı kullanın.
  • Oturum Yöneticisi sınırlamaları: Yalnızca belirli bir zaman diliminde veya çok faktörlü kimlik doğrulama (MFA) ile çalışacak şekilde zamanlamalar ve IAM politikaları ayarlayabilirsiniz.
  • Hassas ortamlar için, SSM için VPC uç noktalarından ve güçlü ağ ACL'lerinden ve güvenlik gruplarından yararlanın.

 

Sık karşılaşılan hatalar ve sorun giderme

  • Örnek yönetilmiyor / Kayıtlı değil: SSM Aracısının kurulu ve çalışır durumda olduğundan ve doğru IAM rolünün eklenmiş olduğundan emin olun.
  • Bağlantı zaman aşımına uğradı: Ağ yönlendirmesini, VPC uç noktalarını veya internet erişimini/NAT'ı kontrol edin.
  • S3'e çıktı gönderilirken izin reddedildi: IAM rolünün söz konusu depolama alanına yazma erişimi olmalıdır.
  • `start-session` komutu hata veriyor: İstemcide session-manager-plugin'in yüklü olduğundan ve konsolda Oturum Yöneticisi'nin etkinleştirildiğinden emin olun.

 

Özet ve hizmetlerimizden nasıl yararlanabilirsiniz?

AWS Systems Manager ile bir EC2 örneğinde uzaktan komut çalıştırmak, EC2'leri uzaktan yönetmenin, komut dosyaları çalıştırmanın, yamaları uygulamanın ve SSH kullanmadan erişim sağlamanın güvenli ve kullanışlı bir yoludur.

Bu çözüm aşağıdaki ihtiyaçlara oldukça uygundur:

  • Yapay zeka ve görüntü oluşturma için grafik sunucusu (GPU),
  • Düşük ping gereksinimine sahip, alım satım için VPS.
  • Yüksek SLA'ya sahip oyun sunucuları ve altyapısı,

Bunlar birleştirilebilir. AWS EC2 ve uluslararası sunucularımızın (85'ten fazla lokasyon) bir kombinasyonunu yönetmeniz gerekiyorsa, şunları sunuyoruz:

  • Gecikme hassasiyeti yüksek iş yükleri için en yakın konumumuzu seçin.
  • BGP/CDN ve (gerekirse) özel bağlantılar kullanın.
  • SSM + Otomasyon belgelerini kullanarak şirket içi / AWS / VPS ortamlarımız arasında yönetimi ve otomasyonu sağlayın ve logları CloudWatch/S3'te merkezi olarak saklayın.

 

Başlamak için önerilen adımlar

Alım satım işlemleri için Bulut Sunucu, GPU Bulut ve VPS planlarımızı incelemek veya en iyi konum seçimi ve AWS Systems Manager ile güvenli uygulama konusunda teknik tavsiye almak için planları gözden geçirin veya projeniz için özel, güvenli bir mimari tasarlamak üzere destek ekibimizle iletişime geçin.

 

Sıkça Sorulan Sorular

Ayrıca Şunları da Beğenebilirsiniz