ssh 터널링을 이용한 원격 private database 접속

2021. 3. 3. 12:35Linux/Command-line

반응형
  1. ssh 터널링
  2. ssh tunnel background에 등록
  3. ssh tunnel을 통한 MariaDB 접속

1. ssh 터널링

ssh [option] [user@]hostname

OpenSSH SSH client에서는 ssh 접속을 위한 다양한 옵션들을 제공합니다.

원격 서버에서 서비스 중인 private 서비스를 로컬 서버에서 바로 접근하고 하고싶다면 ssh 포트 포워딩을 이용하면 됩니다.

ssh 포트 포워딩은 다른 말로 ssh 터널링이라고도 불립니다.
ssh 터널링을 하기 위해서는 아래와 같은 옵션값을 사용합니다.

  • C
    • 모든 데이터를 압축하여 Request
    • gzip와 동일한 압축 알고리즘을 사용한다.
  • N
    • remote shell 명령어를 실행하지 않고 접속을 유지한다.
    • 포트 포워딩시 사용합니다.
  • f
    • background에서 실행
  • L
    • 터널링옵션
    • [bind_address:]port:host:hostport
    • 로컬포트:원격서버:원격서버포트

2. ssh tunnel background에 등록

apple 서버에서 33306 포트로 mysql을 실행할 경우 abc 서버의 MariaDB를 실행하도록 ssh터널링 설정을 추가합니다.

[jini@apple ~]$ ssh -CNf -L 33306:127.0.0.1:3306 abc

abc 서버에 대한 포트 포워딩 접속을 유지하면서(N), background에 ssh 터널을 등록합니다(f).
abc 원격서버로 접속한 후, 127.0.0.1 서버의 3306에 접속하는 터널을 33306 포트에 등록합니다(L)
이에 대한 모든 데이터는 압축하여 명령을 요청합니다(C)

호스트 서버의 경우 ~/.ssh/config에 Host 접속정보를 등록했다면 위와같이 ssh접속할 host주소를 간략히 사용할 수 있습니다.

ssh config를 이용하여 간편하게 ssh접속하기 참고


ssh 터널 확인하기

netstat 명령어를 통해 백그라운드 상에 올려져있는 ssh 터널을 확인해볼 수 있습니다.

[jini@apple ~]$ netstat -nltp
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22222           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      -
tcp        0      0 150.95.212.203:80       0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:33306         0.0.0.0:*               LISTEN      31300/ssh
tcp6       0      0 :::22222                :::*                    LISTEN      -
tcp6       0      0 :::111                  :::*                    LISTEN      -
tcp6       0      0 :::8080                 :::*                    LISTEN      -
tcp6       0      0 ::1:25                  :::*                    LISTEN      -
tcp6       0      0 ::1:33306               :::*                    LISTEN      31300/ssh
tcp6       0      0 :::443                  :::*                    LISTEN      -
tcp6       0      0 :::8989                 :::*                    LISTEN      -
tcp6       0      0 :::9090                 :::*                    LISTEN      -
tcp6       0      0 :::33060                :::*                    LISTEN      -
tcp6       0      0 :::3306                 :::*                    LISTEN      -

3. ssh tunnel을 통한 MariaDB 접속

33306 포트를 이용하여 MariaDB 접속을 실행해봅니다.

[jini@apple ~]$ mysql -u jini -p -h 127.0.0.1 -P 33306
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.5.5-10.5.8-MariaDB MariaDB Server

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

apple서버에 설치되어있는 mysql client를 이용하여 abc서버의 MariaDB에 접속 성공하였습니다.


  • ssh 터널링을 이용한 원격 private mysql 접속
  • ssh 터널링을 이용한 원격 private mariadb 접속
  • OpenSSH ssh port forwarding 사용하기
728x90
반응형