Workbenchを使用してSSH経由でMySQLデータベースに接続できない


10

MySQL Workbenchを使用して、Webアプリケーションサーバーの1つからSSHトンネリングを介してデータベースに接続しようとしています。これが基本的な設定です。セキュリティ上の理由から、スクリーンショットの一部の値を変更したことに注意してください。

ワークベンチのスクリーンショット

問題は、アプリケーションサーバーの1つからSSHトンネルを介して接続しようとするたびに、次のエラーが発生することです。

ユーザーsocial_shop_prodを使用して、computer.amazonaws.comのSSHトンネル経由でus-east-1.amazonaws.comに接続できませんでした。127.0.0.1のMySQLサーバーに接続できません。

ただし、次のコマンドラインを介してSSH経由で同じ資格情報を使用する場合:

mysql -u social_shop_prod -h us-east-1.amazonaws.com -p

正常に接続して、MySQLインタラクティブコマンドプロンプトを取得できます。

ここで私の開発チームの他のメンバーと話していると、誰も私がWorkbenchを使用してアプリサーバーからSSH経由でトンネルできない理由を理解できません。しかし、私がアプリサーバーの1つにSSHで接続し、コマンドラインを介してMySQLに接続すると、接続できました。

そして、なぜそれは127.0.0.1以上に接続しようとしていますか?構成では指定しませんでした。また、私のhostsファイルは、以下に示すドメインをそのIPにリダイレクトしていません。

どんな建設的な入力も大歓迎です。

回答:


5

SSHトンネル経由で接続しているため、これはus-east-1.amazonaws.comのMySQLポート3306がコンピューター上でローカルに開かれていることを意味します。コンピュータのIPアドレスは127.0.0.1またはlocalhostです。us-east-1.amazonaws.comのmysqlサーバーに接続すると、実際には127.0.0.1を介して、つまりコンピューターにアクセスします。別のトンネルを開いているか、MySQLがコンピューター上でローカルに実行されている場合、認証の試行を拒否しているのは他のMySQLサーバーである可能性があります

あなたが試すことができるいくつかのテストがあります:

1. Windowsコンピュータがリッスンしているポートは何ですか

コマンドプロンプトから:netstat -a(開いているすべてのポートを一覧表示します)

Linuxでは次のようになります:netstat -tlpn

2.基本的な接続テスト

DOSコマンドプロンプトまたはLinuxコンソールから:telnet 127.0.0.1 3306

タイムアウトになるか、他のプログラムが応答する場合は、トンネルが正しく設定されていません。

3. MySQL Workbenchがローカルで開いているポート番号を変更します

MySQLワークベンチがコンピューター上にトンネルを作成していることを前提としています。その場合、MySQLワークベンチで、9000などの別のポート番号をトンネリングしてみてください。

9000がnetstat -aから開いているポートとしてリストされていないことを確認します

us-east-1.amazonaws.comへのSSHアクセス権がある場合

4. us-east-1.amazonaws.comからMySQLに接続してみます

mysql -u myuser -h 127.0.0.1 -p

そして、Rolandoが言ったように、正しい資格情報で接続していることを確認する必要があります。たとえば、myuser @ 127.0.0.1として接続していて、ホストのないユーザーmyuserがある場合、user @ 127.0.0.1を使用して接続することはおそらくできません。


2

127.0.0.1にアクセスするのは、トンネルがローカルマシンのポートをリモートホストに接続するためです。このメッセージは、SSH接続が確立されていないことを示唆しているようです。

コマンドラインからこれを試してください:

ssh -L 33000:remotehost:3306 user@remotehost

SSHが転送ポートを許可していることを確認してください。転送が許可されなかったか拒否されたことを示すメッセージが表示された場合は、そのためです。

これを修正するには、サーバー構成を変更する必要があります。この構成をSSHサーバーに追加します。

AllowTcpForwarding yes

