使用 tunnel-ssh 在 nodeJS 中通过 mongoose 通过 ssh 连接到远程服务器 mongoDB
Connect to a remote server mongoDB via ssh through mongoose in nodeJS using tunnel-ssh
我试图通过 SSH 连接到远程服务器 mongoDB 并按照提供的配置进行配置
import tunnel from 'tunnel-ssh';
const config = {
username: 'username',
Password: 'password',
host: process.env.SSH_SERVER, //192.168.9.104
port: 22,
dstHost: 'localhost',
dstPort: process.env.DESTINATION_PORT, //27017
localHost: '127.0.0.1',
localPort: 27018
};
这是我需要连接到远程服务器 192.168.9.104 的地方定义的配置。所以选择特定的作为 SSH 主机。提供了相同的用户名和密码。并且建立的连接如下。
class DB {
initDB() {
tunnel(config, (error, server) => {
if (error) {
console.log('SSH connection error: ' + error);
}
const url = 'mongodb://127.0.0.1:27018/myDBname';
mongoose.connect(url, { useNewUrlParser: true });
mongoose.plugin(toJson);
mongoose.plugin(setProperties);
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'DB connection error:'));
db.once('open', function() {
console.log('DB connection successful');
});
});
}
}
但是当调用 db.init() 函数时弹出以下错误
events.js:183
throw er; // Unhandled 'error' event
^
Error: All configured authentication methods failed
我无法弄清楚配置哪里出了问题。我试过将 127.0.0.1 用于 dstHost。以及将 192.168.9.104 也作为 dstHost,但错误仍然存在。 kevin lee suggests a similar approach. this question作为例子
文档有一个错误,它建议使用密钥 "Password" 进行上述配置,但它应该是 "password",因此配置看起来像这样
const config = {
username: 'username',
password: 'password',
host: process.env.SSH_SERVER, //192.168.9.104
port: 22,
dstHost: 'localhost',
dstPort: process.env.DESTINATION_PORT, //27017
localHost: '127.0.0.1',
localPort: 27018
};
实施的其余部分已经过现场测试。
我试图通过 SSH 连接到远程服务器 mongoDB 并按照提供的配置进行配置
import tunnel from 'tunnel-ssh';
const config = {
username: 'username',
Password: 'password',
host: process.env.SSH_SERVER, //192.168.9.104
port: 22,
dstHost: 'localhost',
dstPort: process.env.DESTINATION_PORT, //27017
localHost: '127.0.0.1',
localPort: 27018
};
这是我需要连接到远程服务器 192.168.9.104 的地方定义的配置。所以选择特定的作为 SSH 主机。提供了相同的用户名和密码。并且建立的连接如下。
class DB {
initDB() {
tunnel(config, (error, server) => {
if (error) {
console.log('SSH connection error: ' + error);
}
const url = 'mongodb://127.0.0.1:27018/myDBname';
mongoose.connect(url, { useNewUrlParser: true });
mongoose.plugin(toJson);
mongoose.plugin(setProperties);
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'DB connection error:'));
db.once('open', function() {
console.log('DB connection successful');
});
});
}
}
但是当调用 db.init() 函数时弹出以下错误
events.js:183
throw er; // Unhandled 'error' event
^
Error: All configured authentication methods failed
我无法弄清楚配置哪里出了问题。我试过将 127.0.0.1 用于 dstHost。以及将 192.168.9.104 也作为 dstHost,但错误仍然存在。 kevin lee suggests a similar approach. this question作为例子
文档有一个错误,它建议使用密钥 "Password" 进行上述配置,但它应该是 "password",因此配置看起来像这样
const config = {
username: 'username',
password: 'password',
host: process.env.SSH_SERVER, //192.168.9.104
port: 22,
dstHost: 'localhost',
dstPort: process.env.DESTINATION_PORT, //27017
localHost: '127.0.0.1',
localPort: 27018
};
实施的其余部分已经过现场测试。