- Wie kann ich Befehle auf EC2 ausführen, ohne SSH zu öffnen?
- Voraussetzungen und Gesamtarchitektur
- Einrichtung der erforderlichen IAM-Rolle und -Richtlinie
- Installation und Überprüfung des SSM-Agenten auf gängigen Linux-Distributionen
- Ausführen von Befehlen mit Run Command (Beispiel für die AWS CLI)
- Nutzung des Sitzungsmanagers für interaktiven Zugriff und Portweiterleitung
- Ausgaben und Protokolle verwalten (CloudWatch / S3)
- Praktische Szenarien und Beispiele
- Sicherheitstipps und bewährte Verfahren
- Häufige Fehler und deren Behebung
- Zusammenfassung und Nutzung unserer Dienste
- Empfohlene Schritte für den Einstieg
- Häufig gestellte Fragen
Wie kann ich Befehle auf EC2 ausführen, ohne SSH zu öffnen?
Befehle auf einer EC2-Instanz mit AWS Systems Manager remote ausführen – Eine Methode Sicher, Skalierbar Und das ganz ohne die Notwendigkeit, einen SSH-Port zu öffnen, um Befehle auf EC2-Instanzen auszuführen. Dieser Leitfaden bietet eine schrittweise Implementierung, Voraussetzungen, Beispielbefehle für die AWS CLI, IAM-Konfiguration und praktische Sicherheitstipps für Systemadministratoren, DevOps-Experten und Netzwerktechniker.
Voraussetzungen und Gesamtarchitektur
Um Befehle auf EC2 remote ausführen zu können, sind drei Hauptkomponenten erforderlich:
- Der SSM-Agent ist auf EC2 installiert und läuft.
- EC2 verfügt über ein IAM-Instanzprofil, das die Mindestrichtlinien enthält, die für die Registrierung und Kommunikation mit dem Systems Manager erforderlich sind (AmazonSSMManagedInstanceCore).
- Netzwerkverbindung zu SSM-Diensten (über das Internet oder VPC-Endpunkte für SSM/EC2Messages/SSM-SessionManager).
Architektur: Benutzer oder Skript aus der AWS-Konsole oder AWS CLI/SDK-Befehl Befehl ausführen Oder Start-Session → Der Systems Manager sendet die Nachricht an den SSM-Agenten auf EC2. → Der Agent führt den Befehl aus und gibt die Ausgabe an CloudWatch/S3 oder das Ergebnis des Aufrufs zurück.
Ein Hinweis zum Netzwerkzugriff
Wenn sich EC2 in einem privaten Subnetz ohne NAT befindet, verwenden Sie VPC-Endpunkte Für com.amazonaws. .ssm, ec2messages, ssmessages Und s3 Verwenden.
Einrichtung der erforderlichen IAM-Rolle und -Richtlinie
Erstellen Sie eine IAM-Rolle für EC2 und weisen Sie ihr die von AWS verwaltete Richtlinie zu:
Vertrauensrichtlinie (Vertrauensentität für EC2):
{
"Version":"2012-10-17",
"Statement":[{"Effect":"Allow","Principal":{"Service":"ec2.amazonaws.com"},"Action":"sts:AssumeRole"}]
}Verwaltete Richtlinie anhängen: 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/AmazonSSMManagedInstanceCoreDiese Richtlinie umfasst die erforderlichen Berechtigungen zum Registrieren und Senden von Protokollen an SSM. Um Ausgaben in S3 zu speichern oder KMS zur Verschlüsselung zu verwenden, müssen Sie außerdem Berechtigungen zum Schreiben in diesen S3-Bucket und zur Verwendung des KMS-Schlüssels hinzufügen.
Anschließend wandeln Sie diese Rolle in ein Instanzprofil um und verbinden Sie sie mit EC2.
Installation und Überprüfung des SSM-Agenten auf gängigen Linux-Distributionen
Für Amazon Linux 2:
sudo yum install -y amazon-ssm-agent
sudo systemctl enable --now amazon-ssm-agentFür Ubuntu (Beispiel mit Debian-Paket-Download):
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-agentPrüfen Sie den Status:
sudo systemctl status amazon-ssm-agent
sudo tail -n 200 /var/log/amazon/ssm/amazon-ssm-agent.log
Ausführen von Befehlen mit Run Command (Beispiel für die AWS CLI)
Schnelle Möglichkeit, einen Shell-Befehl auf einer oder mehreren EC2-Instanzen auszuführen:
Beispiel: Ausführen von apt update und upgrade auf einer Instanz:
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-1Um nach Tag gezielt vorzugehen (z. B. alle Webserver mit dem 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-1Die Ausgabe eines Befehls abrufen:
1) Mit der Ausgabe von send-command erhält man eine CommandId.
2)
aws ssm get-command-invocation --command-id <COMMAND_ID> --instance-id i-0123456789abcdef0Wenn die Ausgabe an S3 gesendet wird, setzen Sie die Sendebefehlsparameter auf --output-s3-bucket-name Und --output-s3-key-prefix Angeben.
Praktische Tipps zum Ausführen großer Skripte
- Laden Sie die Skripte in S3 hoch und führen Sie im Befehl „Ausführen“ einfach Folgendes aus: wget + Laufen.
- Für wiederkehrende Skripte von Staatsmanager Verwenden.
- Nutzen Sie SSM-verwaltete Parameter und Dokumente (Automatisierungsdokumente) für eine vollständige Automatisierung.
Nutzung des Sitzungsmanagers für interaktiven Zugriff und Portweiterleitung
Der Session Manager ermöglicht eine interaktive Shell ohne SSH und kann auch Portweiterleitung durchführen.
Start einer interaktiven Sitzung:
aws ssm start-session --target i-0123456789abcdef0Für die interaktive Nutzung in der Konsole oder über die AWS CLI ist eine Installation erforderlich. Sitzungsmanager-Plugin Sie haben es auf dem Client.
Beispiel für Portweiterleitung zum Datenbankzugriff:
aws ssm start-session \
--target i-0123456789abcdef0 \
--document-name AWS-StartPortForwardingSession \
--parameters '{"portNumber":["3306"],"localPortNumber":["3307"]}'Dann können Sie zu localhost:3307 Die Verbindung und der Datenverkehr werden über SSM getunnelt, ohne Port 3306 zum Internet zu öffnen.
Ausgaben und Protokolle verwalten (CloudWatch / S3)
Aktivieren Sie in den Session Manager-Einstellungen die CloudWatch-Protokollierung oder die S3-Protokollierung, um alle Sitzungen zu speichern.
Für den Befehl „Run Command“ können Sie die Ausgabe nach S3 umleiten oder CloudWatch Output aktivieren:
--cloud-watch-output-config '{"CloudWatchOutputEnabled":true}'
Praktische Szenarien und Beispiele
Durchführen einer Massenaktualisierung auf Dutzenden von EC2-Instanzen in mehreren Regionen:
- Verwenden Sie Targeting mit Tags oder Ressourcengruppen.
- Nutzen Sie SSM Maintenance Windows oder Patch Manager zur Planung und Koordination.
Verwendung für GPU- und Rendering-Server:
Für GPU-Server, die an mehreren Standorten (z. B. an unseren über 85 Standorten oder in AWS-Regionen) eingesetzt werden, verwenden Sie den Befehl „Ausführen“, um NVIDIA-Treiber, CUDA und abhängige Pakete zu installieren. Beispiel:
aws ssm send-command --instance-ids "i-..." --document-name "AWS-RunShellScript" --parameters commands=["sudo apt-get install -y nvidia-driver-470","sudo reboot"]Schnelle Einrichtung eines Trading-VPS mit minimaler Latenz:
- Anstatt SSH/22 zu öffnen, verwenden Sie Session Manager und Portweiterleitung, um sicher auf den Handelsserver zuzugreifen.
- Die Wahl des richtigen Standorts (nächstgelegenes Rechenzentrum mit direktem Pfad zum Broker) und die Nutzung von CDN/BGP/Privatnetzwerken können den Ping reduzieren; wir haben mehr als Mehr als 85 Standorte Wir erfüllen diese Bedürfnisse auf der ganzen Welt.
Sicherheitstipps und bewährte Verfahren
Öffnen Sie den SSH-Port niemals öffentlich.SSM stellt eine risikoarme Alternative dar.
- Aus geringstes Privileg Verwenden Sie IAM-Rollen und -Benutzer. Erlauben Sie nur die Ausführung bestimmter Dokumente oder den Zugriff auf bestimmte Parameter.
- Aktivieren Sie die Sitzungsmanager-Protokollierung und senden Sie die Ausgaben mit KMS-Verschlüsselung an S3 oder CloudWatch.
- Für Parameter Store vom Typ SecureString Und verwenden Sie einen dedizierten KMS-Schlüssel.
- Einschränkungen des Session Managers: Sie können Zeitpläne und IAM-Richtlinien so einstellen, dass sie nur während eines bestimmten Zeitraums oder mit MFA ausgeführt werden.
- Für sensible Umgebungen sollten VPC-Endpunkte für SSM sowie starke Netzwerk-ACLs und Sicherheitsgruppen genutzt werden.
Häufige Fehler und deren Behebung
- Instanz nicht verwaltet / Nicht registriert: Überprüfen Sie, ob der SSM-Agent installiert ist und ausgeführt wird und ob die richtige IAM-Rolle zugewiesen ist.
- Verbindung unterbrochen (Zeitüberschreitung): Überprüfen Sie das Netzwerk-Routing, die VPC-Endpunkte oder den Internetzugang/NAT.
- Zugriff verweigert beim Senden der Ausgabe an S3: Die IAM-Rolle muss Schreibzugriff auf diesen Bucket haben.
- start-session gibt einen Fehler aus: Stellen Sie sicher, dass das session-manager-Plugin auf dem Client installiert ist und der Session Manager in der Konsole aktiviert ist.
Zusammenfassung und Nutzung unserer Dienste
Mit AWS Systems Manager können Sie Befehle aus der Ferne auf einer EC2-Instanz ausführen. Dies ist eine sichere und bequeme Möglichkeit, EC2-Instanzen fernzuverwalten, Skripte auszuführen, Patches einzuspielen und ohne SSH darauf zuzugreifen.
Diese Lösung passt gut zu den Bedürfnissen von:
- Grafikserver (GPU) für KI und Rendering,
- VPS für den Handel mit geringen Ping-Anforderungen,
- Spielserver und Infrastruktur mit hoher Service-Level-Vereinbarung (SLA),
Es lässt sich kombinieren. Wenn Sie eine Kombination aus AWS EC2 und unseren internationalen Servern (über 85 Standorte) verwalten müssen, bieten wir Ihnen Folgendes an:
- Bei latenzkritischen Workloads wählen Sie bitte unseren nächstgelegenen Standort.
- Nutzen Sie BGP/CDN und dedizierte Verbindungen (falls erforderlich).
- Nutzen Sie SSM + Automatisierungsdokumente, um die Kommunikation zwischen unseren On-Premise-/AWS-/VPS-Umgebungen zu verwalten und zu automatisieren und die Protokolle zentral in CloudWatch/S3 zu speichern.
Empfohlene Schritte für den Einstieg
Um unsere Cloud-Server-, GPU-Cloud- und VPS-Pläne für den Handel einzusehen oder um technische Beratung zur Auswahl des besten Standorts und zur sicheren Implementierung mit AWS Systems Manager zu erhalten, sehen Sie sich die Pläne an oder kontaktieren Sie unser Support-Team, um eine maßgeschneiderte, sichere Architektur für Ihr Projekt zu entwerfen.









