2016-04-13 7 views
1

Ich verwende das tunnel-ssh Modul, um Verbindung zur entfernten mysql Datenbank herzustellen, die node.js verwendet. Die Dokumentation ist schlecht und ich kann keine Verbindung herstellen. Hier ist der Code-Schnipsel:Node.js stellen Verbindung zu remote mysql Server her unter Verwendung von tunnel-ssh

var tunnel = require('tunnel-ssh') 
var server = tunnel.tunnel(config.sshData, function(err, result) {console.log('connected'}); 

Hier ist mein sshData Objekt.

config.sshData = {host : 'serverxyz.web-hosting.com', username : 'xyz', password : 'xyz', 
srcPort: 3307, dstPort : 21098} 

Die dstPort ist 21098 wie von der namecheap documentation vorgeschlagen.

jedoch Timeout-Fehler Ich erhalte und wenn ich diese Schnipsel hinzufügen:

server.on('error', function(err) {}); 

ich server.on is not a function bekommen den Fehler. Die Fernverbindung funktioniert einwandfrei unter putty und SQLyog. Jedes Verfahren zur Herstellung einer erfolgreichen Verbindung wäre eine große Hilfe. Vielen Dank!

aktualisieren

Haben Sie die Datenbank, indem Sie die richtigen Ports angegeben und durch direkte Verwendung ssh2 Modul mit dem Codebeispiel here

+0

Ich denke, dass dstPort der Port ist, auf dem Ihre DB verfügbar ist. Also, wenn die DB auf localhost läuft: 3307 dann benutze 'dstPort: 3307' – Molda

+0

Ich habe die richtige Portnummer verwendet, wie von der Antwort angegeben, immer noch Timeout-Fehler –

Antwort

1

Es ist ein Missverständnis mit der Dokumentation gegeben Namecheap arbeiten. 21098 ist der ssh Port, nicht der Port, auf den die Datenbank wartet. Um ein Nicht-Standard-SSH-Port zu verwenden, müssen Sie explizit den port Wert angeben, wie:

config.sshData = { 
    host: 'serverxyz.web-hosting.com', 
    port: 21098, 
    username: 'xyz', 
    password: 'xyz', 
    dstPort: 3306 
}; 

Dann sollten Sie in der Lage sein, um localhost:3306 zu verbinden Remote-Datenbank zuzugreifen.

+0

Vielen Dank für Ihre Antwort. Ich erhalte einen Timeout-Fehler, selbst wenn der richtige Port wie angegeben verwendet wird. 'events.js: 141 werfen er; // Nicht behandelte 'Fehler' Ereignis ^ Fehler: Zeitüberschreitung beim für Handshake wartet bei null._onTimeout (.. \ node_modules \ tunnel ssh \ node_modules \ ssh2 \ lib \ Client.js: 569: 19) bei Timer.listOnTimeout (timers.js: 92: 15) ' –

+0

Ich bin in der Lage, eine Verbindung zum Remote-Host herzustellen und' uptime' wie erwähnt [hier] (https://github.com/mscdex/ssh2) auszuführen. Irgendwelche Ideen für das weitere Vorgehen wären eine große Hilfe! –

+0

Ich habe die db funktioniert von Ihrem Code unter (https://github.com/mscdex/ssh2/issues/351) –

Verwandte Themen