Подключитесь к удаленному серверу mongoDB через ssh через mongoose в nodeJS используя tunnel-ssh - PullRequest
2 голосов
/ 10 июля 2019

Я пытался подключиться к удаленному серверу mongoDB через SSH и выполнил следующие настройки

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, но ошибка не исчезнет. Кевин Ли предлагает аналогичный подход.этот вопрос используется в качестве примера

1 Ответ

1 голос
/ 24 июля 2019

Произошла ошибка в документации, в которой предлагалось указать конфигурацию, как указано выше, с ключом «Пароль», но это должен быть «пароль», чтобы конфигурация выглядела примерно так

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
};

Остальная частьреализация на месте и протестирована.

...