Stworzyłem VPC w aws z publiczną podsiecią i prywatną podsiecią. Podsieć prywatna nie ma bezpośredniego dostępu do sieci zewnętrznej. Tak więc w podsieci publicznej znajduje się serwer NAT, który przekazuje cały ruch wychodzący z podsieci prywatnej do sieci zewnętrznej.
Obecnie mogę SSH z podsieci publicznej do podsieci prywatnej, a także SSH z NAT do podsieci prywatnej. Jednak chcę SSH z dowolnego komputera (laptopa domowego, biurowego i mobilnego) do instancji w prywatnej podsieci.
Przeprowadziłem badania, w których mogę skonfigurować skrzynkę NAT do przekazywania SSH do instancji w prywatnej podsieci. Ale nie mam szczęścia.
Czy ktoś może wymienić to, co muszę skonfigurować, aby było to możliwe.
Nazewnictwo to:
laptop (dowolne urządzenie poza VPC)
nat (serwer NAT w publicznej podsieci)
miejsce docelowe (serwer w prywatnej podsieci, z którą chcę się połączyć)
Nie jestem pewien, czy następujące ograniczenia są, czy nie:
„Miejsce docelowe” nie ma publicznego adresu IP, tylko adres IP podsieci, na przykład 10.0.0.1. „Miejsce docelowe” nie może połączyć się z „nat” przez publiczny nat. Istnieje kilka serwerów „docelowych”, czy muszę skonfigurować jeden dla każdego?
Dzięki
źródło
Odpowiedzi:
Możesz skonfigurować hosta bastionu, aby łączył się z dowolną instancją w twoim VPC:
http://blogs.aws.amazon.com/security/post/Tx3N8GFK85UN1G6/Securely-connect-to-Linux-instances-running-in-a-private-Amazon-VPC
Możesz wybrać uruchomienie nowej instancji, która będzie działać jako host bastionu, lub użyć istniejącej instancji NAT jako bastionu.
Jeśli utworzysz nową instancję, jako przegląd:
1) Utwórz grupę zabezpieczeń dla swojego hosta bastionu, która pozwoli na dostęp SSH z twojego laptopa (zwróć uwagę na tę grupę zabezpieczeń w kroku 4)
2) uruchom osobną instancję (bastion) w publicznej podsieci w twoim VPC
3) nadaj temu bastionowi publiczny adres IP podczas uruchamiania lub poprzez przypisanie elastycznego adresu IP
4) zaktualizuj grupy zabezpieczeń każdej z instancji, które nie mają publicznego adresu IP, aby umożliwić dostęp SSH z hosta bastionu. Można to zrobić za pomocą identyfikatora grupy zabezpieczeń hosta bastionu (sg - #####).
5) użyj przekazywania agenta SSH (ssh -A użytkownik @ publicIPofBastion), aby połączyć się najpierw z bastionem, a następnie raz w bastionie, SSH do dowolnej instancji wewnętrznej (ssh użytkownik @ private-IP-of-Internal-Instance). Przekazywanie agentów zajmuje się przekazywaniem klucza prywatnego, więc nie musi on być przechowywany w instancji bastionu ( nigdy nie przechowuj kluczy prywatnych w żadnej instancji !! )
Powyższy post na blogu AWS powinien być w stanie dostarczyć trochę drobiazgów dotyczących tego procesu. Dołączyłem również poniższe informacje na wypadek, gdybyś chciał uzyskać dodatkowe informacje na temat gospodarzy bastionu:
Koncepcja hostów bastionowych: http://en.m.wikipedia.org/wiki/Bastion_host
Jeśli potrzebujesz wyjaśnień, możesz komentować.
źródło
Jedyny sposób, w jaki mogłem sprawić, by działał.
1) Upewnij się, że grupa zabezpieczeń dla tej instancji prywatnej ma w regule wejściowej grupę zabezpieczeń z publicznej podsieci
Porty Protokół Źródło
Wszystkie Wszystkie sg-0b6616e070b9ea2d (publiczna grupa bezpieczeństwa)
2) Za pomocą poleceń proxy skonfiguruj plik konfiguracyjny ssh, aby mieć coś takiego
vim ~/.ssh/config
Uruchom
ssh privatehost
to powinno działaćźródło
Wyjaśnij: po sshd do hosta bastionu musisz ssh do hosta NAT jako użytkownik
ec2-user
. Trochę mnie to zaskoczyło, ponieważ zwykle użytkownikiem ubuntu jest ubuntu w AWS. Więc zrobiłem:Pamiętaj również, że twój ssh_bastion powinien mieć regułę wychodzącą, która zezwala na ruch do innych hostów i SG.
źródło