게시:

원격 환경에서 Postman 등 클라이언트 소프트웨어를 사용하여 원격 서버에 요청을 보내고 싶을 때가 있다. 이러한 경우 원격 서버에 SSH로 접속하여 포트 포워딩을 설정하면 클라이언트에서 원격 서버에 요청을 보낼 수 있다. SSH 터널링에는 다양한 종류가 있으나 이번 포스팅에서는 로컬 포트 포워딩(Local Port Forwarding)에 대해서만 다룬다.

사전 준비

원격 PC에 SSH 서버가 설치되어 있어야 한다. Unix 계열 OS에서는 기본적으로 설치되어 있으므로 별도로 설치할 필요가 없으나 만약 설치되어 있지 않다면 아래 명령어로 설치할 수 있다.

sudo apt-get install openssh-server

SSH 터널링이란?

SSH 터널링은 Secure Shell (SSH) 프로토콜을 이용하여 네트워크를 안전하게 연결하는 기술이다 개발자들이 원격 서버와 안전하게 통신할 수 있도록 도와주며, 보안적인 측면에서 매우 유용하다.

SSH 터널링은 로컬 포트와 원격 포트 사이에 보안 연결을 설정함으로써 작동한다. 이를 통해 로컬 포트를 통해 원격 서버의 서비스에 접근할 수 있게 된다. 원격 서버에 직접 접속하는 대신 SSH 터널을 통해 안전하게 통신하므로 데이터가 암호화되어 중간에 누군가가 데이터를 엿볼 수 없다.

SSH 터널링의 장점

  • 보안성: SSH 터널링은 암호화된 연결을 통해 데이터를 전송하기 때문에 중간에서 데이터를 엿볼 수 없다.
  • 간편성: SSH 프로토콜은 대부분의 운영체제에서 기본적으로 지원하며, 별도의 소프트웨어 설치가 필요없다.
  • 다양한 용도: 로컬 포트 포워딩과 원격 포트 포워딩을 적절히 활용하여 다양한 용도로 활용할 수 있다.

SSH 터널링의 종류

  • 로컬 포트 포워딩: 로컬 포트를 통해 원격 서버의 서비스에 접근할 수 있도록 해준다.
  • 원격 포트 포워딩: 원격 포트를 통해 로컬 서버의 서비스에 접근할 수 있도록 해준다.
  • 다이나믹 포트 포워딩: 원격 포트 포워딩과 유사하나, 여러 개의 포트를 통해 여러 개의 서비스에 접근할 수 있도록 해준다.

원격 서버 정보 확인

SSH 터널링을 위해서는 원격 서버의 정보를 알고 있어야 한다. 이를 위해 다음 정보를 확인해야 한다.

  • 원격 서버 주소: 접속하려는 원격 서버의 IP 주소나 도메인 이름을 확인한다.
  • SSH 포트 번호: 원격 서버의 SSH 포트 번호를 확인합니다. 대부분의 경우 SSH는 기본적으로 22번 포트를 사용하지만 변경된 포트 번호가 있다면 해당 정보도 확인해야 한다.
  • SSH 사용자 이름: 원격 서버에 접속하기 위한 사용자 이름을 확인한다. 기본적으로 “root” 또는 사용자 계정 이름을 사용합니다.
  • SSH 암호 또는 키 파일: 원격 서버에 접속하기 위해서는 SSH 암호 또는 키 파일을 사용해야 한다. 대부분의 경우 암호를 입력하거나, SSH 키를 생성하여 원격 서버에 등록해야 한다.

SSH 터널링 설정하기

로컬 포트 포워딩을 설정하는 명령어는 다음과 같다.

포트 포워딩 설정

ssh -L [로컬포트]:localhost:[원격포트] [사용자이름]@[원격서버주소] -p [SSH포트번호]

예를 들어, 로컬 포트 8080을 원격 서버의 80번 포트로 포워딩하려면 다음과 같이 입력해야 한다.

ssh -L 8080:localhost:80 root@58.211.87.213 -p 22

포트 포워딩 해제

SSH 터널링을 더 이상 사용하지 않을 때는 SSH 클라이언트에서 로그아웃하면 로컬 포트 포워딩도 자동으로 해제된다. 세션을 연결한 터미널이 열려 경우에는 포트 포워딩을 해제하려면 터미널에서 Ctrl + C를 입력하면 된다.

주의사항

SSH 터널링은 보안적인 면에서 강력하지만, 사용할 때 몇 가지 주의사항과 보안적인 측면을 고려해야 한다.

포트 충돌 회피

SSH 터널링을 사용할 때 매핑 포트가 다른 응용 프로그램에서 사용 중이라면 충돌이 발생할 수 있다. 따라서 로컬 포트 포워딩을 설정할 때는 사용 중인 포트 번호를 확인하고, 충돌이 발생하지 않도록 주의해야 한다.

터널 세션 유지

SSH 터널링을 사용하는 동안에는 SSH 클라이언트를 계속 실행하고 있어야 터널 세션이 유지된다. SSH 클라이언트가 종료되면 터널링도 중단됩니다.

미사용 시 터널링 해제

SSH 터널링이 더 이상 필요하지 않은 경우, 포트 포워딩을 중지하고 터널링 세션을 닫아야 한다. 불필요한 연결이 계속되는 것을 방지하고 보안성을 유지하는데 도움이 된다.

댓글남기기