這裡涉及到三台機器。
- 我進行開發的本機。又稱筆記型電腦。
- 您必須先連接的堡壘主機。又名跳躍。
- 我想要連接的 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