Müssen von einem Amazon EC2-Server auf einen anderen ssh

11

Grundsätzlich muss ich in der Lage sein, über SSH eine Verbindung von einer EC2- Instanz zu einer anderen herzustellen. Ich führe den Befehl aus ssh -i path-to-pem-file ec2-user@dns-address-of-ec2-instanceund es tritt eine Zeitüberschreitung auf.

Ich habe meine Sicherheitsgruppe so eingestellt, dass SSH von der öffentlichen IP-Adresse meiner zweiten EC2-Instanz eingeht, aber es funktioniert immer noch nicht. Ich weiß, dass alles in Ordnung sein sollte, denn wenn ich meinen eingehenden SSH-Verkehr auf "von überall zulassen" einstelle, kann ich ohne Probleme eine Verbindung herstellen. Außerdem kann ich problemlos von einem Heimcomputer aus eine Verbindung zur EC2-Instanz herstellen (ich habe meine IP-Adresse zur Sicherheitsgruppe hinzugefügt).

Natürlich kann ich meinen eingehenden Datenverkehr nicht offen lassen, um "von überall zuzulassen", aber ich kann keine Verbindung herstellen, wenn ich ihn nur auf die IP-Adresse der zweiten EC2-Instanz beschränke. Vielleicht ist die öffentliche IP-Adresse nicht das, was ich in die Sicherheitsgruppe einfügen sollte?


Ich kann es auch nicht pingen; es läuft nur mal ab. Hier ist das Ergebnis vonssh -vv -i path-to-pem-file ec2-user@dns-address-of-ec2-instance

OpenSSH_6.2p2, OpenSSL 1.0.1h-fips 5 Jun 2014
debug1: Reading configuration data /home/ec2-user/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 50: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to dns-address [IP Address different from public ip] port 22.
debug1: connect to address [IP Address different from public ip] port 22: Connection timed out
ssh: connect to host dns-address port 22: Connection timed out
Pompejus
quelle

Antworten:

12

EC2-Instanzen verwenden eine interne 10.X.X.XAdresse (oder eine andere Adresse, wenn eine VPC verwendet wird), und der Datenverkehr zu ihrer "öffentlichen" IP-Adresse wird einfach an die interne IP-Adresse umgeleitet. EC2-Instanzen verwenden auch einen anderen DNS-Server, auf den nicht öffentlich zugegriffen werden kann. Wenn Sie den Hostnamen der anderen EC2-Instanz auflösen, weil Sie sich im AWS- Netzwerk befinden, erhalten Sie die 10.X.X.XAdresse der Instanz anstelle der öffentlichen IP-Adresse. Dies verhindert, dass der Datenverkehr ins Internet und wieder hinein muss, was ihn schneller macht.

Selbst wenn Sie eine Whitelist nach IP-Adresse erstellen könnten, ist dies keine gute Idee, da sich im klassischen EC2-Modus sowohl Ihre interne als auch Ihre öffentliche Adresse ändern können. Die richtige Lösung ist die Whitelist nach Sicherheitsgruppen. Grundsätzlich fügen Sie der Zielsicherheitsgruppe eine Regel hinzu, die besagt, dass Port 22 von einer bestimmten Ursprungssicherheitsgruppe zugelassen werden soll.

Wenn sich beide Instanzen im selben Konto befinden, lassen Sie einfach zu sg-1234abcd(wo sg-1234abcdist die Sicherheitsgruppe, zu der die Ursprungsinstanz gehört)? Wenn sie sich auf verschiedenen Konten befinden, geben Sie die Kontonummer an, z 111122223333/sg-1234abcd. Weitere Informationen finden
Sie in der Dokumentation .

Patrick
quelle
Perfekt, genau das habe ich gesucht! Funktioniert reibungslos!
Pompeius
Wenn Sie von Sicherheitsgruppen verschiedener Konten sprechen, müssen Sie VPC-Peering durchführen, damit Sie auf sie verweisen können. Siehe hier: docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/…
Boris Strandjev
Zum Abschluss wollte ich hinzufügen, dass AWS Ihnen für eingehenden Datenverkehr zu einer VPC aus dem Internet Gebühren berechnet, der Datenverkehr innerhalb der VPC jedoch kostenlos ist, sodass das Nicht-Durchlaufen des Internets nicht nur schneller, sondern auch billiger ist.
Blueriver