✅ BASTION HOST ?
AWS에서 보안을 위해 BASTION HOST 를 통해 EC2 를 관리하게 될 때가 있다.
Bastion 호스트는 가상 프라이빗 클라우드(VPC)의 프라이빗 및 퍼블릭 서브넷에 위치한 Linux 인스턴스에 대한 보안 액세스를 제공한다.
배스천 서버는 간단하게 말해서 방화벽과 같은 역할을 하는 문지기이다.
실제 서버에 접속하기전에 반드시 거쳐야할 관문 같은 역할이라고 생각하면 된다.
위와 같이 구성되어있는 인스턴스에서 SERVER 에 있는 정보를 접근하고자 할 때 접속 방법을 설명하려고 한다.
구글링으로 명확한 접근 방법을 찾을 수가 없어 chatGPT 와 싸우다가 해결한 방법이다
⛳️ BASTION 인스턴스를 통해 SERVER 접속하기 (SSH)
접속을 위해 필요한 내용
우선 접속하기 전 알아야하는 정보들 입니다. 미리 준비하고 코드를 적어두었다가 터미널에 입력하는 것이 수월합니다.
[BASTION 인스턴스]
- 퍼블릭 IPv4 주소
- 접속 KEY(pem 파일) 경로
* KEY를 모르겠다면, ▾
AWS Cosole - EC2 - 인스턴스 - BASTION 인스턴스 연결 - SSH 클라이언트 에서도 확인가능합니다.
오른쪽 위에 있는 '연결' 을 눌러줍니다.
키와 퍼블릭 IP 를 확인할 수 있습니다.
[SERVER 인스턴스]
- 프라이빗 IPv4 주소
- 접속 KEY(pem 파일) 경로
BASTION -> SERVER 터널링 이용하여 접근하기
[BASTION (퍼블릭 IPv4)] → [SERVER (프라이빗 IPv4)] 라고 할 때,
1. 새 터미널을 열어 아래의 명령어를 통해 터널링을 엽니다.
ssh -i 'your/key/path/BASTION_KEY.pem' ubuntu@{퍼블릭 IPv4} -L 22222:{SERVER 프라이빗 IPv4}:22
ubuntu 부분은 OS 에 따라 사용자 이름이 다를 수 있습니다.
만약 pem 키 오류 발생시 path를 잘 확인하시고, 아래 게시글을 참고하여 permission 을 수정후 다시 시도해보시기 바랍니다.
2. 다시 새 터미널을 열어 아래 명령어를 통해 SERVER 에 접근합니다.
ssh -i '/your/server/key/path/SERVER_KEY.pem' ubuntu@localhost -p 22222
접속할 SERVER 키를 이용하여 localhost 22222 포트로 SERVER 에 접속할 수 있습니다.
🍀 BASTION host 로 접근 가능한 SERVER에 있는 파일 로컬에 내려받기
기본적으로 다른 곳의 파일을 주고받기 위해서는 scp 명령어를 사용합니다.
다양한 방법이 있지만 검색시 명확히 나오지 않아서 고생을 오래했습니다.
결론적으로 제가 사용한 방법을 사용하면 pem key로 접근해야하는 서버의 파일을 바로 로컬로 내려받을 수 있습니다.
준비사항
- BASTION 서버를 통한 터널링 * -L 뒤에 포트 번호 잘 기억하기
- SERVER pem KEY
- SERVER 내의 다운받을 파일 경로
- 파일이 저장될 로컬 경로
scp -i /path/to/your/SERVER_KEY.pem -P 22222 ubuntu@localhost:{원격지에 존재하는 파일 path포함 파일/} {로컬에 다운로드 받을 path}
scp -i {Pem키} -P {터널링시 연결한 포트번호} {user}@localhost:{다운로드 받을 파일} {내려받을 주소}
ssh 와 마찬가지로 -i 옵션을 통해 pem 키로 연결을 하며 배스천 서버 터널링을 통해 열었던 포트를 입력해줍니다.
ubuntu(user name) 을 통해 localhost와 연결해주고 원격지에 존재하는 파일을 경로와 함께 입력합니다.
마지막으로 다운받을 자료를 넣으면 됩니다.
명령어 실행 예시)
scp -i '/Users/chaezzing/Desktop/SERVER_KEY.pem' -P 22222 ubuntu@localhost:~/www/client.tar.gz /Users/chaezzing/Desktop/download
마지막에 입력한 경로 (download) 에 정상적으로 다운로드 된 것을 확인 할 수 있습니다.
배스천 호스트를 통해 접속할 수 있는 서버의 자료를 전송하는 방법에 대해서 알아보았습니다.
저는 ProxyJump 로 하는 방법으로 했을때에는 오류가 발생하여 위와 같은 방법으로 해결하였습니다.
다른 아이디어가 있으시다면 댓글로 공유해주세요 :)
scp 원격 파일 전송 pem
EC2 scp 파일 다운로드
터널링 원격 scp
'프로그래밍 언어 > Cloud' 카테고리의 다른 글
[AWS] AWS 서버로 프로젝트 배포 및 운영 시 알아두면 좋은 기능들 (0) | 2021.09.28 |
---|---|
[AWS] AWS 기초 인증 자격 Certified Cloud Practitioner 자격증 시험 준비 1 (0) | 2021.09.16 |