ここでは 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 を使用し、ローカル MySQL DB は 3306 で実行したいので、非標準の 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
マシンAからマシンBを経由して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