W przypadku bezpośredniego korzystania ze sterownika bazy danych, jeśli używasz mysql2
zamiast mysql
, można w rzeczywistości przekazać strumień przekazany przez ssh jako połączenie bazowe, które ma być używane przez sterownik bazy danych. Umożliwi to pominięcie konieczności tworzenia dodatkowego serwera, który nasłuchuje tunelowanych połączeń przychodzących. Możesz więc zamiast tego zrobić coś takiego:
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 ...
});