Hi yoahn 개발블로그

SSH Tunneling 본문

42 SEOUL/배운 것들 정리

SSH Tunneling

hi._.0seon 2021. 7. 27. 22:26
반응형

SSH Tunneling이란?

- ssh 클라이언트와 서버 사이에 연결이 이루어지면 이를 터널링이라고 한다.

- 여기에 포트 포워딩이란 기술을 더해서 다른 어플리케이션에 접근을 할 수 있다.

- 터널링을 통해 방화벽을 우회할 수 있다

 

터널링의 종류

1. Local port forwarding

사용법: > ssh -L {port1}:{hostname}:{port2} 서버명

  • 포트번호1: 클라이언트가 검사하고 있을 포트번호
  • 포트번호 1로 데이터가 왔을 때 SSH 클라이언트가 SSH 서버로 데이터를 전송하고
    => SSH 서버는 이 데이터를 다시 호스트의 port2로 데이터를 보내준다.
    • A 컴퓨터에서 B 서버에 있는 www.test.com 사이트에 접속하려는 경우,
      A 컴퓨터에서 웹서핑을 못하도록 80포트를 막아놓았을 경우, SSH 포트인 22번 포트가 열려있고, B서버에 ssh 서버가 동작하고 있다면 ssh 터널링을 통해 80포트가 아닌 다른 포트로 포워딩하여 우회 접속이 가능하다.

2. Remote port forwarding

> ssh -R {port1}:{hostname}:{port2} 서버명

  • 이때 포트번호1은 ssh 서버가 검사하고 있게 되고,
    여기로 데이터가 왔을 때 ssh 클라이언트에게 데이터를 전송하고
    클라이언트는 호스트명의 포트번호2로 데이터를 전송한다.

 

AWS 인스턴스 접근을 하기 전에 bastion 서버를 띄워놓고, bastion에서 ec2 인스턴스로 접근하는 과정을 거쳤었다.

 

서버명은 기존에 내가 aws ec2 인스턴스에 접근하기 위한 bastion 서버 주소가 되고, hostname은 bastion 서버에서 접근할 인스턴스의 주소가 된다. port2는 (hostname)접근하려고 하는 서비스에 연결된 포트번호이고 port1은 로컬에서 사용할 포트번호가 된다.

 

3. MySQL SSH Tunneling으로 연결하기

$ ssh -N -L 3336:127.0.0.1:3306 {USER}@{SERVER_IP}

  • -N: SSH에 원격 명령을 실행하지 않도록 지시합니다.
  • -L 3336:127.0.0.1:3306 : 로컬 포트 포워딩 생성. 로컬 포트(3336), 목적지 IP(127.0.0.1), 원격 포트(3306)는 콜론으로 구분된다.
  • {USER}@{SERVER_IP}: 원격 SSH 사용자 이름, 서버 ip 주소
  • 명령을 백그라운드에서 실행하려면 -f 옵션을 사용
  • SSH 서버가 (기본값)22가 아닌 포트에서 수신 중인 경우 -p [PORT_NUMBER] 옵션을 사용하여 포트를 지정
  • 명령을 실행하면 SSH 사용자 암호를 입력하라는 메시지가 표시됩니다. 입력한 후 서버에 로그인하고 SSH 터널이 설정됩니다. SSH 키 기반 인증을 설정하는 것이 좋습니다. 암호를 입력하지 않고 서버에 연결합니다.
  • https://linuxize.com/post/how-to-setup-passwordless-ssh-login/

 

https://linuxize.com/post/mysql-ssh-tunnel/

 

반응형
Comments