1. 로컬 포트 포워딩이란?
로컬 포트 포워딩은 네트워크에서 데이터를 로컬 시스템의 특정 포트로 전달하고, 그 포트를 원격 서버로 연결하는 방식입니다. 이를 통해, 예를 들어 원격 서버에 있는 데이터베이스나 웹 애플리케이션을 로컬에서 마치 로컬 서버처럼 접근할 수 있습니다.
2. 로컬 포트 포워딩 기본 명령어
SSH를 사용하여 로컬 포트 포워딩을 설정할 수 있습니다. 기본적인 형식은 아래와 같습니다:
ssh -L <local-port>:<remote-host>:<remote-port> <username>@<remote-host>
- : 로컬 시스템에서 사용할 포트 번호 (예: 8080).
- : 원격 서버의 호스트명이나 IP 주소.
- : 원격 서버의 서비스 포트 (예: 3306 - MySQL, 80 - HTTP).
- : 원격 서버의 사용자 이름.
3. 사용 예시
3 - 1. MySQL 데이터베이스 접속 예시
ssh -L 3306:localhost:3306 user@remote-server
이 명령은 원격 서버의 MySQL(3306 포트)을 로컬의 3306 포트로 포워딩합니다. 이제 로컬에서 localhost:3306을 통해 MySQL에 접근할 수 있습니다.
웹 애플리케이션 접속 예시:
ssh -L 8080:localhost:80 user@remote-server
이 명령은 원격 서버의 80번 포트를 로컬의 8080번 포트로 포워딩합니다. 로컬에서 http://localhost:8080으로 웹 애플리케이션에 접근할 수 있습니다.
3 - 2. Jump Host가 있는 경우 -J
원격 서버에 직접 연결할 수 없고, 중간에 다른 서버(점프 호스트)를 통해 연결해야 할 때 사용합니다.
예를 들어, 서버 A에 직접 연결할 수 없고, 서버 B를 통해서만 연결할 수 있다면 다음과 같이 사용합니다:
ssh -J user@jump-host -L 8080:localhost:80 user@remote-server
이 명령은 먼저 jump-host에 SSH로 연결하고, 그 후 remote-server에 포워딩된 포트를 연결합니다.
3 - 2. SSH 카 파일이 있는 경우 -i
SSH 접속 시 암호 대신 SSH 키 파일을 사용하고 싶을 때 사용합니다. 예를 들어, 키 파일이 ~/.ssh/id_rsa라면 다음과 같이 입력합니다:
ssh -i ~/.ssh/id\_rsa -L 8080:localhost:80 user@remote-server
이 명령은 SSH 키 파일을 사용해 remote-server에 접속한 뒤 로컬 포트 포워딩을 설정합니다.
4. 마무리
로컬 포트 포워딩은 원격 서버의 서비스를 로컬에서 쉽게 이용할 수 있게 해주는 유용한 기능입니다. -J와 -i 옵션을 함께 사용하면, 점프 호스트를 거쳐 연결하거나 SSH 키 파일을 활용하여 보안을 강화할 수 있습니다.
'CS > Network' 카테고리의 다른 글
[Network] 다양한 API 설계 방식(REST, GraphQL, gRPC) (1) | 2024.12.09 |
---|