
SSH 터널, 이름은 많이 들었는데 헷갈리죠
SSH는 원격 서버에 접속할 때 다들 쓰잖아요. 그런데 SSH가 단순히 원격 셸 접속 도구가 아니라, 네트워크 트래픽을 안전하게 실어 나르는 터널 역할도 한다는 건 의외로 제대로 아는 분이 적어요. 특히 로컬 포워딩과 리모트 포워딩, 이 둘이 헷갈려서 매번 옵션을 검색하게 되죠. 오늘은 이걸 한 번에 정리해볼게요.
터널이 뭐냐면
먼저 터널이라는 개념부터요. 이게 뭐냐면, 두 컴퓨터 사이에 암호화된 비밀 통로를 하나 뚫어놓고, 그 통로 안으로 다른 네트워크 연결을 통째로 집어넣어 보내는 거예요. 산을 넘어가기 힘드니까 터널을 뚫어서 차들이 지나가게 하는 것과 똑같아요. 바깥에서 보면 그냥 SSH 연결 하나인데, 그 안에는 웹 트래픽이든 데이터베이스 연결이든 뭐든 흐를 수 있는 거죠.
로컬 포워딩(-L): 내 쪽 포트를 저쪽으로
로컬 포워딩은 옵션 -L로 쓰는데요. 상황으로 설명할게요. 회사 서버 안에서만 접근할 수 있는 데이터베이스가 있다고 해봐요. 내 노트북에서는 직접 접근이 막혀있어요. 이때 이렇게 씁니다.
ssh -L 5432:db-internal:5432 user@bastion
이건 내 노트북의 5432 포트로 들어오는 연결을, SSH 통로를 타고 bastion 서버까지 보낸 다음, 거기서 db-internal의 5432 포트로 연결해줘라는 뜻이에요. 그러면 내 노트북에서 localhost:5432로 접속하는 순간, 마치 회사 내부망에 있는 것처럼 데이터베이스를 쓸 수 있어요. 핵심은 터널의 입구가 내 쪽(로컬)에 생긴다는 거예요.
리모트 포워딩(-R): 저쪽 포트를 내 쪽으로
리모트 포워딩은 -R로 쓰고, 방향이 정반대예요. 내 노트북에서 개발 중인 웹 서버(localhost:3000)를 외부 사람에게 잠깐 보여주고 싶다고 해봐요. 그런데 내 노트북은 공인 IP가 없어서 밖에서 접근이 안 돼요. 이때 공인 IP가 있는 서버를 징검다리 삼아 이렇게 씁니다.
ssh -R 8080:localhost:3000 user@public-server
이건 public-server의 8080 포트로 누가 들어오면, 그 연결을 SSH 통로로 내 노트북까지 끌고 와서 localhost:3000으로 연결해줘라는 뜻이에요. 이제 외부 사람이 public-server:8080에 접속하면 내 노트북의 개발 서버를 보게 되죠. 터널의 입구가 원격(리모트) 쪽에 생긴다고 이해하면 됩니다.
한 끗 차이를 외우는 법
매번 헷갈리는 분들을 위한 팁이에요. -L은 내가 접속하러 가는 통로, -R은 남이 나한테 들어오는 통로라고 외우면 편해요. 즉 -L은 내가 못 가는 곳에 가고 싶을 때, -R은 못 들어오는 곳에서 들어오게 하고 싶을 때 쓰는 거죠. 여기에 더해 -D 옵션으로 동적 포워딩(SOCKS 프록시)도 있는데, 이건 브라우저 트래픽 전체를 서버를 거쳐 내보내는 간이 VPN처럼 쓸 수 있어요.
업계 맥락
요즘은 ngrok이나 Cloudflare Tunnel 같은 전용 서비스가 리모트 포워딩이 하던 일을 더 편하게 해줘요. Tailscale 같은 메시 VPN도 비슷한 문제를 풀고요. 하지만 이런 서비스들도 결국 내부적으로는 SSH 터널과 똑같은 원리로 돌아가요. 그래서 원리를 알아두면, 외부 서비스 없이 서버 한 대만 있어도 똑같은 일을 공짜로 할 수 있고, 보안 사고가 났을 때 트래픽이 어디로 흐르는지 추적할 수 있어요.
한국 개발자에게
사내 보안 정책상 바스티온 호스트(외부와 내부망 사이의 관문 서버)를 거쳐야만 DB에 접근할 수 있는 회사, 한국에 정말 많잖아요. 그럴 때 -L 포워딩 한 줄이면 GUI 툴로도 편하게 붙을 수 있어요. 다만 주의할 점, 리모트 포워딩으로 내부 서비스를 외부에 노출하는 건 보안상 위험할 수 있으니 회사 정책을 꼭 확인하고 쓰세요.
정리하면, -L은 내가 나가는 길, -R은 남이 들어오는 길이에요. 여러분은 SSH 터널, 어떤 상황에서 가장 요긴하게 써보셨나요?
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공