我的凭据与Robomongo完美搭配,但无法与node.js建立连接,
我尝试使用ssh2和tunnel-ssh npm模块建立连接,但均失败。
-mongo连接不需要密码
-ssh连接使用pem密钥进行
这是我与ssh2模块一起使用的代码,我可以正确建立隧道,但是mongo连接失败
var Client = require('ssh2').Client;
var conn = new Client();
conn.on('ready', function() {
console.log('Client :: ready');
//mongo connection
mongoose.connect('mongodb://localhost:27000/');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log("database connection established");
var users = db.collection('user');
var getallUsers = function (date, callback){
users.find({}).toArray(function(err,data){
callback(data);
})
};
getallUsers(null, function (data){
console.log('data :'+ data);
});
});
//end of mongo connection
}).connect({
host: '**.**.**.**.**',
port: 22,
username: 'ec2-user',
privateKey: key
});
和代码的隧道SSH
var config = {
dstPort: 27000,
user: 'ec2-user',
host: '**.**.**.**.**',
privateKey: key
};
var server = tunnel(config, function (error, server) {
if(error){
console.log("SSH connection error: " + error);
}
console.log('database connection initalizing');
mongoose.connect('mongodb://localhost:27000/');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log("database connection established");
var users = db.collection('user');
var getallUsers = function (date, callback){
users.find({}).toArray(function(err,data){
callback(data);
})
};
getallUsers(null, function (data){
console.log(data);
});
});
});
我不确定在建立隧道之后是使用常规的MongoDB连接字符串还是将数据库引用为localhost,例如
mongodb:// localhost:portnumber。
或
mongodb://databasepath.subpath.mongodbdns.com:27000
Localhost给我一个权限被拒绝的错误,后者给我超时
正如mscdex所提到的那样,ssh2不是用来与数据库建立ssh隧道连接的好模块。tunnel-ssh更合适。
这是我使用的配置选项:
dstPort:远程数据库连接端口
localPort:与dstPort相同,它将是用于本地计算机的端口
用户名:SSH用户名,
主机:SSH地址
dstHost:数据库连接网址(… mongodbns.com),
privateKey:SSH密钥
然后,一旦您的隧道连接,通过猫鼬连接到您的本地主机,例如mondodb:// localhost:27000(使用您在localPort中定义的本地端口)
var server = tunnel(config, function (error, server) {
if(error){
console.log("SSH connection error: " + error);
}
mongoose.connect('mongodb://localhost:27000/');
//...rest of mongoose connection
}
我试图从我的localhost(在端口24000上)通过堡垒盒隧道到我的mongo实例(在27017上),该实例只能通过VPC私有子网获得,因此我可以在连接到暂存数据库的同时进行本地开发。在我的OSX盒子上使用此隧道命令: ssh-A-L 24000:ip-10-0-11-11。ec2.内部:27017 ec2-3-211-555-333。计算-1。amazonaws。com-N-v “ip-10
目标是使用SSH隧道将R连接到PostgreSQL。 刚刚用库RPostgreSQL和DBI进行了不成功的尝试。我没有找到传递SSH隧道参数(代理主机、代理用户和私钥)的方法。 我想知道是否有办法在db查询字符串中指定这些SSH参数?也许还有别的出路?
我正在使用IntelliJ社区版和JPA Buddy开发一个Java项目(基于Spring Boot 2.6.x)。我想使用JPA Buddy进行实体实用程序和Liquibase集成。 生产数据库(MySQL 5.7)只能通过ssh隧道访问。 有没有办法使用ssh隧道配置数据库连接?如何从生产数据库生成变更日志? 谢谢米奇
修复(编辑代码以反映我所做的更改) 我正在尝试使用Java通过SSH隧道连接到Mongo数据库。 我正在使用Mongo驱动程序3.0.2和jcraft(JSch)创建一个SSH隧道。我的想法是: 通过SSH连接到托管MongoDB安装的机器 设置从本地端口到远程MongoDB端口的端口转发 远程连接到MongoDB 我的代码如下所示: 这段代码在运行时, 不 EDIT:有效。 连接到SSH服务器工
问题内容: 我正在学习python。我需要使用隧道创建者来从数据库中读取信息并关闭隧道。我使用paramiko,但是我没有使用tonelem示例。请举一个创建隧道的简单代码示例。 提前致谢! 问题答案: 在工作中,我们通常创建ssh隧道转发端口。我们的方法是使用标准命令,使子进程在单独的线程中运行。我找到了这个有用的链接:https : //github.com/paramiko/paramiko