Om du använder databasdrivrutinen direkt, om du använder mysql2
istället för mysql
, kan du faktiskt skicka den vidarebefordrade ssh-strömmen som den underliggande anslutningen som ska användas av databasdrivrutinen. Detta gör att du kan hoppa över att behöva skapa en extra server som lyssnar efter inkommande anslutningar som ska tunnlas. Så du kan göra något så här istället:
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 ...
});