these instrunctionsを使用して設定したMongoDB 3.2.10を実行しているAmazaon AWS EC2インスタンスがあります。私はEC2インスタンスにPuttyを入れ、Puttyシェルにmongo --port 27017
を呼び出してMongoDBシェルに入ります。そのため、mongod
デーモンはそのマシンでうまく動作しています。SSH経由でAWS EC2インスタンス上で動作するMongoDBに接続できません
自分のマシンからEC2インスタンスにSSHトンネルをセットアップしました。私のマシンのポート12345をリモートEC2インスタンスの27017にマッピングしました。しかし、私はmongo --port 12345
を呼び出すことによって、私のローカルのWindowsマシンからのMongoDBに接続しようとすると、モンゴシェルクライアントが分程度とリターンのためにハングアップ:背景として
connecting to: 127.0.0.1:12345/test
2016-10-31T11:31:39.727-0700 I NETWORK [thread1] Socket recv() errno:10054 An existing connection was forcibly closed by the remote host. 127.0.0.1:12345
2016-10-31T11:31:39.727-0700 I NETWORK [thread1] SocketException: remote: (NONE):0 error: 9001 socket exception [RECV_ERROR] server [127.0.0.1:12345]
2016-10-31T11:31:39.728-0700 E QUERY [thread1] Error: network error while attempting to run command 'isMaster' on host '127.0.0.1:12345' :
[email protected]/mongo/shell/mongo.js:231:14
@(connect):1:6
exception: connect failed
、私はまた、MySQLを実行しているアマゾンRDSを持っており、 EC2インスタンスのポート3306とEC2インスタンスのポート3306へのローカルマシン上のSSHトンネルマッピングポート6789を参照し、mysql -P 6789 -u user_name -p
経由でMySQLデータベースに接続する際に問題がないので、MongoDBに固有の問題です。接続用として
、私は1に設定パテのkeepaliveオプションを持って、そしてトンネルが確実に接続されているので、次のPowerShellスクリプトのテストでは、両方のSSHトンネルポートのためにtrueを返します:
function test-connection{
param($IP,$PORT)
$connected = $FALSE
$s = New-Object Net.Sockets.TcpClient
try{
$s.Connect($IP,$PORT)
$connected = !!$s.connected
}catch{
#PASS
}finally{
$s.close()
}
$connected
}
test-connection "127.0.0.1" 12345
test-connection "127.0.0.1" 6789
'/ etc/mongod.conf'の' bindIp:127.0.0.1#すべてのインターフェースでlistenするコメント 'を既にコメントしています。 。 – Jthorpe
bindIpに '0.0.0.0'を設定しようとしましたが、問題は解決しません。 – Jthorpe