데이터베이스 클라이언트 도구에서 다단계 SSH로 데이터베이스에 연결하고 싶습니다.

하고 싶은 일





이런 느낌의 발판이 복수 있는 다단의 SSH로 데이터베이스에 접속하러 가는 구성으로,
수중의 Windows 10 클라이언트에 인스톨 한 데이타베이스 클라이언트 툴(Oracle SQL Developer라든지 MySQL Workbench)로부터 직접 DB를 보러 가고 싶다.

SSH 포트 포워딩



데이터베이스 클라이언트 도구는 단지 한 단계만 밟을 수 있으므로 SSH 포트 포워딩을 수행하여 로컬 클라이언트의 포트를 데이터베이스에 간접적으로 연결합니다.

편의적으로 각 서버의 연결 정보를 정의합니다.


호스트
IP 주소/도메인
포트


EC2(Bastion)
AAA.AAA.AAA.10
22

EC2(Web/AP)
BBB.BBB.BBB.11
22

RDS(Oracle)
oracle.xxxxxxxxx.ap-northeast-1.rds.amazonaws.com
1521년

RDS(MySQL)
mysql.xxxxxxxxx.ap-northeast-1.rds.amazonaws.com
3306


사용자 디렉토리 바로 아래에 .ssh 폴더를 만듭니다.
도중 포트 포워드 구성 파일을 만듭니다.

.ssh\config
Host bastion
  hostname AAA.AAA.AAA.10
  port 22
  user ec2-user
  IdentityFile C:\Users\hoge\.ssh\bastion.pem

Host webap/oracle
  hostname BBB.BBB.BBB.11
  port 22
  user ec2-user
  IdentityFile C:\Users\hoge\.ssh\webap.pem
  ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe bastion -W %h:%p
  GatewayPorts yes
  LocalForward 51521   oracle.xxxxxxxxx.ap-northeast-1.rds.amazonaws.com:1521
  ServerAliveInterval 60
  ServerAliveCountMax 3

Host webap/mysql
  hostname BBB.BBB.BBB.11
  port 22
  user ec2-user
  IdentityFile C:\Users\hoge\.ssh\webap.pem
  ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe bastion -W %h:%p
  GatewayPorts yes
  LocalForward 53306   mysql.xxxxxxxxx.ap-northeast-1.rds.amazonaws.com:3306
  ServerAliveInterval 60
  ServerAliveCountMax 3

패스워드 인증의 때는 IdentityFile 의 행은 지정하지 않아도 괜찮습니다.
ssh webap/oracle 이나 ssh webap/mysql 로 포트 포워딩한 대상의 Web/AP 서버에 SSH 접속이 성공하면 일단 OK.
>ssh webap/oracle
The authenticity of host 'BBB.BBB.BBB.11 (<no hostip for proxy command>)' can't be established.
ECDSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'BBB.BBB.BBB.11' (ECDSA) to the list of known hosts.
Last login: Wed Nov 18 20:13:03 2020 from ip-BBB-BBB-BBB-11.ap-northeast-1.compute.internal
       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[ec2-user@ ~]$

위의 명령으로 데이터베이스로의 경로를 확립하고 있지 않으면 클라이언트 툴로부터 접속할 수 없기 때문에, 사용할 때는 터미널로부터 사전에 접속해 열어 놓아 둡시다.

클라이언트 도구에서 데이터베이스에 연결



포트 포워딩된 로컬 포트에서 연결합니다.

Oracle SQL Developer





MySQL Workbench



좋은 웹페이지 즐겨찾기