* 상황 요약
- AWS에서 백엔드 서버를 인터넷이 안되는 private subnet에 구성.
- 로컬 PC에서 private subnet 접속이 안되기 때문에,
public subnet 영역에 있는 Bastion server를 통해 Backend server에 SSH 접속하려는 상황.
* 일반적인 해결 방법
- Windows의 경우 mobaxterm의 jump host 기능을 이용 (무료 버전도 가능)
- Mac OS의 경우 mobaxterm이 안되기 때문에 ssh gateway(jump host) 기능을 제공하는 다른 터미널 설치 후 이용
→ 그런데 Mac OS에서 별도 프로그램 설치 없이 평소에 사용하는 iTerm을 통해 접속해보고 싶었다.
* 일반 터미널을 통한 SSH gateway(jump host) 방식
- 최초에 시도한 방법 : Bastion server에 ssh 접속 후, ssh 명령어를 통해 Backend server에 접속
→ 인증서 파일을 Bastion server에 업로드 해야한다 (하면 되는데, 보안상 좋지 않아 보임)
- 해결한 방법 :
1단계 > 터미널을 통한 ssh 접속
1. iTerm의 Profile을 새로 만든다
1) Profiles > Open Profiles > Edit Profiles 를 한다
2) 좌측 하단의 + 버튼을 눌러 새로운 Profile을 추가한다
3) Name 을 수정하고, Command 부분을 Login Shell 에서 Command로 변경하고 아래와 같은 형태로 명령어를 입력한다
// 양식
ssh -i "/<<pem파일 경로>>/<<pem파일명>>" <<계정 이름>>@<<publicIP>>
// 예시
ssh -i "/Users/jackpark/Desktop/MyKeyPair.pem" ubuntu@123.456.789.123
2. Profiles에서 방금 신규 생성한 Profile을 선택하고 새로운 터미널을 실행하면 접속 완료
2단계 > ssh gateway를 통한 proxy 접속 (bastion server를 통해 private subnet 영역의 서버 접속)
1. iTerm의 Profile을 새로 만든다
1) Profiles > Open Profiles > Edit Profiles 를 한다
2) 좌측 하단의 + 버튼을 눌러 새로운 Profile을 추가한다
3) Name 을 수정하고, Command 부분을 Login Shell 에서 Command로 변경하고 아래와 같은 형태로 명령어를 입력한다
// 양식
ssh -i "<<pem파일경로>>/<<pem파일명>>" -o "ProxyCommand ssh -W %h:%p -i "<<pem파일경로>>/<<pem파일명>>" <<bastion계정명>>@<<bastion public IP>>" <<backend(최종목적지)계정명>>@<<backend(최종목적지)private IP>>
// 예시
ssh -i "/Users/jackpark/Desktop/MyKeyPair.pem" -o "ProxyCommand ssh -W %h:%p -i "/Users/jackpark/Desktop/MyKeyPair.pem" ubuntu@123.456.789.123" ubuntu@10.0.10.85
2. Profiles에서 방금 신규 생성한 Profile을 선택하고 새로운 터미널을 실행하면 접속 완료
* 추가내용
맥OS, iTerm을 사용했지만, ssh 명령어는 Windows, putty 등
ssh가 가능한 다양한 OS, Terminal에서 모두 활용 가능하다.
*사용한 ssh 옵션
-i : identifying file 옵션 - 로컬PC의 pem 파일을 이용하기 위해 사용
-o : 사용자 정의 옵션 - ProxyCommand를 이용하기위해 사용
** 참고자료
ssh 명령어의 순서를 바꿔도 접속이 가능해보인다 -
https://stackoverflow.com/questions/19161960/connect-with-ssh-through-a-proxy
'아키텍처 Architecture > Cloud Architecture' 카테고리의 다른 글
Cloud Native Korea Community Day 2024 (4) | 2024.10.21 |
---|---|
[Ansible] 2. playbook을 이용해 WAS-DB 한 번에 띄우기 (0) | 2024.06.08 |
[Ansible] 1. Mac 로컬에서 환경 구성하기 (0) | 2024.06.08 |
[Openstack] 1. 구성 및 특징 (0) | 2024.04.02 |
AWS SAA 시험 후기 (6) | 2022.04.11 |