회사에서 추천받은 클라우드 용어 정리
리소스 SSH 연결, 터널링 "PuTTY" 프로그램, "plink" 프로그램, 점프호스트(Bastion 호스트)
이렇게 한묶음으로 정리가 될거같다.
1. SSH (Secure Shell)
- 원격 서버에 안전하게 접속하기위한 프로토콜
- 다른 컴퓨터에 로그인하여 터미널에서 작업을 할 수 있게해주는 기술
- 예: AWS EC2, Azure VM 등 리눅스 서버에 접속하는 경우
- ID + PWD 방식보다 공개키+개인키 방식을 많이 사용
- 클라이언트에 개인키(Private Key), 서버에 공개키(Public Key) 저장
# 접속 명령어
ssh [사용자이름]@[서버주소 또는 IP] => ssh ubuntu@3.38.123.456
└ ubuntu(서버에서 사용할 사용자 이름), 3.38.123.456(AWS EC2같은 서버의 퍼블릭 IP)
- 현재 실무에서는 MobaXterm으로 SSH를 사용
1. SSH 연결
- 로컬 컴퓨터에서 EC2 리눅스 서버에 원격으로 접속하는것
1) 구성 요소
구성 요소 | 설명 |
EC2 인스턴스 | 접속 대상 리눅스 서버 |
보안 그룹(Security Group) | port 22(SSH)가 열려있어야 한다 |
키 페어(Key Pair) | .pem 또는 .ppk 파일 – 비밀번호 대신 인증 |
공개 IP | 외부에서 접속할 수 있는 퍼블릭 IP or 도메인 |
SSH 클라이언트 | 로컬에서 접속하는 도구 (Mac/Linux: 터미널, Windows: PuTTY 등) |
✒️ 키 페어(Key Pair)
- Key 파일은 비밀번호 없이 접속할 수 있도록 도와주는 신분증
- EC2 인스턴스 생성시, 키 페어를 지정한다
- 공개키는 EC2 서버에 저장되고, 개인키(.pem)은 나의 저장소에 저장한다
2 -1 ) SSH 접속 - Mac / Linux 접속
Mac이나 Linux 환경에서는 터미널에서 ssh 명령어를 사용하여 쉽게 EC2 인스턴스(리눅스)에 접속 할 수 있다.
chmod 400 my-key.pem # 키 권한 설정
ssh -i my-key.pem ec2-user@퍼블릭IP
- -i : 키 파일 지정
- ec2-user: Amazon Linux 기본 사용자 명 (Ubuntu라면 ubuntu)
- 퍼블릭IP: EC2 인스턴스의 퍼블릭 IP 주소 입력
2 -2 ) SSH 접속 - Windows 접속
- Windows는 기본적으로 SSH 기능이 내장되어있지 않음 → 터미널 에뮬레이터를 사용하여 접속
- MobaXTerm과 PuTTY를 많이 사용한다
1️⃣ PuTTY 사용
1. EC2 인스턴스 생성 시 받은 .pem 키 파일을 → PuTTYgen 도구로 .ppk 형식으로 변환
2. PuTTY 실행 후 설정을 입력:
Host Name: ec2-user@<퍼블릭IP>
Port: 22
왼쪽 메뉴의 Connection → SSH → Auth 선택
Private key file에 .ppk 파일 경로 설정 Open 버튼 클릭 → 접속 성공시 터미널 창 뜸
3. EC2에 접속 완료
✒️ PuTTY
- 원격 서버에 접속할 수 있도록 도와주는 SSH/Telnet 클라이언트 프로그램
- 리눅스의 ssh 명령어가 없는 windows 사용자들이 EC2 서버에 접속할 때 사용
- SSH/Telnet/Serial 연결을 통해 EC2, 온프레미스, 리눅스 서버 등 원격 리눅스 시스템을 제어 할 때 사용
기능 설명 SSH 접속 리눅스 서버에 안전하게 원격 접속 지원 Talnet 접속 옛날 텍스트 기반의 접속 방식 지원 Port Forwarding(터널링) 로컬 포트를 원격서버로 연결 가능하도록 함 Key 기반의 로그인 .ppk 파일을 이용한 인증 세션 저장 자주 접속하는 서버의 정보 저장
✒️ plint(PuTTY Link)
- PuTTY의 명령어 기반 CLI 버전( SSH, Telnet, Rlogin 프로토콜을 사용하여 원격 서버에 접속할 수 있는 CLI도구)
- 스크립트, 배치, 자동화에 사용
- putty 전용 포맷인 .ppk의 키를 사용해야함 (AWS EC2의 .pem 키를 직접 사용 불가! )
→ PuTTYgen을 사용하여 .ppk로 변환해서 사용해야 함
2️⃣ MobaXterm 사용
- PuTTY보다 더 직관적인 UI를 제공
1. MobaXterm 실행 → Session 클릭 SSH 탭 선택
2. Remote host: <퍼블릭IP> 입력
3. Specify username: ec2-user 입력
4. 아래의 Use private key 옵션 체크 → .pem 파일 선택
5. 접속 시도 → 성공하면 터미널 창이 열린다
주의 사항 (공통)
- 보안 그룹 인바운드 규칙에 포트 22(SSH) 가 열려 있어야 함
- 로컬 PC의 IP가 보안 그룹에 허용되어 있어야 함
- 키 파일의 권한은 chmod 400 등으로 반드시 제한해야 함
2. 터널링 ( Tunneling )
- SSH 연결을 통해 로컬과 원격의 다른 서버(서비스)에 안전하게 접근(전달)하는 것
(VPN처럼 중간에서 데이터를 암호화하여 보안 통로를 만드는 기술)
로컬 DB(3311) ↔ 터널링 ↔ 원격 DB(45432)
- 터널링하여 서버에 직접 접속한 것처럼 데이터베이스와 통신
1) 사용하는 이유(필요성)
상황 | 예시 |
외부에서 접근이 막힌 서버에 들어가야 할 때 | 사설망에 있는 DB, 내부 웹 등 |
민감한 서비스에 안전하게 접속하고 싶을 때 | DB 관리, 웹 관리 툴 등 |
점프 호스트(중간 서버)를 거쳐야 할 때 | Bastion Host 구성 시 필수 |
2) 터널링 유형
1️⃣ 로컬 포워딩 (Local Port Forwarding)
내 로컬 포트에 요청 → SSH를 통해 원격 서버의 포트에 전달 (로컬 → 원격)
📌 사용 방식
내 PC (localhost:8888)
↘
SSH 암호화 터널
↘
원격 서버의 MySQL (db-server:3306)
예시 (MySQL 접속)
내 PC에서 DB가 열려있는 것처럼 사용 가능
ssh -i my-key.pem -L 8888:db.internal.com:3306 ec2-user@bastion-host
- 내 PC localhost:8888 에 접속하면
- SSH를 통해 db.internal.com:3306 에 안전하게 연결됨
2️⃣ 원격 포워딩 (Remote Port Forwarding)
원격 서버의 포트로 접근 → 내 PC로 전달 (원격 → 로컬)
- 로컬 개발 서버를 외부에서 테스트할 때 유용하다
ssh -R 9000:localhost:3000 ec2-user@remote-server
→ 원격 서버의 localhost:9000에 접속하면, 내 PC의 localhost:3000으로 전달됨
3️⃣ 동적 포워딩 (Dynamic Port Forwarding)
로컬 PC에서 프록시처럼 작동하는 SSH 터널
- SOCKS 프록시로 동작함
- 브라우저 프록시 설정 → 모든 트래픽을 암호화된 터널로 전달 가능
ssh -D 1080 ec2-user@remote-server
→ Chrome, Firefox 프록시 설정에서 localhost:1080 SOCKS 프록시 지정 시
모든 웹 트래픽이 암호화된 터널을 통해 전달됨 (VPN 느낌)
터널링 유형 | 설명 | 예시 |
Local Forwarding | 로컬 → 원격 포트 전달 | -L 8888:target:port |
Remote Forwarding | 원격 → 로컬 포트 전달 | -R 9000:localhost:3000 |
Dynamic Forwarding | SOCKS 프록시처럼 작동 | -D 1080 |
🛠 실무: DB 서버 터널링
- DB 서버는 사설망에 있고, 직접 접근 불가
- Bastion 서버(점프호스트)를 통해서만 접속 가능
설정 방법
ssh -i my-key.pem -L 3307:private-db:3306 ec2-user@bastion-server
→ localhost:3307 로 DB 클라이언트(MySQL Workbench 등)에서 접속 가능
정리
- Bastion 서버(Jump Host)를 이용한 SSH + 터널링은 실무에서 자주 사용
- 툴(PuTTY, MobaXterm)에서도 GUI로 터널링 설정 가능
- 터널을 사용할 땐 보안 설정(접속 포트, IP 허용 범위)을 꼭 함께 관리하자!
추가 공부
JumpHost와 Bastion Host
- 외부에서 사설망(내부망)의 서버에 접근할 수 있도록 해주는 보안용 중간 서버(SSH)
- 회사는 보안적인 이유로 외부(인터넷)에서 바로 내부 EC2, DB, 서버 등에 접근할 수 없도록 차단함
- 하지만, 외부와 내부 사이에 중간 관문(점프 호스트) 를 두고, 점프호스트를 통해서만 내부망에 접속할 수 있다
용어 | 설명 | 차이점 |
Jump Host | 내부망으로 "점프"하기 위한 중간 서버 | 주로 네트워크 용어 |
Bastion Host | 외부의 접근이 허용된 보안 게이트웨이 서버 | AWS나 클라우드 보안에서 자주 사용 |
✅ 실무에선 같은 뜻으로 사용 |
1) 사용이유 - 보안적인 이유
- 내부 리소스를 공개 인터넷에 노출하지 않기 위해
- Bastion에는 MFA, 키 인증, IP 제한, 모니터링 등 보안이 집중됨
- 터널링 또는 ProxyCommand로 내부 서버를 안전하게 사용
2) 구조
[로컬PC]
↓ (SSH)
[Bastion Host] ← 공개 서브넷 (Public Subnet)
↓ (SSH)
[Private EC2] ← 사설 서브넷 (Private Subnet)
- 로컬 PC는 인터넷을 통해 Bastion에 접속
- Bastion은 사설망에 있는 EC2 또는 DB에 SSH 접속
- 직접 사설망에 접근은 불가
Bastion EC2 | Public Subnet에 위치, 인터넷에서 접근 허용 (22포트) |
Private EC2 | Private Subnet에 위치, SSH는 오직 Bastion에서만 허용 |
Security Group 설정 | Bastion은 0.0.0.0/0 → Private EC2는 Bastion의 IP만 허용 |
3) 실무 접속 방식
(1) 단순 SSH 이중 접속
# 1단계: Bastion 접속
ssh -i bastion.pem ec2-user@bastion-ip
# 2단계: Private EC2로 SSH
ssh -i private-key.pem ec2-user@private-ec2-ip
(2) SSH 터널링 또는 ProxyCommand 사용
# SSH config 설정 ( ~/.ssh/config )
Host private-server
HostName 10.0.2.10
User ec2-user
IdentityFile ~/.ssh/private.pem
ProxyJump ec2-user@bastion-ip
예 | |
목적 | 내부망 보호 + 안전한 SSH 접속 |
위치 | 퍼블릭 서브넷 |
접근 | 외부 → Bastion → 내부 EC2 |
구성 방식 | 보안 그룹, 서브넷 분리, 키 인증 |
실무 사용 | 터널링, ProxyJump, bastion host 로그 관리 등 필수 |