NAT sunucusu üzerinden VPC özel alt ağında ec2 örneğine SSH nasıl


16

Genel alt ağa ve özel alt ağa sahip bir VPC oluşturdum. Özel alt ağın harici ağa doğrudan erişimi yok. Bu nedenle, genel alt ağda, tüm giden trafiği özel alt ağdan dış ağa ileten bir NAT sunucusu vardır.

Şu anda, kamu alt ağından özel alt ağa SSH, ayrıca NAT'dan özel alt ağa SSH yapabilirim. Ancak, istediğim SSH herhangi bir makineden (ev dizüstü bilgisayar, ofis makinesi ve mobil) özel alt ağdaki örneklere kadar.

Özel alt ağda SSH'yi iletmek için NAT kutusunu ayarlayabileceğim bazı araştırmalar yaptım. Ama bunun için şansım olmadı.

Herkes bunu mümkün kılmak için ne kurmak gerekir listeleyebilir.

Adlandırma:

dizüstü bilgisayar (VPC dışındaki herhangi bir cihaz)

nat (genel alt ağdaki NAT sunucusu)

hedef (bağlanmak istediğim özel alt ağdaki sunucu)

Aşağıdaki sınırlamalar olup olmadığından emin değilim:

"Hedef" in genel bir IP'si yoktur, sadece bir alt ağ ipi vardır, örneğin 10.0.0.1 "Hedef", nat'ın genel yolu ile "nat" a bağlanamaz. Birkaç "hedef" sunucu var, her biri için bir tane kurmam gerekiyor mu?

Teşekkürler


Bu bağlantı , SSH Aracı İletme yoluyla Özel Alt Ağdaki EC2 örneklerine bağlanmak için gereken adımları açıklar.
Shailender Rawat

Yanıtlar:


26

VPC'nizdeki herhangi bir örneğe bağlanmak için bir bastion ana bilgisayarı ayarlayabilirsiniz:

http://blogs.aws.amazon.com/security/post/Tx3N8GFK85UN1G6/Securely-connect-to-Linux-instances-running-in-a-private-Amazon-VPC

Tabya ana bilgisayarı olarak işlev görecek yeni bir eşgörünüm başlatmayı veya varolan NAT örneğinizi bir tabya olarak kullanmayı seçebilirsiniz.

Genel bir bakış olarak yeni bir örnek oluşturursanız:

1) bastion hostunuz için dizüstü bilgisayarınızdan SSH erişimine izin verecek bir güvenlik grubu oluşturun (4. adım için bu güvenlik grubunu not edin)

2) VPC'nizdeki genel bir alt ağda ayrı bir örnek (bastion) başlatın

3) bu bastion host'a lansman sırasında veya bir Elastik IP atayarak genel bir IP verin

4) bastion ana bilgisayarından SSH erişimine izin vermek için genel IP'si olmayan her bir örneğinizin güvenlik gruplarını güncelleyin. Bu, bastion host'un güvenlik grubu kimliği (sg - #####) kullanılarak yapılabilir.

5) önce tabana bağlanmak için SSH aracı yönlendirmesini (ssh -A user @ publicIPofBastion), sonra tabanda bir kez SSH'yi herhangi bir dahili örneğe (ssh user @ private-IP-of Internal-Instance) kullanın. Ajan iletme, özel anahtarınızı yönlendirmeye özen gösterir, böylece bastion örneğinde saklanması gerekmez ( özel anahtarları hiçbir zaman hiçbir zaman saklamayın !! )

Yukarıdaki AWS blog yazısı, süreçle ilgili bir miktar cesurca temin edebilmelidir. Bastion ana bilgisayarları hakkında ek ayrıntılar istemeniz durumunda aşağıdakileri de ekledim:

Bastion Hosts Kavramı: http://en.m.wikipedia.org/wiki/Bastion_host

Açıklığa ihtiyacınız varsa, yorum yapmaktan çekinmeyin.


3
Tabana hem gelen hem de giden SSH / 22'ye izin verdiğinizden emin olun.
user464180

Bu o kadar kritik bir nokta ki cevabın bir parçası olmalı!
Tarık

Çok yardımcı olan ancak tamamen yardımcı olmayan cevaba ek olarak, güvenlik gruplarının gelen ve giden trafiğe izin verdiğinden emin olmalıydım. İlk bakışta zaten öyle görünüyordu, ancak CloudFormation şablonunu kullandığımdan beri, özel alt ağa gelen trafik kaynağının ELB'im olduğunu fark etmemiştim. Böylece, tüm trafiğe izin verdi ancak sadece ELB'den geldi. Bunu genel alt ağımla değiştirmek sorunu çözdü.
Milan Markovic

1

Çalışmasını sağlamanın tek yolu.

1) Bu özel örnek için güvenlik grubunun gelen kuralında genel alt ağdaki güvenlik grubunun bulunduğundan emin olun

Bağlantı Noktaları Protokol Kaynağı
Tümü sg-0b6616e070b9ea2d (genel güvenlik grubu)

2) Proxy komutlarını kullanarak, ssh config dosyanızı böyle bir şeye sahip olacak şekilde yapılandırın

vim ~/.ssh/config

Host publichost
   HostName 24.123.34.45
   User ubuntu
   IdentityFile ~/mypem.pem
   ProxyCommand none
Host privatehost
   HostName 10.0.2.133
   User ubuntu
   IdentityFile ~/mypem.pem
   ProxyCommand ssh publichost -W %h:%p

Run ssh privatehost çalışması gerekir


0

Sadece açıklığa kavuşturmak için: kaleme sunucunuza ssh'd yaptıktan sonra, kullanıcı olarak NAT ana makinesine ssh yapmanız gerekir ec2-user. Normalde ubuntu kullanıcısı AWS'de ubuntu olduğu için bu beni biraz sarstı. Ben de yaptım:

laptop> ssh -A ubuntu@ssh_bastion
ssh_bastion> ssh ec2-user@nat_private_dns_or_private_ip

Ayrıca, ssh_bastion'ınızın diğer ana bilgisayarlara ve sg'lere giden trafiğe izin veren bir giden kuralı olması gerektiğini unutmayın.


Bu 'ec2_user' adı, özellikle NAT hizmeti için yapılandırılmış bir Amazon AMI'nin döndürülmesinin bir sonucu mu? Peki, 'ec2-user' özel makinede nasıl hesap aldı?
Dennis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.