SSH ProxyCommand를 사용하여 요새 호스트 뒤의 원격 MySQL 서버에 어떻게 연결합니까?

SSH ProxyCommand를 사용하여 요새 호스트 뒤의 원격 MySQL 서버에 어떻게 연결합니까?

여기에는 세 개의 기계가 관련되어 있습니다.

  1. 내가 개발을 수행하는 로컬 호스트입니다. 일명 노트북.
  2. 먼저 연결해야 하는 요새 호스트입니다. 일명 점프.
  3. 연결하려는 MySQL 서버입니다. 일명 DB.

내 SSH 공개 키는 점프 시 /home/myusername/.ssh/authorized_keys에 있습니다.

내 ~/.ssh/config에는 다음이 있습니다.

Host jump
    HostName jump.domain.com
    User myusername
    IdentityFile ~/.ssh/myprivatekey

나는 할 수 ssh jump있고 잘 뛰어오를 수 있다.

랩톱에서 DB로 연결하려면 랩톱의 터미널에서 어떤 SSH 명령을 실행해야합니까?

mysql -h 127.0.0.1 -P 3308

SSH 터널과 포트 전달이 필요하지만 아직 구문이 정확하지 않습니다. 프로덕션 DB에는 3308을 사용하고 스테이징 DB에는 3307을 사용하고 싶고 3306에서 로컬 MySQL DB를 실행하고 있습니다. 이것이 바로 비표준 mysql 포트로 포트 전달을 수행하는 이유입니다.

답변1

이것이 내가 사용한 것입니다.

ssh -f -L3307:staging.mysql-server.com:3306 jump sleep 10000000
ssh -f -L3308:production.mysql-server.com:3306 jump sleep 10000000

어느 것에서 왔는지http://csce.uark.edu/~kal/info/private/ssh/ch09_02.htm9.2.6초

참고: 제가 질문한 것과는 달리, ProxyCommand는 필요하지 않으며 ssh 명령줄 옵션의 올바른 조합만 있으면 됩니다.

답변2

명령은 입니다 ssh -fL <mysql db port>:<mysql server url>:<mysql db port> <username>@<bastian url> '<remote command>'.

원천

답변3

머신 B를 통해 머신 A에서 C로 연결한다고 가정하면 다음 .ssh/config를 사용할 수 있습니다.

Host B
  User username_on_b
  Hostname ip_of_b
  IdentityFile ~/.ssh/key_for_b

Host C
  User username_on_c
  Hostname ip_of_c
  IdentityFile ~/.ssh/key_for_c
  Localforward 3308 ip_of_your_sql_server:3306
  Proxyjump B
  # or old-fashion
  # Proxycommand ssh B nc %h %p

그런 다음 A에서 간단히 입력하면 됩니다.

ssh C

그런 다음 A에서 다음을 수행할 수 있습니다.

mysql -P 3308 -H localhost

관련 정보