首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java中的SSH连接MongoDB

用Java中的SSH连接MongoDB
EN

Stack Overflow用户
提问于 2014-08-21 14:18:24
回答 1查看 3.5K关注 0票数 4

要从Java连接到MongoDB,我使用:

代码语言:javascript
复制
MongoClient mongoClient = new MongoClient("localhost", port);

而且效果很好。现在我想连接到MongoDB,它在机器上,我必须通过SSH登录。为此,我尝试使用JSch,下面是我的代码:

代码语言:javascript
复制
String host = "host";
String user = "user";
String password = "pass";
int port = 22;

int tunnelLocalPort = 3309;
String tunnelRemoteHost = "host";
int tunnelRemotePort = 3306;

JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
session.setPassword(password);
localUserInfo lui = new localUserInfo();
session.setUserInfo(lui);
session.connect();
session.setPortForwardingL(tunnelLocalPort, tunnelRemoteHost, tunnelRemotePort);

一切看起来都很好,我可以连接起来,但这里有一个问题:

代码语言:javascript
复制
MongoClient mongoClient = new MongoClient("localhost", 27020);
List<String> databaseNames = mongoClient.getDatabaseNames();
LOG.info("DB names=" + databaseNames);

错误是:

代码语言:javascript
复制
Aug 21, 2014 4:12:29 PM com.mongodb.DBTCPConnector initDirectConnection
Warnung: Exception executing isMaster command on localhost/127.0.0.1:27020
java.io.IOException: couldn't connect to [localhost/127.0.0.1:27020] bc:java.net.ConnectException: Connection refused: connect
    at com.mongodb.DBPort._open(DBPort.java:214)

我应该设置更多的连接吗?当我检查session.isConnected()输出是true时,如何从Java检查程序连接。当我使用PuTTY时,一切都很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-23 07:43:39

从上面的代码中,我认为您是在3309 (而不是27020)上将一个远程3309端口隧道到本地端口。

根据你的代码:

int tunnelLocalPort = 3309;字符串tunnelRemoteHost = "host";int tunnelRemotePort = 3306;

  1. 检查远程主机的主机和端口,并相应地映射它。
  2. 将本地端口设置为在代码(27020)中正在侦听的端口。

先试一试没有代码的整个练习:

  1. 使用MongodDB (或命令行,如果您在Linux上)隧道远程PuTTY服务器。
  2. 通过Mongo连接到您映射远程端口的本地端口。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25428759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档