SSH(Secure Shell) 터널링은 원격 서버에 명령을 실행하는 것을 넘어, 네트워크 트래픽을 암호화하여 안전하게 전달하는 터널 기능을 제공합니다. 이는 외부에서 직접 접근할 수 없는 내부망 서비스에 접속하거나, 반대로 로컬 네트워크의 서비스를 외부 인터넷에 임시로 공개할 때 매우 유용합니다. 별도의 VPN(가상 사설망) 솔루션 없이도 표준 SSH 명령만으로 보안 터널을 구축할 수 있어 개발자와 시스템 관리자에게 필수적인 기술로 꼽힙니다.
SSH 포트 포워딩은 크게 네 가지 방식으로 나뉩니다. 첫째, 로컬 포워딩(-L)은 원격 서버나 그 서버가 접근 가능한 내부 서비스를 사용자 PC의 로컬 포트에 연결합니다. 예를 들어, 외부에 노출되지 않은 원격 데이터베이스에 로컬 PC에서 직접 접속하는 경우에 사용됩니다. 이때 바스티온 호스트(Bastion Host)를 경유하여 사설망 내부의 다양한 서비스에 접근할 수 있습니다. 둘째, 원격 포워딩(-R)은 사용자 PC나 내부망의 서비스를 외부 SSH 서버의 포트에 연결하여 외부에 공개합니다. 개발 중인 로컬 웹 서버를 외부에서 데모용으로 접근하게 하거나, 홈 네트워크의 서비스를 인터넷에 연결할 때 유용합니다. 단, 외부 공개를 위해서는 SSH 서버의 `GatewayPorts` 설정을 `yes`로 변경해야 합니다.
셋째, 동적 로컬 포워딩(-D)은 로컬 SSH 클라이언트에 SOCKS 프록시를 생성하여, 하나의 SSH 연결로 원격 사설망의 여러 서비스에 유동적으로 접근할 수 있게 합니다. 이는 고정된 목적지에 연결하는 일반 로컬 포워딩과 달리, 연결할 때마다 다른 목적지 주소와 포트를 지정할 수 있어 유연성이 높습니다. 마지막으로, 동적 원격 포워딩은 원격 SSH 서버에 SOCKS 프록시를 생성하여, 원격 서버에서 클라이언트 측 네트워크 전체에 유동적으로 접근할 수 있도록 합니다. 이러한 SSH 터널링은 개발 환경 설정, 내부망 서비스 접근, 임시 서비스 공개 등 다양한 시나리오에서 보안과 편의성을 동시에 제공하는 강력한 도구로 활용될 수 있습니다.