この構成をアクティブにするには、サーバーを再起動することを忘れないでください。


そのコマンドを少し説明できますか?あなたはアドレスを拘束していますか?mysqlコマンドと組み合わせることができますか?
Thufir、2015

ここでSSHを使用すると、トンネルをセットアップするだけです。リモートポートをローカルポートに接続します。この場合、ローカルポートをリモートMySQLポートに接続します。
Mei

1

私はこの問題に2週間近く対処し続けました。ここに投稿して、もっと多くの人が試せるようにします。

OK、OpenSSH(Win10ネイティブ)とWorkbench 8を使用しています。

ステップバイステップ:
1. ssh-addを使用して、SSHホストキーをエージェントに追加します。
2. ssh-keygenを使用してキーペアを生成します。私の場合、これらのファイルはUsers/myUser/.sshインストール構成に従って自動的に移動します。
3.公開鍵をauthorized_keysファイル(私の場合はサーバーのインストールパス内にある必要がありますWindows/System32/OpenSSH/.ssh)に拡張子なしで追加します。
4. ssh-addを使用して、作成したキーをエージェントに追加します。

上記の手順は、コマンドラインSSHサーバーの設定とほぼ同じです。これにより、OPが接続を介して既に実行しているOPがターミナルを介して機能していることがわかります。あなたが変換する必要があります以外のconfigureのMySQL Workbenchの8にあなたはかなり正確に同じことを行うprivate_key.pemを OpenSSHのフォーマットにそれらを移動する前にUsers/myUser/.sshし、OpenSSH_instalation_path/.ssh

  1. PUTTYgenを使用して、private_key.pemをOpenSSH形式に変換します。
  2. 「OpenSSH authorized_keysに貼り付けるための公開鍵」フィールドをコピーします。
  3. フォルダ内の公開鍵を保存User/myUser/.sshし、OpenSSH_instalation_path/.ssh
  4. PUTTYからコピーしたキーを、フォルダーのauthorized_keysファイルに貼り付けOpenSSH_instalation_path/.sshます。
  5. OpenSSH形式のキーをにエクスポートしますUser/myUser/.ssh
  6. sshdおよびmysqlサービスを再起動します
  7. 変換された秘密鍵を使用してSSHサーバーに接続するようにワークベンチを構成します。

更新:sshd_configファイルで以下を設定する必要があります:

PermitRootLogin without-password
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
AllowTcpForwarding yes

読んでください:

私は経験の浅いアナリストなので、上級ユーザーが2つの.sshフォルダーのどちらが適切かを知っている場合は、お知らせください。OpenSSHはこれについてちょっと曖昧です。
これは、localhostのみを使用してローカル開発環境を設定しているときに機能しました。単に学習目的のため。
接続をテストする前に、myUser @ localhostをMySQL Workbenchユーザーに追加することができます。
本当に必要な場合は、画像を追加できます。


0

私の場合、問題を解決するには、カスタムホストをローカルでホストする代わりに、有効なドメイン名またはIP戻す必要がありました

カスタムホスト解決が失敗する(/etc/hosts

私は定義したローカルホスト解決メカニズムを使用します。

#.#.#.#    my-vm

何らかの理由でMySQL 5.2.47on Linux Mint 14 (Nadia)解決メカニズムに似ていUbuntu 12.10 (Quantal)機能しません

解決

問題を解決するなど、パブリックドメイン名に切り替えるだけmy-website.comです。


@Mat修正、thanj = ks
エドゥアールロペス


0

私にも同様の問題があり、これは不便かもしれませんが、AWSのファイアウォールルールを確認してください。外部からの接続を制限するためにIP範囲を設定しています。そして、私のオフィスのIPが変更されたため、IP範囲外になりました。別のオフィスにいる私の同僚はまだ接続できるので、問題は自分のPCにあると思いましたが、問題はAWSのファイアウォールルールにありました。それが誰かを助けることを願っています:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.