Zum Hauptinhalt springen

Per SSH vom Mac auf AWS-EC2-Instanzen

Öffentliche Instanzen mit ihrem Schlüsselpaar, private über einen Bastion-Host, eine private Datenbank durch einen Tunnel: jede einmal als Profil gespeichert.

Von Lucas Russo, Entwickler von SSHive · Aktualisiert am

EC2-Instanzen gibt es in zwei Formen: öffentliche, die Sie direkt mit dem Schlüsselpaar von AWS erreichen, und private in einem VPC-Subnetz, an die nur ein Bastion-Host oder ein VPN herankommt. Dahinter steht oft eine RDS-Datenbank, die nur innerhalb der VPC antwortet. Mit dem OpenSSH-Client wird daraus ein aus dem Gedächtnis getipptes ssh -i ~/keys/app.pem -J ec2-user@bastion ec2-user@10.0.1.42. In SSHive ist jede Maschine ein Profil: der Bastion-Host einmal, jede private Instanz mit Verweis darauf und der Datenbank-Tunnel im Profil des Bastion-Hosts. Ändert sich dessen Adresse, bearbeiten Sie ein einziges Profil.

Eine öffentliche Instanz und ihre .pem-Datei

Beim Anlegen eines Schlüsselpaars gibt Ihnen AWS eine .pem-Datei. Am saubersten importieren Sie sie in SSHive einmalig: Einstellungen > SSH-Schlüssel > Schlüssel importieren öffnen und den Inhalt der Datei einfügen. SSHive bewahrt den Schlüssel dann verschlüsselt auf, und das Profil hängt nicht mehr an einer Datei im Download-Ordner. Legen Sie ein Profil mit dem öffentlichen DNS-Namen oder der IP der Instanz und dem Benutzer ihres AMI an: ec2-user bei Amazon Linux, ubuntu bei Ubuntu, admin bei Debian. Die Sicherheitsgruppe der Instanz muss Port 22 von Ihrer Adresse erlauben.

Private Instanzen über einen Bastion-Host

Anwendungsserver gehören in private Subnetze und werden über einen Bastion-Host im öffentlichen Subnetz erreicht. Legen Sie zuerst das Profil des Bastion-Hosts an (öffentliche Adresse, Benutzer, Schlüssel). Tragen Sie im Profil einer privaten Instanz deren private IP ein, öffnen Sie dann Erweiterte Optionen > Jump-Kette (Multi-Hop), wählen Sie Hop hinzufügen und dann den Bastion-Host. SSHive verbindet sich zuerst mit dem Bastion-Host und öffnet durch ihn die Sitzung zur Instanz. Jeder Hop meldet sich mit seinem eigenen Profil an, Bastion und Instanz können also verschiedene Schlüssel nutzen. Eine Kette fasst bis zu fünf Hops und ist eine Pro-Funktion. Die Jump-Host-Anleitung zeigt es Bildschirm für Bildschirm.

Eine private RDS-Datenbank aus TablePlus oder DBeaver

RDS liegt in einem privaten Subnetz, und Ihr Datenbank-Client auf dem Mac kommt nicht heran. Der Bastion-Host schon. Fügen Sie dem Profil des Bastion-Hosts einen lokalen Tunnel hinzu: lokaler Port 5432, entfernter Host mydb.xxxxxxxx.eu-west-1.rds.amazonaws.com, entfernter Port 5432. Verbinden Sie sich mit dem Bastion-Host und richten Sie TablePlus oder DBeaver mit den Zugangsdaten der Datenbank auf localhost:5432. Der Name wird auf dem Bastion-Host innerhalb der VPC aufgelöst, deshalb funktioniert es. Dieser Teil passt in die kostenlose Version: ein einzelner lokaler Tunnel auf einer direkten Verbindung.

Was hier kostenlos ist und was Pro braucht

Eine öffentliche Instanz mit ihrem Schlüssel, SFTP und der RDS-Tunnel auf dem Bastion-Host funktionieren alle in der kostenlosen Version, im Rahmen von 5 Profilen und 2 gleichzeitigen Sitzungen. Private Instanzen brauchen SSHive Pro, weil die Jump-Kette eine Pro-Funktion ist; Pro hebt außerdem die Grenzen für Profile und Sitzungen auf und ergänzt Broadcast, um denselben Befehl an eine Gruppe von Instanzen zu senden. Es kostet einmalig 14,99 €.

Häufige Fragen

Kann ich statt eines offenen Ports 22 den AWS Session Manager nutzen?+
Ja, über eine Portweiterleitung. Ist das Session-Manager-Plugin der AWS CLI auf dem Mac installiert, führen Sie im Terminal Folgendes aus: aws ssm start-session --target i-0123456789abcdef0 --document-name AWS-StartPortForwardingSession --parameters '{"portNumber":["22"], "localPortNumber":["2222"]}' Verbinden Sie dann ein SSHive-Profil mit localhost, Port 2222, mit Benutzer und Schlüssel der Instanz. Die Instanz braucht keine eingehende Regel für Port 22.
Was passiert, wenn sich die IP-Adresse der Instanz ändert?+
Stoppen und Starten gibt einer Instanz eine neue öffentliche IP und einen neuen öffentlichen DNS-Namen, sofern keine Elastic IP zugeordnet ist. Ordnen Sie den Maschinen, mit denen Sie sich oft verbinden, eine zu, oder erreichen Sie sie über den Bastion-Host per privater IP, die für die Lebensdauer der Instanz gleich bleibt. So oder so ist nur ein Profil anzupassen.
Kann ich aus SSHive Dateien nach S3 kopieren?+
SSHive spricht SSH und SFTP, nicht S3. In der SSH-Sitzung der Instanz erledigt aws s3 cp das, und mit einer zugeordneten Instanzrolle ohne Zugriffsschlüssel. Der SFTP-Bereich ist für die Platte der Instanz selbst da.

Passende SSHive-Funktionen

SSHive kostenlos für macOS testen

Holen Sie sich den All-in-one-Client für SSH, SFTP, RDP und VNC auf dem Mac. Kostenloser Download, ohne Registrierung.