Ich bin ein rest api
mit node.js
implementieren, die ssh2 package
Tunneling verwendet, um die remote mysql database
zu verbinden. Hier ist der Code, den ich per ssh verbinden bin mit und query
Node.js ssh2 tunnel am Leben und führen mysql Abfragen
executeQuery : function(query, callback) {
var sshConnected = false;
var connection = require('ssh2').Client();
var server = require('net').createServer(function(sock) {
if (!sshConnected) return sock.end();
connection.forwardOut(
'127.0.0.1',
sock.remotePort,
'127.0.0.1',
3306,
function (err, stream) {
if (err) return sock.end();
stream.pipe(sock).pipe(stream);
});
});
connection.on('ready', function() {
console.log('Client :: ready');
sshConnected = true;
server.listen(3306);
var sqlconn = require('mysql').createConnection(config.dbOrg);
sqlconn.connect(function (conError) {
if (!conError) {
console.log(query);
sqlconn.query({sql: query.sql, values: query.values}, function (qError, results, fields) {
callback(qError, results, fields);
});
} else {
callback(response.dbError, null, null);
}
server.close();
});
}).connect(config.sshConfig);
jedoch auszuführen, wie Sie sehen können es nicht sehr effizient ist.
Für jede neue Abfrage stelle ich die Verbindung wieder her, starte den TCP Server und stoppe ihn nach der Abfrage. Jede Abfrage dauert etwa was wirklich schlimm ist. Alle Ansätze, die sowohl ssh connection
als auch the tcp server
am Leben erhalten, um queries
auszuführen, wenn sie ankommen, wären eine große Hilfe. Vielen Dank!