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にリダイレクトしていません。
どんな建設的な入力も大歓迎です。
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
タイムアウトが発生した場合、または他のプログラムが応答した場合は、トンネルが正しく設定されていません。
。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を使用して接続することはおそらくできません。
127.0.0.1にアクセスするのは、トンネルがローカルマシンのポートをリモートホストに接続するためです。メッセージは、SSH接続が確立されていないことを示唆しているようです。
コマンドラインからこれを試してください:
ssh -L 33000:remotehost:3306 user@remotehost
SSHが転送ポートを許可していることを確認してください。転送が許可されなかったか拒否されたことを示すメッセージが表示された場合は、そのためです。
これを修正するには、サーバー構成を変更する必要があります。この構成をSSHサーバーに追加します。
AllowTcpForwarding yes
この構成をアクティブにするには、サーバーを再起動することを忘れないでください。
私はこの問題に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が彼の接続に対してすでに実行しており、ターミナルを介して動作していることを理解しています。 MySQL Workbench 8を設定するには、private_key.pemをOpenSSH形式に変換する必要があることを除いて、まったく同じことを行いますUsers/myUser/.ssh
とOpenSSH_instalation_path/.ssh
に移動する前
User/myUser/.ssh
およびOpenSSH_instalation_path/.ssh
に保存しますOpenSSH_instalation_path/.ssh
フォルダのauthorized_keysファイルに貼り付けます。User/myUser/.ssh
にエクスポートします。更新:sshd_configファイルで以下を設定する必要があります:
パスワードなしのPermitRootLogin
PubkeyAuthenticationはい
PasswordAuthentication no
PermitEmptyPasswordsいいえ
AllowTcpForwarding yes
読んでください:
私は経験の浅いアナリストなので、上級ユーザーが2つの.sshフォルダーのどちらが適切かを知っている場合は、お知らせください。 OpenSSHはこれについてちょっと曖昧です。
これは、localhostのみを使用してローカル開発環境を設定するときに機能しました。単に学習目的のため。
接続をテストする前に、myUser @ localhostをMySQL Workbenchユーザーに追加することができます。
本当に必要な場合は、画像を追加できます。
同様の問題がありましたが、これは不便かもしれませんが、AWSのファイアウォールルールを確認してください。外部からの接続を制限するためにIP範囲を設定しています。そして、私のオフィスのIPが変更されたため、IP範囲外になりました。別のオフィスにいる私の同僚はまだ接続できたので、問題は自分のPCにあると思いましたが、問題はAWSのファイアウォールルールにありました。それが誰かを助けることを願っています:)
私の場合、ローカルでホストをホストする代わりに、有効なドメイン名またはIPに戻すを実行する必要があった問題が解決されました。
/etc/hosts
_)私は定義したローカルホスト解決メカニズムを使用します。
_#.#.#.# my-vm
_
何らかの理由で、Linux Mint 14 (Nadia)
に似ている_MySQL 5.2.47
_をUbuntu 12.10 (Quantal)
に使用すると、解決メカニズムが機能しませんになります。
単純にパブリックドメイン名に切り替える _my-website.com
_などの問題を解決します。
さまざまなターゲット(Amazon RDS、Amazon EC2、Windows Azureなど)に接続するためのリソースのリストについては、こちらをご覧ください: http://forums.mysql.com/read.php?152,252640,252640#msg -25264 。