본문 바로가기
OS/Linux

SSH 터널링

by BTC_RUPY 2022. 7. 30.

안녕하세요~! BTC의 루피입니다!!🤗

 

업무과제를 진행하면서 새로운것들을 배웠는데요~

그 중 하나가 바로 SSH 터널링이라는 것입니다!!

 

저도 자세히는 잘 모르지만 이번 블르그 포스팅을 통해 조금 더 알아보고

저와 같이 SSH 터널링을 잘 모르는 분들께는 좋은 정보이지 않을까 싶어요 😊

그럼 지금 부터 같이 SSH터널링에 대해 알아볼까요?

 

SSH 프로토콜이란?

: Secure shell의 약자입니다. 네트워크 상의 다른 컴퓨터에 로그인 하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 프로토콜이다. 22번 포트를 사용한다.

 

SSH 터널링이란?

: 많은 사용자들이 SSH를 단순히 원격 접속 용도로만 사용하고 있습니다.

그러나 SSH는 기본적인 접속 기능 외에 SSH 터널링 기능을 제공합니다.

SSH 터널링은 '프록시'와 비슷한 역할을 하며, SSH의 특징 상 SSH 터널링을 통해 전달되는 데이터는 모두 암호화됩니다.

(프록시란? '대신'이라는 의미를 가지고 있다. 프로토콜에 있어 대리 응답 등에서 사용하는 개념이라고 할 수 있다.

보안상의 문제로 직접 통신을 주고 받을 수 없는 사이에서 프록시를 이용해서 중계를 하는 개념이다.)

 

SSH는 로컬원격 포트 포워딩으로 구분 된다.

 

<로컬 포트 포워딩 개념>

로컬 포트 포워딩은 로컬 포트의 연결을 다른 시스템의 원격 포트로 전달하는데 사용한다.

로컬 포트에 대한 모든 요청이 생성한 SSH 터널을 통해 원격 포트로 전송한다.

로컬에서 원격지에 SSH 터널을 직접 연결 가능할 경우 사용한다.

 

로컬에서 서버에 있는 mysql과 ssh 연결한다고 가정을 하면, 로컬 포트 포워딩은 로컬에 설치된 mysql 클라이언트의 3306포트가 연결된 ssh 터널을 거쳐 서버에 있는 mysql서버의 3306 포트와 연결한다.

이를 통해 직접 서버의 데이터베이스에 안전하게 접근할 수 있으며 요청을 보내서 서로 데이터를 주고 받을 수 있다.

 

ssh -L port1:host_name:port2 server_name

예) ssh -L 1234:127.0.0.0.1:80 1.1.1.1

해석 : 1.1.1.1 공인 아이피로 운영되는 원격지 웹서버에 ssh 터널 생성 후 127.0.0.1  서버의 80번 포트로  내부 포트 1234의 패킷을 ssh 터널을 통해 통신함.

 

로컬에서 서버에 있는 웹 서비스를 ssh 연결을 한다고 가정.

로컬 호스트 포워딩은 로컬에 설치된 웹 브라우저가 80번 포트로 운영되는 웹 서버에 연결된 ssh 터널을 거쳐 서버에 있는 웹 서버의 80 포트와 연결 된다.

이를 통해 직접 서버의 내부망 웹에 안전하게 접근할 수 있으며 요청을 보내서 서로 데이터를 주고받을 수 있다.

 

<원격 포트 포워딩 개념>

로컬 포트 포워딩과 달리 원격 포트 포워딩은 원격 서버의 연결을 로컬 서버로 포워딩하는 것을 목표한다.

이 경우는 서버간 통신에 방화벽이 있을때 유용하게 사용 가능하다.

 

ssh -R port1:host_name:port2 server_name

예 ) ssh -R 9000:localhost:80 2.2.2.2

운영되는 원격지 웹서버와 로컬 클라이언트간 ssh터널 생성 후 , 로컬 내부 9000번 포트와 원격지 80번 포트 통신 패킷을 ssh 터널을 통해 연결한다.

 

로컬에서 테스트 웹 서버를 운영해 친구에세 보여준다고 가정.

아직 공인 ip 주소를 할당하지 않았음으로 외부에서 접속이 불가능 하나 공유기에서 nat,포트 포워딩을 구성하여 해결할 수 있지만 라우터의 구성을 변경해야 하므로 번거롭다.

위 문제를 해결하기 위해 원격 포워딩을 유용하게 사용 가능하다.

 

이상 ssh 터널링에 대한 포스팅 마치겠습니다!

다음에 더 좋은 내용으로 찾아오겠습니다 😀 

 

 

'OS > Linux' 카테고리의 다른 글

xshell을 활용한 터널링  (0) 2022.08.05
[Linux]Application Config 에 대해 알아보자!  (0) 2022.08.04
tar  (0) 2022.07.25
편리한 로그 수집을 위한 Apache Log4j 소개  (0) 2022.07.17
[Linux] 리눅스 패키지 비교 (1)  (0) 2022.07.14

댓글