NAT 서버를 통해 VPC 프라이빗 서브넷에서 EC2 인스턴스로 SSH하는 방법 프라이빗 서브넷을 사용하여

퍼블릭 서브넷과 프라이빗 서브넷을 사용하여 AWS에서 VPC를 생성했습니다. 프라이빗 서브넷은 외부 네트워크에 직접 액세스 할 수 없습니다. 따라서 퍼블릭 서브넷에는 모든 아웃 바운드 트래픽을 프라이빗 서브넷에서 외부 네트워크로 전달하는 NAT 서버가 있습니다.

현재 공용 서브넷에서 개인 서브넷으로 SSH를 사용할 수 있으며 NAT에서 개인 서브넷으로 SSH를 사용할 수도 있습니다. 그러나 원하는 것은 모든 컴퓨터 (홈 랩톱, 사무실 컴퓨터 및 모바일)에서 프라이빗 서브넷의 인스턴스로의 SSH입니다.

개인 서브넷의 SSH를 인스턴스로 전달하기 위해 NAT 상자를 설정할 수있는 몇 가지 연구를 수행했습니다. 그러나 나는 이것을 운이 없다.

누구나 내가 이것을 가능하게하기 위해 설정해야 할 것을 나열 할 수 있습니까?

이름은 다음과 같습니다.

랩탑 (VPC 외부의 모든 장치)

nat (퍼블릭 서브넷의 NAT 서버)

대상 (연결하려는 프라이빗 서브넷의 서버)

다음은 제한 사항인지 확실하지 않습니다.

“대상”에는 공용 IP가없고 서브넷 IP 만 있습니다 (예 : 10.0.0.1) “대상”은 nat의 공용을 통해 “nat”에 연결할 수 없습니다. “대상”서버가 여러 개 있는데 각각에 대해 하나를 설정해야합니까?

감사



답변

VPC 내의 모든 인스턴스에 연결하도록 요새 호스트를 설정할 수 있습니다.

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

요새 호스트로 작동하는 새 인스턴스를 시작하거나 기존 NAT 인스턴스를 요새로 사용하도록 선택할 수 있습니다.

새 인스턴스를 작성하면 개요로 다음을 수행합니다.

1) 요새 호스트를위한 보안 그룹을 생성하여 랩톱에서 SSH 액세스를 허용합니다 (4 단계의 보안 그룹 참고)

2) VPC의 퍼블릭 서브넷에서 별도의 인스턴스 (bastion)를 시작합니다

3) 시작시 또는 탄력적 IP 할당을 통해 배스 천 호스트에게 퍼블릭 IP 제공

4) 요새 IP 호스트로부터 SSH 액세스를 허용하도록 퍼블릭 IP가없는 각 인스턴스의 보안 그룹을 업데이트하십시오. 요새 호스트의 보안 그룹 ID (sg-#####)를 사용하여 수행 할 수 있습니다.

5) SSH 에이전트 전달 (ssh -A user @ publicIPofBastion)을 사용하여 먼저 요새에 연결 한 다음 요새에 한 번 SSH를 내부 인스턴스 (ssh user @ private-IP-of-Internal-Instance)에 연결하십시오. 에이전트 전달은 개인 키 전달을 처리하므로 요새 인스턴스에 저장하지 않아도됩니다 ( 개인 키를 인스턴스에 저장하지 마십시오 !! )

위의 AWS 블로그 게시물은 프로세스와 관련하여 몇 가지 중요한 내용을 제공 할 수 있어야합니다. 요새 호스트에 대한 추가 세부 정보를 원할 경우를 대비하여 아래 내용도 포함했습니다.

요새 호스트의 개념 :
http://en.m.wikipedia.org/wiki/Bastion_host

설명이 필요하면 언제든지 의견을 말하십시오.


답변

내가 그것을 할 수있는 유일한 방법.

1)이 프라이빗 인스턴스의 보안 그룹에 인바운드 규칙에 퍼블릭 서브넷의 보안 그룹이 있는지 확인하십시오.

포트 프로토콜 소스
모두 All sg-0b6616e070b9ea2d (공개 보안 그룹)

2) 프록시 명령을 사용하여 ssh 구성 파일을 다음과 같이 구성하십시오.

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

실행 ssh privatehost 이 작동합니다


답변

간단히 설명하면 요새 요새 호스트에 ssh 한 후에는 user로 NAT 호스트에 ssh해야합니다 ec2-user. 일반적으로 우분투 사용자는 AWS에서 우분투이기 때문에 이것은 조금 나아졌습니다. 그래서 나는했다 :

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

또한 ssh_bastion은 다른 호스트 및 SG 로의 트래픽을 허용하는 아웃 바운드 규칙이 있어야합니다.