탄력적 IP 주소를 사용하여 AWS Transfer Family SFTP 지원 서버에 액세스하도록 하고 싶은데 리스너 포트는 포트 22를 사용할 수 없습니다.
해결 방법
포트 22는 리스너 포트로 사용할 수 없으면, 서버에 인터넷에 연결되는 엔드포인트를 생성해야 합니다.
그러나 리스너 포트를 포트 22 이외의 포트로 변경해야 하는 경우(마이그레이션의 경우) 다음 단계를 따르세요.
Amazon Virtual Private Cloud(Amazon VPC) 생성 및 IP 주소 할당
- 서버와 동일한 AWS 리전에 Amazon VPC를 생성합니다.
- 서버를 사용하고 싶은 가용 영역 내의 VPC에 서브넷을 생성합니다.
참고: AWS Transfer Family 서버 1개는 가용 영역을 3개까지 지원할 수 있습니다.
- 서버와 동일한 리전에 탄력적 IP 주소를 3개까지 할당합니다. 또는 이미 보유한 IP 주소 범위(BYOIP)를 가져오도록 선택할 수 있습니다.
참고: 탄력적 IP 주소의 개수가 서버 엔드포인트로 사용하는 가용 영역 개수와 일치해야 합니다.
내부 VPC 엔드포인트 유형을 사용하여 AWS Transfer Family SFTP 지원 서버 생성
- 다음 단계에 따라 VPC 내에서만 액세스할 수 있는 서버 엔드포인트를 생성합니다.
- 서버를 생성한 후, AWS Transfer Family 콘솔에서 서버의 세부 정보를 확인합니다. 엔드포인트 구성에서 프라이빗 IPv4 주소를 기록해둡니다. Network Load Balancer를 생성하는 단계에서 이 IP 주소가 필요합니다.
Network Load Balancer를 생성하고 서버의 VPC 엔드포인트를 로드 밸런서의 대상으로 정의
- Amazon Elastic Compute Cloud(Amazon EC2) 콘솔을 엽니다.
- 탐색 창에서 로드 밸런서를 선택하십시오.
- 로드 밸런서 생성을 선택하십시오.
- Network Load Balancer에서 생성을 선택하십시오.
- 1단계: 로드 밸런서 구성에 다음을 입력하십시오.
이름에 로드 밸런서의 이름을 입력하십시오.
체계에서 인터넷 연결을 선택하십시오.
[Listeners(리스너)]에서 [Load Balancer Protocol(로드 밸런서 프로토콜)]을 TCP로 유지하십시오. 그런 다음, 연결된 로드 밸런서 포트를 사용자 지정 리스너 포트로 변경합니다.
VPC에서 생성한 Amazon VPC를 선택합니다.
가용 영역에서 서버 엔드포인트로 사용하는 것과 동일한 VPC에서 사용할 수 있는 퍼블릭 서브넷과 연결된 가용 영역을 선택합니다.
각 서브넷의 IPv4 주소에서 할당한 탄력적 IP 주소 중 하나를 선택하십시오.
- 다음: 보안 환경 구성을 선택하십시오.
- 다음: 라우팅 구성을 선택하십시오.
- 3단계: 라우팅 구성에 다음을 입력하십시오.
대상 그룹에서 신규 대상 그룹을 선택하십시오.
이름에 대상 그룹의 이름을 입력하십시오.
대상 유형에서 IP를 선택하십시오.
프로토콜에서 TCP를 선택하십시오.
포트에 22를 입력하십시오.
참고: AWS Transfer Family 서버는 포트 22를 통한 트래픽만 지원합니다. 로드 밸런스는 포트 22를 통해 서버와 통신해야 합니다.
상태 확인 아래 프로토콜에 대해 TCP를 선택하십시오.
- 다음: 대상 등록을 선택하십시오.
- 4단계: 대상 등록에 다음을 입력하십시오.
네트워크에서 사용하려는 Amazon VPC가 선택되어 있는지 확인하십시오.
IP에 서버 엔드포인트의 프라이빗 IPv4 주소를 입력하십시오. 서버를 생성한 수 이 IP 주소를 복사했습니다.
- 목록에 추가를 선택하십시오.
- 모든 서버 엔드포인트에 대해 프라이빗 IP 주소를 입력할 때까지 10~11단계를 반복합니다.
- 다음: 검토를 선택합니다.
- 생성을 선택합니다.
서버와 로드 밸런서를 설정한 후, 클라이언트가 사용자 지정 포트 리스너를 통해 로드 밸런서와 통신합니다. 그런 다음, 로드 밸런서가 포트 22를 통해 서버와 통신합니다.
탄력적 IP 주소에서 서버에 액세스 테스트
탄력적 IP 주소 또는 Network Load Balancer의 DNS 이름을 사용하여 사용자 지정 포트를 통해 서버와 연결합니다. 예를 들어, 다음 OpenSSH 명령은 탄력적 IP 주소와 사용자 지정 포트를 사용하여 서버와 연결됩니다.
참고: **[port]**를 사용자 지정 포트로 변경합니다. 그런 다음, 192.0.2.3은 할당한 탄력적 IP 주소로 변경합니다.
sftp -i sftpuserkey -P [port] sftpuser@192.0.2.3
중요: 로드 밸런서에서 구성된 서브넷에 대한 네트워크 액세스 제어 목록(네트워크 ACL)을 사용하여 클라이언트 IP 주소에서 서버에 대한 액세스를 제어합니다. 네트워크 ACL 권한은 서브넷 수준에서 설정되므로 이 규칙은 서브넷을 사용하는 모든 리소스에 적용됩니다. 로드 밸런서의 대상 유형이 인스턴스 대신 IP로 설정되어 있기 때문에 보안 그룹을 사용하여 클라이언트 IP 주소로부터의 액세스를 제어할 수 없습니다. 즉, 로드 밸런서는 소스 IP 주소를 보존하지 않습니다. Network Load Balancer의 상태 확인에 실패할 경우, 이는 로드 밸런서가 서버 엔드포인트에 연결할 수 없음을 의미합니다. 이 문제를 해결하려면 다음을 확인하세요.
- 서버 엔드포인트의 연결된 보안 그룹이 로드 밸런서에 구성된 서브넷에서의 인바운드 연결을 허용하는지 확인하세요. 로드 밸런서는 포트 22를 통해 서버 엔드포인트에 연결할 수 있어야 합니다.
- 서버의 상태가 온라인인지 확인하세요.
관련 정보
SFTP 서버를 AWS로 완전히 전환하는 마이그레이션