- Published on
ssh 터널링 putty 설정과 활용 방법
- Authors

- Name
- Indo Yoon
PuTTY의 SSH 터널링은 SSH 연결을 암호화된 통로로 활용해 직접 닿기 어려운 서비스에 접근하는 기능이에요. 로컬 포워딩은 내 PC에서 원격 서비스로, 원격 포워딩은 원격 서버에서 내 쪽 서비스로, 동적 포워딩은 SOCKS 프록시처럼 연결을 중계할 때 사용해요. 이 글은 PuTTY 공식 문서의 포트 포워딩 설명을 기준으로 설정 절차와 선택 기준을 정리해요.
한눈에 보기
PuTTY에서 SSH 터널링을 다룰 때 먼저 기억할 점은 터널이 SSH 세션에 묶여 있다는 점이에요. PuTTY 창을 닫거나 네트워크가 끊기면 포워딩도 함께 멈춰요. 그래서 운영 환경에서는 터널을 임시 디버깅 수단으로 쓰고, 상시 접근이 필요하면 별도의 세션 유지와 재접속 절차를 마련하는 편이 안전해요.
- PuTTY는 SSH 클라이언트이며 터널링 설정은 세션 설정의 Connection > SSH > Tunnels 화면에서 해요.
- 로컬 포워딩은 내 PC의 로컬 포트를 SSH 서버 너머 대상으로 연결해요.
- 원격 포워딩은 SSH 서버의 포트를 내 PC 또는 내가 지정한 대상으로 연결해요.
- 동적 포워딩은 로컬 포트를 SOCKS 프록시처럼 열어 여러 목적지를 유연하게 처리해요.
- 터널은 PuTTY 세션이 살아 있는 동안만 유지되며, 세션이 끊기면 포워딩도 종료돼요.
SSH 터널링과 PuTTY의 역할
SSH 터널링은 SSH 프로토콜이 제공하는 암호화와 인증을 그대로 이용하면서, 그 안에 다른 TCP 연결을 실어 보내는 방식이에요. 예를 들어 사내망에만 열린 데이터베이스나 관리 화면이 있다면, 외부에서 접근 가능한 SSH 서버를 경유해 그 서비스에 닿을 수 있어요. 이때 SSH 서버는 중계 지점이 되고, PuTTY는 내 PC에서 그 중계 지점까지의 SSH 연결과 로컬 포워딩을 담당해요.
PuTTY는 GUI 기반 SSH 클라이언트로, 세션 설정 화면에서 포워딩 규칙을 추가하고 저장할 수 있어요. 같은 기능을 명령줄에서 자동화하려면 PuTTY 패키지에 포함된 plink를 사용할 수 있고, OpenSSH 클라이언트에서는 ssh 명령의 포워딩 옵션으로 같은 개념을 구현할 수 있어요. 중요한 것은 도구 이름이 아니라 연결 방향과 바인딩 위치를 정확히 이해하는 일이에요.
로컬·원격·동적 포워딩 비교
세 가지 포워딩은 “어디에서 연결이 시작되고, 어디에 포트가 열리는가”에서 차이가 나요. 아래 표는 PuTTY 설정 화면에서 어떤 항목을 기준으로 구분하면 되는지 정리한 것이에요.
| 구분 | 연결 방향 | 대표 사용 상황 | PuTTY 설정 핵심 |
|---|---|---|---|
| 로컬 포워딩 | 내 PC의 로컬 포트에서 SSH 서버 너머 대상으로 연결 | 사내 데이터베이스나 내부 관리 화면에 내 PC에서 접근 | Source port에 로컬 포트, Destination에 대상 호스트와 포트, Local 선택 |
| 원격 포워딩 | SSH 서버의 포트에서 내 PC 또는 내가 지정한 대상으로 연결 | 외부에서 서버를 거쳐 내 쪽 테스트 서비스에 접근 | Source port에 원격 포트, Destination에 로컬 대상, Remote 선택 |
| 동적 포워딩 | 로컬 포트를 SOCKS 프록시로 열고 목적지는 클라이언트가 결정 | 여러 목적지를 하나의 프록시 설정으로 유연하게 접근 | Source port에 로컬 프록시 포트, Dynamic 선택 |
로컬 포워딩은 “내가 서버 쪽으로 들어가는” 형태이고, 원격 포워딩은 “서버가 내 쪽으로 들어오는” 형태라고 이해하면 방향이 덜 헷갈려요. 동적 포워딩은 목적지를 미리 고정하지 않고 애플리케이션이 SOCKS 프록시에 목적지를 알려 주는 방식이에요.
PuTTY로 로컬 포워딩 설정하는 단계
로컬 포워딩은 가장 자주 쓰이는 형태예요. 내 PC에서만 접근하면 되는 내부 서비스라면 로컬 포워딩으로 충분한 경우가 많아요.
- PuTTY를 실행하고 Session 화면에서 접속할 SSH 서버의 호스트 이름과 포트를 입력해요.
- Connection > SSH > Tunnels 화면으로 이동해요.
- Source port에 내 PC에서 사용할 로컬 포트를 적어요. 이미 사용 중이 아닌 비어 있는 포트를 골라야 해요.
- Destination에 SSH 서버에서 접근할 대상 호스트와 포트를 host:port 형식으로 적어요.
- Local 라디오 버튼을 선택하고 Add를 눌러 포워딩 목록에 추가해요.
- Session 화면으로 돌아가 설정을 저장하거나 Open으로 접속해요.
- 접속한 뒤 로컬 주소와 로컬 포트로 대상 서비스에 접근되는지 확인해요.
이때 Destination은 “내 PC에서 보이는 주소”가 아니라 “SSH 서버에서 보이는 주소”라는 점이 중요해요. SSH 서버가 대상 호스트 이름을 해석할 수 있어야 하고, 대상 서비스까지의 네트워크 경로와 방화벽도 서버 기준으로 열려 있어야 해요. 로컬 포워딩이 실패하면 SSH 접속 자체보다 Destination 해석과 서버 쪽 접근 가능성을 먼저 확인하는 편이 좋아요.
PuTTY로 원격 포워딩과 동적 포워딩 설정하기
원격 포워딩은 SSH 서버의 포트를 열어 두고, 그 포트로 들어온 연결을 내 PC나 내가 지정한 대상으로 전달하는 방식이에요. PuTTY의 Tunnels 화면에서 Source port에 원격 서버에 열 포트를 적고, Destination에 전달할 로컬 대상 주소를 적은 뒤 Remote를 선택해요. 이 방식은 외부에서 바로 접근할 수 없는 내 쪽 테스트 서비스를 서버를 경유해 확인할 때 유용해요. 다만 SSH 서버의 GatewayPorts 설정과 방화벽에 따라 원격 포트가 외부 인터페이스에 열리지 않을 수 있어요.
동적 포워딩은 PuTTY의 Tunnels 화면에서 Source port에 로컬 프록시 포트를 적고 Dynamic을 선택해요. 접속 후에는 SOCKS 프록시를 지원하는 브라우저나 도구에서 그 로컬 포트를 프록시로 지정해요. 목적지를 매번 포워딩 규칙으로 추가하지 않아도 되지만, 애플리케이션이 SOCKS 프록시를 지원해야 하고 프록시 설정을 사용하는 범위를 명확히 관리해야 해요.
상황별 선택 기준
내 PC에서만 내부 서비스에 접근하려면 로컬 포워딩이 가장 단순해요. 반대로 외부 협업자나 다른 서버가 내 쪽 서비스에 접근해야 한다면 원격 포워딩을 검토할 수 있지만, 포트 노출 범위와 인증 정책을 함께 점검해야 해요. 여러 목적지를 한 번에 다루거나 브라우저에서 여러 내부 주소를 오가야 한다면 동적 포워딩이 편리해요.
운영 자동화나 반복 작업에는 PuTTY GUI보다 plink나 OpenSSH 클라이언트의 포워딩 옵션이 적합할 수 있어요. 다만 어떤 도구를 쓰든 터널은 임시 통로라는 점이 같아요. 상시 운영에 터널을 사용한다면 세션 감시, 재접속, 포트 충돌, 접근 로그를 함께 설계해야 해요.
주의할 점
터널은 SSH 세션에 종속되므로 PuTTY 창을 닫으면 바로 끊겨요. 장시간 작업을 한다면 연결 유지 설정을 확인하고, 끊겼을 때 다시 연결할 절차를 문서화해 두는 편이 좋아요. 로컬 포워딩에서 다른 호스트의 접속까지 허용하는 옵션은 기본적으로 쓰지 말고, 꼭 필요할 때만 범위를 제한해 사용해야 해요.
원격 포워딩은 SSH 서버의 설정과 방화벽에 영향을 받아요. 서버가 원격 포트를 어느 인터페이스에 바인딩하는지, 외부 접근을 허용하는지 확인하지 않으면 의도와 다르게 동작할 수 있어요. 또한 터널을 조직의 접근 통제를 우회하는 용도로 사용하면 안 되며, 키 인증과 호스트 키 확인, 최소 권한 원칙을 지키는 것이 기본이에요.
자주 묻는 질문
PuTTY 터널은 PuTTY 창을 닫아도 유지되나요?
아니요. PuTTY의 터널은 해당 SSH 세션이 유지되는 동안만 동작해요. 창을 닫거나 연결이 끊기면 포워딩도 함께 종료되므로, 지속적인 운영이 필요하면 세션 유지 방법과 재접속 절차를 함께 마련해야 해요.
로컬 포워딩과 원격 포워딩은 무엇이 다른가요?
로컬 포워딩은 내 PC에서 시작한 연결을 SSH 서버 너머로 보내고, 원격 포워딩은 SSH 서버에서 시작한 연결을 내 쪽이나 다른 대상으로 보내요. 그래서 내가 접근하는 위치와 상대가 접근하는 위치가 반대라고 이해하면 쉬워요.
동적 포워딩은 언제 쓰나요?
여러 목적지를 하나의 로컬 프록시로 처리하고 싶을 때 사용해요. PuTTY에서 동적 포워딩을 켜면 로컬 포트가 SOCKS 프록시처럼 동작하므로, SOCKS를 지원하는 브라우저나 도구에서 해당 포트를 지정해 접근해요.
원격 포워딩이 안 될 때 무엇을 확인해야 하나요?
SSH 서버의 GatewayPorts 설정과 방화벽, 원격 포트의 사용 여부를 확인해요. 서버가 원격 포트를 외부 인터페이스에 열도록 허용하지 않으면 localhost에만 바인딩될 수 있어요.
출처
관련 운영 글로 SSH 터널링 운영 체크리스트를 함께 읽어 보세요. 세션 유지와 포트 충돌, 접근 제어를 운영 관점에서 점검할 수 있어요.