Ich habe eine VPC in AWS mit einem öffentlichen und einem privaten Subnetz erstellt. Das private Subnetz hat keinen direkten Zugriff auf ein externes Netzwerk. Es gibt also einen NAT-Server im öffentlichen Subnetz, der den gesamten ausgehenden Datenverkehr vom privaten Subnetz zum äußeren Netzwerk weiterleitet.
Derzeit kann ich SSH vom öffentlichen Subnetz zum privaten Subnetz, auch von NAT zum privaten Subnetz. Was ich jedoch möchte, ist SSH von jedem Computer (Heim-Laptop, Büromaschine und Handy) zu Instanzen im privaten Subnetz.
Ich habe nachgeforscht, ob ich die NAT-Box so einrichten kann, dass SSH zur Instanz im privaten Subnetz weitergeleitet wird. Aber ich habe kein Glück dafür.
Kann jemand auflisten, was ich einrichten muss, um dies zu ermöglichen.
Namen sind:
Laptop (jedes Gerät außerhalb der VPC)
nat (der NAT-Server im öffentlichen Subnetz)
Ziel (der Server im privaten Subnetz, zu dem ich eine Verbindung herstellen möchte)
Nicht sicher, ob Einschränkungen vorliegen oder nicht:
Das "Ziel" hat keine öffentliche IP, nur eine Subnetz-IP, zum Beispiel 10.0.0.1. Das "Ziel" kann keine Verbindung zu "nat" über die öffentliche IP von nat herstellen. Es gibt mehrere "Ziel" -Server. Muss ich für jeden einen einrichten?
Vielen Dank
quelle
Antworten:
Sie können einen Bastion-Host einrichten, um eine Verbindung zu einer beliebigen Instanz in Ihrer VPC herzustellen:
http://blogs.aws.amazon.com/security/post/Tx3N8GFK85UN1G6/Securely-connect-to-Linux-instances-running-in-a-private-Amazon-VPC
Sie können eine neue Instanz starten, die als Bastion-Host fungiert, oder Ihre vorhandene NAT-Instanz als Bastion verwenden.
Wenn Sie eine neue Instanz als Übersicht erstellen, werden Sie:
1) Erstellen Sie eine Sicherheitsgruppe für Ihren Bastion-Host, die den SSH-Zugriff von Ihrem Laptop aus ermöglicht (beachten Sie diese Sicherheitsgruppe für Schritt 4).
2) Starten Sie eine separate Instanz (Bastion) in einem öffentlichen Subnetz in Ihrer VPC
3) Geben Sie diesem Bastion-Host eine öffentliche IP, entweder beim Start oder durch Zuweisen einer elastischen IP
4) Aktualisieren Sie die Sicherheitsgruppen jeder Ihrer Instanzen, die keine öffentliche IP-Adresse haben, um den SSH-Zugriff vom Bastion-Host aus zuzulassen. Dies kann mithilfe der Sicherheitsgruppen-ID des Bastion-Hosts (sg - #####) erfolgen.
5) Verwenden Sie die SSH-Agentenweiterleitung (ssh-A user @ publicIPofBastion), um zuerst eine Verbindung zur Bastion und dann in der Bastion SSH zu einer beliebigen internen Instanz (ssh user @ private-IP-of-Internal-Instance) herzustellen. Die Agentenweiterleitung kümmert sich um die Weiterleitung Ihres privaten Schlüssels, damit er nicht auf der Bastion-Instanz gespeichert werden muss ( speichern Sie niemals private Schlüssel auf irgendeiner Instanz !! ).
Der obige AWS-Blogeintrag sollte in der Lage sein, einiges zu liefern, was den Prozess angeht. Ich habe auch das Folgende eingefügt, falls Sie zusätzliche Details zu Bastion-Hosts wünschen:
Konzept der Bastion Hosts: http://en.m.wikipedia.org/wiki/Bastion_host
Wenn Sie weitere Informationen benötigen, können Sie diese gerne kommentieren.
quelle
Nur so konnte ich es zum Laufen bringen.
1) Stellen Sie sicher, dass die Sicherheitsgruppe für diese private Instanz in der eingehenden Regel die Sicherheitsgruppe aus dem öffentlichen Subnetz enthält
Ports Protokoll Quelle
Alle Alle sg-0b6616e070b9ea2d (öffentliche Sicherheitsgruppe)
2) Konfigurieren Sie mithilfe von Proxy-Befehlen Ihre ssh-Konfigurationsdatei so, dass sie ungefähr so aussieht
vim ~/.ssh/config
Führen Sie
ssh privatehost
es sollte funktionierenquelle
Nur zur Verdeutlichung: Sobald Sie in Ihren Bastion-Host sshed haben, müssen Sie als Benutzer sshed in den NAT-Host
ec2-user
. Dies hat mich ein wenig übertrumpft, da der Ubuntu-Benutzer normalerweise Ubuntu auf AWS ist. So tat ich:Denken Sie auch daran, dass Ihre ssh_bastion eine ausgehende Regel haben sollte, die Datenverkehr zu anderen Hosts und SGs zulässt.
quelle