To było łatwe dla mnie, aby połączyć się z serwerem zdalnym mysql na AWS wykorzystaniem sequelpro jednak mam zmaga się robić to samo z MongoDB.
Próbowałem skonfigurować tunel ssh za pomocą wiersza poleceń:
ssh -fN -l root -i path/to/id_rsa -L 9999:host.com:27017 host.com
Próbowałem też, zastępując host adresem IP
Chodzi o to, aby przekazać wszystkie połączenia mongodb na porcie 9999 do połączenia na hoście na porcie 27101 .. jednak po uruchomieniu polecenia:
mongo --host localhost --port 9999
połączenie nie powiedzie się, zamiast tego otrzymuję:
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
jeśli uruchomię sudo netstat -plnt
, otrzymam następujące (co wydaje się w kolejności):
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
jakiś pomysł, co robię źle?
aktualizacja: tak wygląda końcowe polecenie funkcjonalne ( podziękowania dla Kenstera ):
ssh -fN -i ~/path/to/id_rsa -L 6666:localhost:27017 [email protected]
gdzie -fN
polecenie powoduje, że to polecenie działa w tle
-L
wydaje się być sprzeczny ze stroną podręcznika 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.
wyraźnie mówi, żehost
jest to host zdalnego serwera .. używasz go do lokalnego?Przeprowadziłem kilka konfiguracji na moim pudełku Ubuntu 18 Vagrant, aby pomyślnie połączyć MongoDB zdalnie za pomocą graficznego interfejsu użytkownika Robo 3T. Wyjaśniłem w następujących krokach.
Wewnątrz powłoki mongo wpisz następujące polecenie, aby utworzyć nowego użytkownika administratora.
Domyślnie mongodb jest skonfigurowany tak, aby zezwalał na połączenia tylko z hosta lokalnego (IP 127.0.0.1). Musimy zezwalać na zdalne połączenia z dowolnego adresu IP. Poniższej zmiany należy dokonać tylko na serwerze programistycznym. Otwórz plik etc / mongod.conf i wykonaj następujące zmiany.
Również w tej samej opcji bezpieczeństwa odkomentowania pliku mongod.conf i dodaj opcję autoryzacji , jak pokazano poniżej.
Zapisz i zamknij plik mongod.conf i zrestartuj serwer mongodb.
Pobierz i zainstaluj narzędzie GUI Robo 3T.
W interfejsie graficznym Robo 3T w ustawieniach połączenia musisz wprowadzić kilka zmian, jak pokazano na poniższych zrzutach ekranu.
Wprowadź nazwę użytkownika i hasło administratora bazy danych mongodb , które wcześniej utworzyłeś.
Tutaj wprowadziłem dane uwierzytelniające ssh dla Ubuntu 18 Vagrant.
Zapisz zmiany i naciśnij ikonę połączenia, aby sprawdzić, czy połączenie działa poprawnie.
źródło