Мені було легко підключитися до мого віддаленого сервера mysql на AWS за допомогою секвелпро , однак я намагаюся зробити те ж саме з mongodb.
Я спробував налаштувати ssh тунель за допомогою командного рядка так:
ssh -fN -l root -i path/to/id_rsa -L 9999:host.com:27017 host.com
Я також спробував це, замінивши хост на IP-адресу
ідея полягає в тому, щоб переслати всі підключення mongodb на порт 9999 до того, що знаходиться на хості на порту 27101 .. однак, коли я запускаю команду:
mongo --host localhost --port 9999
з'єднання не вдається, я отримую це замість цього:
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
якщо я запускаю, sudo netstat -plnt
отримую наступне (що здається в порядку):
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
будь-яка ідея, що я роблю неправильно?
оновлення: ось як виглядає остаточна функціональна команда (кредит йде до kenster ):
ssh -fN -i ~/path/to/id_rsa -L 6666:localhost:27017 root@remote.server.com
де -fN
команда змушує цю команду виконуватись у фоновому режимі
-L
здається, суперечить сторінці ssh man:-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.
там прямо написано, щоhost
це хост віддаленого сервера .. ви використовуєте його для локальних?