source

SSH 터널을 통한 MySQL 연결 - 다른 MySQL 서버를 지정하는 방법

itover 2022. 12. 21. 22:31
반응형

SSH 터널을 통한 MySQL 연결 - 다른 MySQL 서버를 지정하는 방법

최대 50개의 데이터베이스가 서로 다른 호스트 이름으로 설정되어 있으며 SSH 터널을 통해 연결해야 합니다.

예를 들어 다음과 같습니다.

  • SSH 호스트:ssh.example.com

  • MySQL 호스트:mysql1.example.com

autossh(Debian을 실행하는 웹 서버)를 사용하여 터널을 만들었지만 SSH 터널을 넘어 특정 MySQL 호스트명에 접속하는 방법을 알 수 없습니다.

타자 치기lsof -i -n | egrep '\<ssh\>'터널이 동작하고 있는 것을 확인합니다(포트 3307을 ssh.example.com 포트 3306에 연결).

그래서 내가 노력하면mysql -h 127.0.0.1 -P 3307Connection이 거부되었습니다.MySQL 서버가 아니기 때문에 그다지 이상하지 않습니다.

여러분들께 드리는 질문입니다.

를 지정하려면 어떻게 해야 하나요?mysql1.example.comSSH 터널 생성 후 호스트?모든 곳을 뒤져봤지만 알 수가 없어요.

해결했다!터널 자체를 작성할 때 올바른 서버에 접속하는 것이 중요했습니다.터널이 오는 것을 알고 있어야 합니다.

ssh -f user@ssh.example.com -L 3307:mysql1.example.com:3306 -N

그리고나서mysql -h 127.0.0.1 -P 3307의도한 대로 작동했습니다.:)

직접 접속할 수 없는 경우mysql-server, 를 사용합니다.jump-server.

머신에서 점프 서버에 접속(ssh)하고 거기에서 접속합니다.mysql-server.

이 문제를 회피하려면ssh- tunneling.

예를 들어 다음과 같습니다.

       jump server is `jump-ip`
       mysql server is `mysql-ip`
       your machine is `machine-ip`

ssh 클라이언트만 열면 됩니다(윈도에서는 Putty, Linux/ios에서는 터미널).

유형:

    ssh -L [local-port]:[mysql-ip]:[mysql-port] [jump-server-user]@[jump-ip]

이 후에, 다음의 커맨드를 사용할 수 있습니다.localhost그리고.local-port리모트 머신의 mysql-server에 직접 액세스 합니다.

예: 이 경우 mysql 데이터베이스에 액세스하기 위한 Jdbc URL은

jdbc:mysql://localhost:[local-port]/[database-name]

Windows 사용자의 경우 Putty를 사용한 터널링을 통한 리모트 MySQL 서버 접속

순서 1: 세션 탭에 점프 서버의 호스트/IP를 입력합니다.

순서 2: 이동SSH탭-->Tunnels: MySQL 서버 호스트 이름 입력:대상 포트 및 소스 포트를 해당 서비스를 터널링할 로컬 포트로 지정하고Add 순서 2

3단계: 세션 탭으로 돌아가Open사용자 이름/비밀번호 기반인 경우 자격정보를 입력합니다.

그리고 위에서 설명한 것과 동일한 자격 증명을 사용합니다.

jdbc:mysql://localhost:[local-port]/[database-name]

SSH 터널을 사용하여 MySQL에 접속하는 방법에 대한 멋진 블로그를 받았습니다.여기에 아주 잘 설명되어 있다.

SSH 터널에 접속하는 명령어:

ssh -L [listening port]:[REMOTE_MYSQL_HOST]:[REMOTE_MYSQL_PORT] [SSH_USER]@[SSH_HOST]

MySQL에 연결하는 명령어:

localhost:[listening port]

이 명령을 사용하여 DB에 대한 터널을 만들었습니다.

ssh  -L 10000:localhost:3306  user@<ip addess to connect DB> -N -f

L은 로컬 호스트 포트이며 사용자 정의이며 임의의 포트 번호를 제공할 수 있습니다.

0 ~ 65535 입니다. 0 ~1023은 예약되어 있습니다.

서버에 대한 키 기반 인증을 사용하는지 여부

이렇게 키를 언급해 주세요.

ssh -i <path of the private key>  -L 10000:localhost:3306  user@<ip addess to connect DB> -N -f

언급URL : https://stackoverflow.com/questions/18373366/mysql-connection-over-ssh-tunnel-how-to-specify-other-mysql-server

반응형