I am trying to connect to a remote server MongoDB in Docker through ssh in Nodejs as below :
sshConfig = {
username: 'username',
password: 'password',
host: 'host',
port: 22,
dstHost: '172.17.0.3',
dstPort: 27017,
localPort: 5000
};
const uri = 'mongodb://admin:password@localhost:27017/admin';
tunnel(sshConfig, async error => {
if (error) {
throw new Error(`SSH connection error: ${error}`);
}
const client = new MongoClient(uri);
async function run() {
try {
// Connect the client to the server
await client.connect();
// Establish and verify connection
await client.db('admin').command({ ping: 1 });
console.log('Connected successfully to server');
} finally {
// Ensures that the client will close when you finish/error
await client.close();
}
}
await run().catch(console.dir);
});
But I am getting error as below :
MongoServerError: Authentication failed. at MessageStream.messageHandler (/node_modules/mongodb/src/cmap/connection.ts:740:20) at MessageStream.emit (node:events:390:28) at MessageStream.emit (node:domain:475:12) at processIncomingData (/node_modules/mongodb/src/cmap/message_stream.ts:167:12) at MessageStream._write (/node_modules/mongodb/src/cmap/message_stream.ts:64:5) at writeOrBuffer (node:internal/streams/writable:389:12) at _write (node:internal/streams/writable:330:10) at MessageStream.Writable.write (node:internal/streams/writable:334:10) at Socket.ondata (node:internal/streams/readable:754:22) at Socket.emit (node:events:390:28) { ok: 0, code: 18, codeName: 'AuthenticationFailed' },
and I open http://localhost:5000/ by browser, it shows that:
It looks like you are trying to access MongoDB over HTTP on the native driver port.
I can connect the database via:
- Use MongoDB compass to connect the database via ssh
- Use
mongo 'mongodb://admin:password@remote-host:27017/admin'
in local machine terminal- Use
MongoClient(mongodb://admin:password@remote-host:27017/admin)
in Nodejs without ssh-tunnel- Use
mongo 'mongodb://admin:password@localhost:27017/admin'
in both remote host and remote host docker contaniner
I am sure the password is correct.