web-dev-qa-db-ja.com

SSHトンネルを介したMySQL接続-他のMySQLサーバーの指定方法

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

例えば:

  • ssh.example.comのSSHホスト

  • mysql1.example.comのMySQLホスト

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

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

したがって、mysql -h 127.0.0.1 -P 3307を試行すると、接続が拒否されます。 MySQLサーバーではないので、それほど奇妙ではありません。

皆さんへの私の質問:

SSHトンネルの作成後にmysql1.example.comホストを指定するにはどうすればよいですか?私はどこでも検索しようとしましたが、理解できないようです。

49
Mad Marvin

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

ssh -f [email protected] -L 3307:mysql1.example.com:3306 -N

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

101
Mad Marvin

SSHトンネルを使用してMySQLに接続する方法に関する素晴らしいブログを入手しました。それは非常によく説明されています ここ

SSHトンネルに接続するコマンド:

ssh -L [listening port]:[REMOTE_MYSQL_Host]:[REMOTE_MYSQL_PORT] [SSH_USER]@[SSH_Host]

MySQLに接続するコマンド:

localhost:[listening port]
15
sandra kevin

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]

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

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

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

このコマンドを使用してDBへのトンネルを作成しました

ssh  -L 10000:localhost:3306  user@<ip addess to connect DB> -N -f

-Lはユーザー定義のローカルホストポートuは任意のポート番号を提供できます

0〜65535。0〜1023は予約済みです。

必要なサーバーにキーベースの認証を使用しているかどうか

このようなキーに言及してください。

ssh -i <path of the private key>  -L 10000:localhost:3306  user@<ip addess to connect DB> -N -f
3
Javeed Shakeel