使用ssh隧道从远程机器验证mongodb

时间:2013-08-13 18:14:49

标签: java linux mongodb ssh ssh-tunnel

我在远程服务器(debian)中运行mongo db并进行身份验证。我需要从我的本地机器(windows)使用UMongo(用于mongodb的UI工具)连接到它以可视化数据。我没有在服务器机器上打开mongodb端口,但已经从我的localhost:9999mongodb-host:port建立了一个ssh隧道。作为UMongo的连接uri,我已经给出了

[username]:[password]@localhost:9002
(also tried with [username]:[password]@localhost:9002/dbname)

并尝试连接。它显示数据库但不进行身份验证,它会引发身份验证错误。我确保给出的凭证是正确的。想知道凭证是否没有通过ssh隧道正确传递给mongodb服务器。

更新:我在禁用身份验证的情况下重新启动了mongo服务器。之后我试图访问远程mongo shell。当我尝试使用mongo --port 9002时,它会出现以下错误:

MongoDB shell version: 2.4.4
connecting to: 127.0.0.1:9002/test
Thu Sep 05 22:55:21.107 Socket recv() errno:10054 An existing connection was forcibly
  closed by the remote host. 127.0.0.1:9002
Thu Sep 05 22:55:21.107 SocketException: remote: 127.0.0.1:9002 error: 9001 socket 
exception [1] server [127.0.0.1:9002]
Thu Sep 05 22:55:21.107 DBClientCursor::init call() failed
Thu Sep 05 22:55:21.107 JavaScript execution failed: Error: DBClientBase::findN:   
transport error: 127.0.0.1:9002 ns: admin.$cmd query: { whatsmyuri: 1
} at src/mongo/shell/mongo.js:L114
exception: connect failed

但是当我尝试使用mongo --port 9002 --nodb时,我能够获得mongo shell。然后我尝试use mydb抛出以下错误:

Thu Sep 05 22:57:43.205 JavaScript execution failed: ReferenceError: db is not defined 
at src/mongo/shell/utils.js:L691

非常感谢任何帮助。

感谢。

0 个答案:

没有答案