Il était facile pour moi de me connecter à mon serveur mysql distant sur AWS en utilisant un sequelpro , mais j'ai du mal à faire la même chose avec mongodb.
J'ai essayé de configurer un tunnel ssh via la ligne de commande comme ceci:
ssh -fN -l root -i path/to/id_rsa -L 9999:host.com:27017 host.com
Je l'ai également essayé en remplaçant l'hôte par une adresse IP
l'idée est de transmettre toutes les connexions mongodb sur le port 9999 à celle sur l'hôte sur le port 27101 .. cependant quand j'exécute la commande:
mongo --host localhost --port 9999
la connexion échoue, j'obtiens ceci à la place:
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
si je cours, sudo netstat -plnt
j'obtiens ce qui suit (qui semble en ordre):
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
une idée de ce que je fais mal?
mise à jour: voici à quoi ressemble la commande fonctionnelle finale (crédit à kenster ):
ssh -fN -i ~/path/to/id_rsa -L 6666:localhost:27017 [email protected]
où la -fN
commande fait exécuter cette commande en arrière-plan
-L
semble contredire la page de manuel de ssh:-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.
elle dit explicitement quehost
c'est l'hôte du serveur distant .. vous l'utilisez pour local?J'ai fait quelques configurations sur ma boîte Ubuntu 18 Vagrant afin de réussir à connecter MongoDB à distance à l'aide de Robo 3T GUI. Je l'ai expliqué dans les étapes suivantes.
À l'intérieur du shell mongo, tapez la commande suivante pour créer un nouvel utilisateur administrateur.
Par défaut, mongodb est configuré pour autoriser les connexions uniquement à partir de l'hôte local (IP 127.0.0.1). Nous devons autoriser les connexions à distance depuis n'importe quelle adresse IP. La modification suivante ne doit être effectuée que sur votre serveur de développement. Ouvrez le fichier etc / mongod.conf et effectuez la modification suivante.
Toujours dans la même option de sécurité de décommentation du fichier mongod.conf et ajoutez l' option d' autorisation comme indiqué ci-dessous.
Enregistrez et quittez le fichier mongod.conf et redémarrez le serveur mongodb.
Téléchargez et installez l'outil GUO Robo 3T.
Sur l'interface graphique de Robo 3T, dans les paramètres de connexion, vous devez effectuer quelques modifications comme indiqué sur les captures d'écran ci-dessous.
Entrez le nom d'utilisateur et le mot de passe de la base de données d' administration mongodb que vous avez créés précédemment.
Ici, j'ai entré mes informations d'identification ssh de la boîte Ubuntu 18 Vagrant.
Enregistrez les modifications et appuyez sur l' icône de connexion pour voir si la connexion fonctionne correctement.
la source