Private Subnet에 있는 EC2 인스턴스에 SFTP 연결을 해 봤습니다.
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 Private Subnet에 있는 EC2 인스턴스에 SFTP 연결을 해 봤습니다.
먼저 Private Subnet에 있는 EC2 인스턴스에 연결하기 위해 SSM 포트포워딩을 사용할 생각입니다.
첫 번째 패턴
먼저 첫 번째 패턴으로는 Public Subnet에 NAT Gateway를 생성하고, 로컬 환경에서 Private Subnet의 EC2 인스턴스로 SSM 포트포워딩을 실시합니다.
SSM 포트포워딩을 실시했다면, 로컬 PC에서 SFTP를 통한 파일 전송이 되는지 확인해 봅시다.
SSM을 이용한 접속이 되기 때문에 EC2 인스턴스의 보안 그룹은 존재하지 않는 1.2.3.4/32 라는 IP 주소를 설정합니다.
이어서 SSM 포트포워딩을 사용하기 위해 로컬 PC에 AWS CLI 환경을 준비합니다. 상세한 내용은 아래 블로그를 참고해 주세요.
준비가 다 끝났다면, 포트포워딩을 실시합니다.
aws ssm start-session --target i-05bae50ad64191f26 --document-name AWS-StartPortForwardingSession --parameters "portNumber=22,localPortNumber=13389"
- i-05bae50ad64191f26 : EC2 인스턴스 ID
- portNumber=22 : 접속하고자 하는 EC2 인스턴스의 포트
- localPortNumber : 로컬 환경에서 사용하고자 하는 포트
ssh -i "test-key.pem" -p 13389 ec2-user@localhost
Last login: Mon Dec 16 02:38:01 2024 from localhost
이어서 또 다른 터미널 환경을 열어서 SSH 접속을 시도해 보면, EC2 인스턴스에 접속할 수 있습니다.
이제 SSH 접속을 확인했으니 SFTP 파일을 전송해 봅시다.
현재 Mac을 사용하고 있으므로 SFTP 전송 프로그램으로는 Cyberduck을 사용할 생각입니다. Cyberduck 설치 방법에 대해서는 아래 블로그를 참고해 주세요.
SSM의 포트포워딩은 SSH 기반으로 작동하므로, FTP 대신 SFTP를 사용해야 하므로, Cyberduck에서 SFTP를 선택하고, 서버, 포트, 사용자 이름을 입력하고 EC2 인스턴스의 키 페어를 선택한 다음 연결합니다.
마지막으로 테스트 파일을 업로드해 보면, 성공적으로 EC2 인스턴스에 파일이 업로드된 것을 확인할 수 있습니다.
두 번째 패턴
두 번째 패턴으로는 Public Subnet에 발판 서버를 생성하고, 이 발판 서버를 이용하여 포트포워딩하는 것입니다.
이렇게 발판 서버를 이용하여 포트포워딩을 했다면 로컬 환경에서 SFTP 연결을 할 수 있을 것입니다.
먼저 EC2 인스턴스의 보안 그룹은 첫 번째 패턴과 달라집니다.
Public Subnet의 발판 서버 보안 그룹에는 접속하고자 하는 사용자의 IP(내 IP)를 설정합니다.
Private Subnet의 EC2 인스턴스 보안 그룹에는 발판 서버에서만 접속이 가능하도록 발판 서버의 보안 그룹을 설정합니다.
보안 그룹 설정이 끝났다면, Private Subnet으로 포트포워딩하여 SFTP 연결을 시도합시다.
ssh -i "test-key.pem" -L 8080:10.0.138.22:22 ec2-user@13.114.223.236
- test-key.pem : EC2 인스턴스의 키 페어
- 8080 : 로컬 환경에서 사용하고자 하는 포트
- 10.0.138.22:22 : Private Subnet의 EC2 인스턴스IP와 포트
- ec2-user@13.114.223.236 : Public Subnet의 EC2 인스턴스 사용자와 IP
ssh -i "test-key.pem" -L 8080:10.0.138.22:22 ec2-user@13.114.223.236
[ec2-user@ip-10-0-12-196 ~]$
해당 명령어를 이용하면 포트포워딩에 성공하며, EC2 인스턴스로 접속이 됩니다.
이어서, 조금 전과 동일하게 Cyberduck을 이용하여 SFTP 접속을 시도합시다.
첫 번째 패턴에서 업로드 했던 파일이 표시되며, SFTP 연결에 성공한 것을 확인할 수 있습니다.
본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 jaewookkim533@yahoo.com로 보내주시면 감사하겠습니다.