Bastion Host를 사용해 프라이빗 서브넷의 EC2 Linux 인스턴스에 안전하게 연결하려면 어떻게 해야 하나요?

3분 분량
0

Bastion Host를 사용해 프라이빗 서브넷에서 실행되는 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스에 연결하려고 합니다.

간략한 설명

EC2 Linux 인스턴스에서는 SSH 키 페어 파일을 기본 인증 방법으로 사용합니다. 키 페어 파일을 사용하면 SSH 사용자 이름과 암호가 필요하지 않습니다. 보안 환경을 유지하려면 Bastion Host에 프라이빗 키를 저장하지 마세요. Bastion Host를 사용해 연결하려면 클라이언트에서 ssh-agent 전달을 사용하세요. ssh-agent를 사용하면 관리자가 프라이빗 키를 Bastion에 저장하지 않고도 Bastion에서 다른 인스턴스로 연결할 수 있습니다.

해결 방법

사전 요구 사항

  • 인터넷을 통해 호스트에 액세스하려면 VPC의 퍼블릭 서브넷에 Bastion Host가 있어야 합니다.
  • Bastion Host의 SSH 연결만 허용하도록 프라이빗 Linux 인스턴스의 보안 그룹을 구성합니다.
  • 알 수 있고 신뢰할 수 있는 IP 주소에서만 SSH 연결(TCP/22)을 허용하도록 Bastion Host의 보안 그룹을 구성합니다.

macOS나 Linux 클라이언트에서 ssh-agent 전달을 구성합니다.

참고: openssh-client 패키지는 Linux 및 macOS 배포판 대부분에 기본적으로 설치되어 있으며, 여기에 ssh-agent가 포함되어 있습니다.

1.    다음 명령을 실행해 ssh-agent를 백그라운드 시작합니다. ssh-agent가 SSH 키를 메모리에 저장합니다.

#  eval $(ssh-agent)

2.    다음 명령을 실행해 ssh-agent에 SSH 키를 추가합니다.

# ssh-add "/path/to/key.pem"

3.    다음 명령을 실행해 ssh-agent에 키가 추가되었는지 확인합니다.

# ssh-add -l

4.    다음 명령을 실행해 Bastion Host에 연결합니다. 다음 명령에서 UserBastion_Host_****IP_address를 사용 사례에 맞는 올바른 값으로 바꾸세요.

# ssh -A User@Bastion_Host_IP_Address

참고: 이전 명령에 -A 플래그를 포함했는지 확인하세요. -A 플래그를 추가하지 않으면 키가 메모리에 추가되지 않기 때문에 ssh-agent 전달이 작동하지 않습니다. 메모리에 SSH 키를 추가한 후에는 -i 플래그를 사용해 SSH 키를 지정할 필요가 없습니다. SSH에서 ssh-agent에 저장된 모든 SSH 키를 자동으로 사용하기 때문입니다.

5.    Bastion Host에 연결한 후 다음 명령을 실행해 프라이빗 Linux 인스턴스에 연결합니다. 다음 명령에서 UserPrivate_instance_IP_address를 사용 사례에 맞는 올바른 값으로 바꾸세요.

# ssh User@Private_instance_IP_address

프라이빗 인스턴스와 일치하는 프라이빗 키가 ssh-agent에 로드되면 연결에 성공합니다.

Windows 클라이언트에서 ssh-agent 전달을 구성합니다.

PuTTY(Windows용 무료 SSH 클라이언트)를 사용해 Windows에서 Linux VPC 인스턴스에 연결할 수 있습니다. SSH 에이전트 기능을 사용하려면 Pageant(SSH 인증 에이전트)를 사용하세요. Pageant에서는 프라이빗 키를 메모리에 보관합니다. Pageant를 설치한 후 PuTTY의 에이전트 전달 옵션을 사용해 프라이빗 서브넷의 인스턴스에 연결할 수 있습니다.

1.    PuTTY 다운로드 페이지에서 PuTTY와 Pageant를 다운로드 및 설치합니다.

2.    PuTTY에서는 기본적으로 SSH키용 PEM 형식을 지원하지 않습니다. PuTTY로 인스턴스에 연결하려면 PuTTYgen을 사용해 프라이빗 키를 PEM 형식에서 PuTTY 형식으로 변환합니다. PuTTY 다운로드 페이지에서 PuTTYgen을 다운로드할 수 있습니다. 자세한 내용은 PuTTYgen을 사용해 프라이빗 키 변환을 참고하세요.

3.    Pageant를 열고 프라이빗 키를 추가합니다. PuTTY 형식 키를 Pageant로 가져오려면 시작 메뉴에서 Pageant 애플리케이션을 실행합니다. 기본적으로 Pageant는 시스템 트레이에서 최소화된 상태로 열립니다.

**참고:**Pageant 아이콘이 시스템 트레이에 보이지 않으면 작업 표시줄 설정을 사용해 추가하세요. 자세한 내용은 support.microsoft.com 웹 사이트에서 작업 표시줄 알림 영역 사용자 지정을 참고하세요.

4.    SSH 키를 추가하려면 시스템 트레이에서 Pageant 아이콘을 마우스 오른쪽 버튼으로 클릭하고 키 추가를 선택합니다. 추가된 키를 보려면 시스템 트레리에서 Pageant 아이콘을 마우스 오른쪽 버튼으로 클릭하고 키 보기를 선택합니다.

5.    다음 단계에 따라 PuTTY SSH 세션을 시작하고 에이전트 전달 허용을 활성화하세요.

  • 시작 메뉴에서 모든 프로그램, PuTTY, PuTTY를 선택합니다.
  • 카테고리 창에서 세션을 선택합니다.
  • 호스트 이름 필드에서 다음 중 하나를 실행하세요.
    인스턴스의 퍼블릭 DNS 이름을 사용해 연결하려면 user-name@instance-public-dns를 입력합니다.
    인스턴스의 IPv4 주소를 사용해 연결하려면 user-name@instance-IPv4-address를 입력합니다.
  • 연결 유형, SSH를 선택하고 포트 값이 22인지 확인합니다.
  • 카테고리 창에서 연결, SSH를 확장하고 Auth를 선택합니다.
  • 에이전트 전달 허용을 선택합니다.
  • 열기를 선택합니다.

6.    Bastion에 SSH 프라이빗 키가 없어도 Bastion에서 VPC의 모든 인스턴스로 연결할 수 있습니다. 다른 인스턴스에 연결하려면 다음 명령을 사용하세요. 다음 명령에서 UserPrivate_instance_IP_address를 사용 사례에 맞는 올바른 값으로 바꾸세요.

# ssh User@Private_instance_IP_address

프라이빗 인스턴스와 일치하는 프라이빗 키가 Pageant에 로드되면 연결에 성공합니다.

AWS 공식
AWS 공식업데이트됨 10달 전