Es war einfach für mich, mit einem Sequelpro eine Verbindung zu meinem Remote-MySQL-Server unter AWS herzustellen , aber ich habe Mühe, mit Mongodb dasselbe zu tun.
Ich habe versucht, einen SSH-Tunnel über die Befehlszeile wie folgt einzurichten:
ssh -fN -l root -i path/to/id_rsa -L 9999:host.com:27017 host.com
Ich habe es auch mit dem Ersetzen des Hosts durch eine IP-Adresse versucht
Die Idee ist, alle Mongodb-Verbindungen auf Port 9999 an den Host auf Port 27101 weiterzuleiten. Wenn ich jedoch den Befehl ausführe:
mongo --host localhost --port 9999
die verbindung schlägt fehl, ich bekomme stattdessen folgendes:
MongoDB shell version: 2.6.0
connecting to: localhost:9999/test
channel 2: open failed: connect failed: Connection timed out
channel 3: open failed: connect failed: Connection timed out
2014-05-22T14:42:01.372+0300 DBClientCursor::init call() failed
2014-05-22T14:42:01.374+0300 Error: DBClientBase::findN: transport error: localhost:9999 ns: admin.$cmd query: { whatsmyuri: 1 } at src/mongo/shell/mongo.js:148
exception: connect failed
wenn ich laufe sudo netstat -plnt
bekomme ich folgendes (was in ordnung zu sein scheint):
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 4242/node
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1342/httpd2-prefork
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2552/sshd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2505/master
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 11719/mongod
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 16561/redis-server
Hast du eine Ahnung, was ich falsch mache?
update: so sieht der letzte funktionale befehl aus ( gutschrift geht an kenster ):
ssh -fN -i ~/path/to/id_rsa -L 6666:localhost:27017 [email protected]
Wobei der -fN
Befehl diesen Befehl im Hintergrund ausführen lässt
-L
scheint der SSH-Manpage zu widersprechen.-L [bind_address:]port:host:hostport Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.
Sie sagt ausdrücklich, dass dieshost
der Host des Remote-Servers ist.Ich habe auf meiner Ubuntu 18 Vagrant-Box nur wenige Konfigurationen vorgenommen, um MongoDB über die Robo 3T-Benutzeroberfläche aus der Ferne erfolgreich zu verbinden. Ich habe in den folgenden Schritten erklärt.
Geben Sie in der Mongo-Shell den folgenden Befehl ein, um einen neuen Administratorbenutzer zu erstellen.
Standardmäßig ist mongodb so konfiguriert, dass nur Verbindungen von localhost (IP 127.0.0.1) zugelassen werden. Wir müssen Remoteverbindungen von jeder IP-Adresse zulassen. Die folgende Änderung sollte nur auf Ihrem Entwicklungsserver vorgenommen werden. Öffnen Sie die Datei etc / mongod.conf und nehmen Sie die folgenden Änderungen vor.
Deaktivieren Sie in derselben mongod.conf- Datei die Sicherheitsoption und fügen Sie die unten gezeigte Berechtigungsoption hinzu .
Speichern und beenden Sie die Datei mongod.conf und starten Sie den mongodb-Server neu.
Laden Sie das Robo 3T-GUI-Tool herunter und installieren Sie es.
Auf der Robo 3T-Benutzeroberfläche müssen Sie in den Verbindungseinstellungen nur wenige Änderungen vornehmen, wie in den folgenden Screenshots gezeigt.
Geben Sie den Benutzernamen und das Kennwort der mongodb admin- Datenbank ein, die Sie zuvor erstellt haben.
Hier habe ich meine Ubuntu 18 Vagrant Box ssh Zugangsdaten eingetragen.
Speichern Sie die Änderungen und drücken Sie auf das Verbindungssymbol, um zu prüfen, ob die Verbindung ordnungsgemäß funktioniert.
quelle