AWS 秘密キーを使用してローカル アプリ (rubymine、prosequel など) をリモート サーバーに接続するにはどうすればよいですか?

AWS 秘密キーを使用してローカル アプリ (rubymine、prosequel など) をリモート サーバーに接続するにはどうすればよいですか?

リモート接続を許可するプログラム(通常はssh)は、通常、リモートサーバーに接続するためにユーザー名/パスワードを要求します。以下の例を参照してください。続編プロそしてルビーマイン、 それぞれ:

続編プロ:SSH 経由でリモート MySQL サーバーに接続しようとしています:

接続ウィンドウ sequelpro

ルビーマイン:サーバー側のデバッグを試行しています: 接続設定ウィンドウ ruby​​time

Amazon AWSでは、SSHを使用して接続する秘密鍵が必要で、接続コマンドは次のようになります。

ssh -i %privateKeyFileName.pem% ubuntu@server

質問:prosql や ruby​​mine などのアプリを使用して正常に接続できるようにするには、このプライベート ファイルをどのように含めればよいですか?


アップデート:続編プロはできるネイティブ.. ruby​​mineに関しては.. 私はまずSSH トンネリング.. 手順は次のとおりです:

初め:マシン上で SSH トンネル プロセスを開始したので、localhost:9999 ポートへのリクエストはすべてポート 3000 の aws ip に転送されます。

ssh -l ubuntu -i '/path/to/cert/file/certFile.cer' -L 9999:%aws.ip%:3000 %aws.ip%

2番目:続くこれら説明書を同梱しました堕落させるRails プロジェクトで gem をデバッグし、次のコマンドを実行しました。

rdebug-ide --port 3000 -- rvmsudo thin start -p 3000 -e production

三番目:私は ruby​​mine のプロダクション デバッグ設定を変更し、次のようにローカルホストのポート 3000 を指すようにしました。

ここに画像の説明を入力してください

第4:rubymine からデバッグプロセスを開始しました。

問題:デバッグ プロセスが開始されましたが、mysql サーバーに接続できないというメッセージが表示されます。

/Users/abdullahbakhach/.rvm/rubies/ruby-1.9.3-p484/bin/ruby -e at_exit{sleep(1)};$stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /Users/abdullahbakhach/.rvm/gems/ruby-1.9.3-p484/gems/ruby-debug-ide-0.4.17/bin/rdebug-ide --port 58053 --dispatcher-port 58054 -- /Users/abdullahbakhach/dev/ruby/icars-web-application-veritopia/script/rails server -b 0.0.0.0 -p 9999 -e production
Fast Debugger (ruby-debug-ide 0.4.17, ruby-debug-base19x 0.11.30.pre12) listens on 127.0.0.1:58053
=> Booting Thin
=> Rails 3.2.13 application starting in production on http://0.0.0.0:9999
=> Call with -d to detach
=> Ctrl-C to shutdown server
/Users/abdullahbakhach/.rvm/gems/ruby-1.9.3-p484@global/gems/actionpack-3.2.13/lib/action_dispatch/http/mime_type.rb:102: warning: already initialized constant PDF
Uncaught exception: Host '78.111.131.68' is not allowed to connect to this MySQL server
Exiting
    /Users/abdullahbakhach/.rvm/gems/ruby-1.9.3-p484/gems/mysql2-0.3.14/lib/mysql2/client.rb:67:in `connect'

ランダムなホストから AWS マシンにホストされている DBに直接接続しようとするとmysql、同じ理由でその接続が拒否されることはわかっています。目的は、MySQL DB を騙して、実際に AWS 内から接続していると思わせることです。

技術的には同じことができます。つまり、mysql ホスト専用の別の ssh トンネルを作成できますが、その後、rubymine にそのトンネルに db 用に接続するように指示するにはどうすればよいでしょうか。

答え1

127.0.0.1:9876SSHトンネリングを使用すると、ローカルポート(例:)をリモートサーバーの特定のポートに転送できます。詳細を確認するここ

要点は次のとおりです。

ssh -l <SERVER_USER> -i "<SERVER_SSH_KEY>" \ 
    -L <local-port-to-listen>:<remote-host>:<remote-port> 
    <remote-host>

ここに例があります:

ssh -l ubuntu -i "/home/myuser/awskey.pem" -L \
    9999:51.100.80.10:3306 51.100.80.10

上記の例では、9999ローカル マシンのポートへのすべての要求を、宛先の SSH ポート (通常はポート ) を介してトンネリングされ、3306宛先サーバー (IP: ) のポート (MySQL 用)に転送します。51.100.80.1022

AWS の場合、サーバーへの SSH アクセスを有効にするには、EC2 ページのセキュリティ グループを変更する必要があります (SSH は通常ポート で実行される22ため、そのポートへのアクセスを許可する必要があります)。

答え2

どうやら、sequelpro にはすでに SSH キーを提供するオプションが用意されているようです。(バグだと思います。sshオプションをクリックしてもキーのフィールドが表示されない場合は、他の 2 つのタブのいずれかに戻ってから、もう一度クリックするとssh、次の画面が表示されます。)ここに画像の説明を入力してください

アップデート:見るここSSHトンネリングを使用してSequel Proに接続する方法の詳細については、

関連情報