No caso de usar o driver de banco de dados diretamente, se você usar
mysql2
em vez de mysql
, você pode realmente passar o fluxo encaminhado ssh como a conexão subjacente a ser usada pelo driver de banco de dados. Isso permitirá que você ignore a necessidade de criar um servidor adicional que escute as conexões de entrada a serem encapsuladas. Então você pode fazer algo assim em vez disso:var mysql = require('mysql2');
var Client = require('ssh2').Client;
var ssh = new Client();
ssh.on('ready', function() {
ssh.forwardOut(
'127.0.0.1',
12345,
'127.0.0.1',
3306,
function (err, stream) {
if (err) throw err;
var sql = mysql.createConnection({
user: 'foo',
database: 'test',
stream: stream // <--- this is the important part
});
// use sql connection as usual
});
}).connect({
// ssh connection config ...
});