SSH 터널링 사용법을 알아보려고 합니다. SSH는 리눅스 서버 접근 시 사용하는 프로토콜입니다. TCP 22 포토를 사용합니다. 터널링은 일반적으로 직접 연결이 불가능한 경우에 사용합니다. 무슨 뜻이냐면요. SSH 터널링 사용법을 알아보려고 합니다. SSH는 리눅스 서버 접근 시 사용하는 프로토콜입니다. TCP 22 포토를 사용합니다. 터널링은 일반적으로 직접 연결이 불가능한 경우에 사용합니다. 무슨 뜻이냐면요.
그림에서 클라이언트는 타겟 서버에 접속하려고 합니다. 하지만 보안상 직접 접근할 수는 없습니다. 그러나 경유 서버에서 대상 서버로의 접속이 가능하다면 터널링 기능을 통해 경유 서버를 경유하여 대상 서버에 접속할 수 있습니다. 이때 대상 서버에 접근하고자 하는 프로토콜이 SSH(22/tcp)가 아니라 WEB(80/tcp)여도 상관없습니다. 예를 들면, 클라이언트로부터 경유 서버나 대상 서버에의 SSH 직접 접속은 가능하지만, 대상 서버에의 WEB 직접 접속이 불가능한 경우가 있습니다(대상 서버로부터 80 포토에의 액세스를 자신의 네트워크에서만 허가하는 경우). 이때 경유 서버에 SSH 터널링 기능을 이용하면 마치 클라이언트와 대상 서버 사이에 터널이 생성된 것처럼 직접 접근이 가능합니다. 클라이언트가 리눅스인 경우와 클라이언트가 Windows인 경우로 나누어 설명합니다. 그림에서 클라이언트는 타겟 서버에 접속하려고 합니다. 하지만 보안상 직접 접근할 수는 없습니다. 그러나 경유 서버에서 대상 서버로의 접속이 가능하다면 터널링 기능을 통해 경유 서버를 경유하여 대상 서버에 접속할 수 있습니다. 이때 대상 서버에 접근하고자 하는 프로토콜이 SSH(22/tcp)가 아니라 WEB(80/tcp)여도 상관없습니다. 예를 들면, 클라이언트로부터 경유 서버나 대상 서버에의 SSH 직접 접속은 가능하지만, 대상 서버에의 WEB 직접 접속이 불가능한 경우가 있습니다(대상 서버로부터 80 포토에의 액세스를 자신의 네트워크에서만 허가하는 경우). 이때 경유 서버에 SSH 터널링 기능을 이용하면 마치 클라이언트와 대상 서버 사이에 터널이 생성된 것처럼 직접 접근이 가능합니다. 클라이언트가 리눅스인 경우와 클라이언트가 Windows인 경우로 나누어 설명합니다.
# 리눅스 클라이언트(client) $ssh-f-N-L 10000: 10.10.10.21: 80 [email protected] # 리눅스 클라이언트(client) $ssh-f-N-L 10000: 10.10.10.21: 80 [email protected]
위 명령어 이후 경유서버의 리눅스에 대한 비밀번호를 입력해주시면 ssh로그인이 완료됩니다. 그리고 웹브라우저에서 http://localhost:10000에 접속을 하게 되면 마치 클라이언트에서 대상 서버로 웹 프로토콜을 통해서 직접 접속을 한 것처럼 웹 화면이 나타납니다. 위 명령어 이후 경유서버의 리눅스에 대한 비밀번호를 입력해주시면 ssh로그인이 완료됩니다. 그리고 웹브라우저에서 http://localhost:10000에 접속을 하게 되면 마치 클라이언트에서 대상 서버로 웹 프로토콜을 통해서 직접 접속을 한 것처럼 웹 화면이 나타납니다.
리눅스는 당연히 ssh 명령어를 사용하지만 윈도우 10에서도 cmd 창을 열고 ssh 명령어를 사용할 수 있습니다. 리눅스는 당연히 ssh 명령어를 사용하지만 윈도우 10에서도 cmd 창을 열고 ssh 명령어를 사용할 수 있습니다.
# Windows 클라이언트 C:\>ssh-L10000:10.10.21:80 [email protected] #Windows 클라이언트 C:\>ssh-L10000:10.10.21:80 [email protected]
같은 역할을 수행하는 명령어입니다. 단, ssh 옵션 값만 조금 다릅니다. 같은 역할을 수행하는 명령어입니다. 단, ssh 옵션 값만 조금 다릅니다.
만약 대상 서버가 한 대가 아닌 여러 대일 경우 -L 옵션을 주고 추가할 대상 서버 IP를 입력해 주세요. 만약 대상 서버가 한 대가 아닌 여러 대일 경우 -L 옵션을 주고 추가할 대상 서버 IP를 입력해 주세요.
# 대상 서버가 여러 개인 경우(리눅스와 윈도우동일) ssh-L10000:10.10.21:80 -L10001:10.10.22:80 -L10002:10.10.23:[email protected] # 대상 서버가 여러 개인 경우(리눅스와 윈도우동일) ssh-L10000: 10.11:80 -L10001 : 10.11 : 80 -L10002 : 10 .13 : 80linux@ 10 .11
위의 명령어를 입력하신 후에 linux 비밀번호를 입력해 주시면 10.10.10.22의 80포트는 클라이언트에서 localhost:10001에 연결이 가능하고 10.10.10.23의 80포트는 클라이언트에서 localhost:10002에 연결이 됩니다. 위의 명령어를 입력하신 후에 linux 비밀번호를 입력해 주시면 10.10.10.22의 80포트는 클라이언트에서 localhost:10001에 연결이 가능하고 10.10.10.23의 80포트는 클라이언트에서 localhost:10002에 연결이 됩니다.
# 일반화 sh-L <터널링 포트>:<대상 서버 IP>:<대상 서버 포트>-L <터널링 포트>:<대상 서버 IP>:<대상 서버 포트><경유 서버 ID>@<경유 서버 IP> #일반화 sh-L<터널링 포트 >:<대상 서버 IP”: <대상 서버 포트 >-L <터널링 포트 >: <대상 서버 IP>: <대상서버 포트 > <경유서버 ID”@ <경유서버 IP”
일반화 시킨 명령어입니다. 일반화 시킨 명령어입니다.