카테고리 없음

로컬 포트 포워딩(Local Port Forwarding)

SecuDedi 2025. 3. 20. 00:20

로컬 포트 포워딩(Local Port Forwarding) 방법

로컬 포트 포워딩은 내 컴퓨터(로컬)에서 특정 포트로 들어오는 트래픽을 SSH 터널을 통해 원격 서버의 특정 포트로 전달하는 기능입니다.


이를 통해 방화벽이나 보안 정책으로 직접 접근할 수 없는 원격 서비스(MySQL, 웹 서버 등)에 안전하게 접근할 수 있습니다.


1. 기본 로컬 포트 포워딩 명령어

 
ssh -L [로컬_포트]:[원격_주소]:[원격_포트] [사용자]@[원격_서버]

 

설명:

  • -L : 로컬 포트 포워딩 옵션
  • [로컬_포트] : 내 컴퓨터에서 사용할 포트
  • [원격_주소] : 원격 서버가 접근할 호스트 (localhost 또는 다른 서버)
  • [원격_포트] : 원격 서버에서 실제로 접근할 포트
  • [사용자]@[원격_서버] : SSH로 연결할 원격 서버 계정

2. 예제 (원격 서버 웹사이트 로컬에서 접속하기)

 
ssh -L 8080:localhost:80 user@remote-server
 

설명:

  • 8080 → 내 로컬 머신에서 사용할 포트
  • localhost → 원격 서버의 localhost (원격 서버 기준)
  • 80 → 원격 서버에서 접근할 포트 (예: 웹 서버)
  • user@remote-server → 원격 서버에 SSH로 로그인

결과:

  • 이제 브라우저에서 http://localhost:8080 입력 시, 원격 서버의 웹 페이지를 볼 수 있음

3. 원격 데이터베이스(MySQL)에 로컬에서 접속

 
ssh -L 3307:localhost:3306 user@remote-server
 

설명:

  • 로컬 포트 3307 → 내 컴퓨터에서 사용할 포트
  • 원격 포트 3306 → 원격 서버의 MySQL 포트
  • 이제 로컬에서 MySQL 클라이언트로 원격 DB에 접속 가능
     
mysql -h 127.0.0.1 -P 3307 -u user -p

4. 백그라운드에서 실행하기 (-N, -f 옵션)

로컬 포트 포워딩을 백그라운드에서 실행하고 싶다면:

ssh -L 8080:localhost:80 -N -f user@remote-server
 

옵션 설명:

  • -N : SSH 세션을 유지하되, 쉘을 실행하지 않음 (단순 포트 포워딩용)
  • -f : SSH를 백그라운드에서 실행

중지하는 방법:

ps aux | grep ssh # 실행 중인 SSH 프로세스 찾기
kill [PID] # 해당 프로세스 종료
 

5. 여러 개의 포트 포워딩 설정하기

한 번에 여러 개의 포트를 포워딩하려면, -L 옵션을 여러 번 사용하면 됩니다.

ssh -L 8080:localhost:80 -L 3307:localhost:3306 user@remote-server
 

➡️ 웹 서버(8080) + MySQL 서버(3307) 동시에 포워딩


6. 다른 원격 서버로 포워딩하기

만약 원격 서버가 아니라 원격 서버의 내부 네트워크에 있는 다른 서버로 포워딩하려면, [원격_주소]를 변경하면 됩니다.

ssh -L 8080:192.168.1.100:80 user@remote-server
 

결과:

  • 내 로컬 8080 포트 → 원격 서버 내부의 192.168.1.100:80으로 연결됨

로컬 포트 포워딩을 활용하면?

  • 방화벽이 막고 있는 서비스에 안전하게 접근
  • 원격 데이터베이스(MySQL, PostgreSQL 등)에 보안 접속
  • 원격 웹 서버에 로컬 브라우저에서 접속 가능