68

SSHトンネルを介して接続する必要があるため、すべて異なるホスト名でセットアップされた〜50のデータベースがあります。

例えば:

  • の SSH ホストssh.example.com

  • MySQL ホストmysql1.example.com

autossh (Debian を実行している Web サーバー) を使用してトンネルを作成できましたが、SSH トンネルを「超えて」特定の MySQL ホスト名に接続する方法がわかりません。

入力lsof -i -n | egrep '\<ssh\>'すると、トンネルが機能していることを確認できます (ポート 3307 を ssh.example.com ポート 3306 に送信します)。

だから私がしようmysql -h 127.0.0.1 -P 3307とすると、接続が拒否されます。MySQL サーバーではないので、それほど奇妙ではありません。

皆さんへの私の質問:

mysql1.example.comSSH トンネルを作成した後にホストを指定するにはどうすればよいですか? あちこち探してみたのですが、よくわかりません。

4

4 に答える 4

133

解決しました!問題は、トンネル自体を作成するときに正しいサーバーに接続することでした-それが来るのを見るべきでした.

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

その後mysql -h 127.0.0.1 -P 3307、意図したとおりに機能しました。:)

于 2013-08-22T07:18:20.097 に答える
16

に直接アクセスできない場合はmysql-server、 を使用しますjump-server

マシンから jump-server に接続 (ssh) し、そこからmysql-server.

を使用することで回避できますssh- tunneling

あなたの

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

ssh クライアント (Windows では Putty、Linux/IOS ではターミナル) を開くだけです。

タイプ:

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

この後、localhostandlocal-portを使用して、リモート マシン上の mysql-server に直接アクセスできます。

例えば。その場合、mysql データベースにアクセスするための Jdbc URL は次のようになります。

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

Windows ユーザーの場合、Putty を使用して、トンネリング経由でリモートの MySQL サーバーに接続します

ステップ 1: セッション タブにジャンプ サーバーのホスト/IP を入力します。 ステップ1

ステップ 2: タブに移動しSSHます--> Tunnels: MySQL サーバーのホスト名を入力します: 宛先としてポートを、そのサービスをトンネリングするローカル ポートとしてソース ポートを入力し、クリックします。Add ステップ2

ステップ 3: [セッション] タブに戻り、[Open資格情報] をクリックして入力します (ユーザー名/パスワード ベースの場合)。

上記と同じ資格情報を使用します。

jdbc:mysql://localhost:[local-port]/[database-name]
于 2017-09-07T12:02:10.503 に答える