如何使用 ssh ProxyCommand 連接到堡壘主機後面的遠端 MySQL 伺服器?

如何使用 ssh ProxyCommand 連接到堡壘主機後面的遠端 MySQL 伺服器?

這裡涉及到三台機器。

  1. 我進行開發的本機。又稱筆記型電腦。
  2. 您必須先連接的堡壘主機。又名跳躍。
  3. 我想要連接的 MySQL 伺服器。又稱資料庫。

我的 ssh 公鑰在跳轉時位於 /home/myusername/.ssh/authorized_keys 中。

我的 ~/.ssh/config 有這個:

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

我可以ssh jump並且可以很好地跳躍。

我需要在筆記型電腦的終端機中運行什麼 ssh 命令才能透過從筆記型電腦連接到資料庫

mysql -h 127.0.0.1 -P 3308

我需要 SSH 隧道和連接埠轉發,但我尚未獲得正確的語法。我想使用 3308 作為生產資料庫,使用 3307 作為臨時資料庫,並在 3306 上運行本地 MySQL 資料庫,這就是連接埠轉送到非標準 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.htm第 9.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

相關內容