Невозможно подключиться к MongoDB, работающему на экземпляре AWS EC2 через SSH
У меня есть экземпляр Amazaon AWS EC2 под управлением MongoDB 3.2.10, который я настроил с помощью этих инструкций. Я могу вставить Putty в свой экземпляр EC2 и войти в оболочку MongoDB, вызвав mongo --port 27017
в оболочке замазки, так что mongod
демон просто отлично работает на этой машине.
Я установил SSH-туннель от своего компьютера до экземпляра EC2, сопоставив порт 12345 на моем компьютере с 27017 на удаленном экземпляре EC2. Однако, когда я пытаюсь подключиться к MongoDB с моей локальной машины Windows, позвонив mongo --port 12345
клиент оболочки mongo зависает около минуты и возвращает:
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' :
connect@src/mongo/shell/mongo.js:231:14
@(connect):1:6
exception: connect failed
Кроме того, у меня также есть Amazon RDS, на котором выполняется MySQL и прослушивается порт 3306 на экземпляре EC2, и порт 6789 сопоставления туннелей SSH на моей локальной машине с портом 3306 на экземпляре EC2, и у меня нет проблем с подключением к База данных MySQL через mysql -P 6789 -u user_name -p
, так что проблема специфична для MongoDB.
Что касается подключения, у меня для параметра keepalive Putty установлено значение 1, и следующий тест сценария PowerShell возвращает значение true для обоих туннельных портов SSH, поэтому туннели определенно подключены:
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
1 ответ
Проверьте bindIp в вашем mongod.conf
Это указывает, какие IP-адреса может слушать mongod. По умолчанию он принимает только локальный хост