为了数据安全,在MongoDB的配置文件里,一般会把默认的27017端口port改为自定义的端口号,然后把允许访问的IP设为127.0.0.1(即主机本身)。但是这样就会在开发的过程查看数据时带来麻烦,必须去服务器端或调用部署在服务器的API接口才能很好地可视化地查询数据。为了能在客户端也能使用可视化工具,可以建立一条SSH隧道,直接在客户端访问远程服务器的数据库。

本文例子基于以下开发环境:

服务器端:Ubuntu 16.04 x86_64,MongoDB 3.4.6

客户端:Windows10 x86_64,Robomongo 1.0.0-RC1,PuTTY或XShell

=========================================================================

有两种思路可以建立SSH隧道以实现客户端Robomongo访问服务器MongoDB,一是使用PuTTY或XShell连接服务器时建立隧道,将服务器的MongoDB监听端口映射到客户端的指定端口,这样在客户端使用Robomongo连接本地的指定端口即可访问到服务器的MongoDB端口,缺点是连接数据库前需要保持PuTTY或者XShell处于与数据库的连接状态;二是使用Robomongo自带的建立SSH隧道方式,只需要在Robomongo新建连接,输入建立SSH会话所需的用户名密码或者密钥,相当于使用Robomongo登录到服务器,然后在服务器访问本地的MongoDB端口即可,优势在于不需要单独建立SSH连接(没错这种方法才是推荐使用的,但是第一种就可以不局限于Robomongo的连接)。

=========================================================================

注意:因为SSH隧道是基于TCP Forward建立的,因此,在sshd配置文件里一定要允许TCPForwarding,我开始配置sshd的时候将这个禁用了,所以爬了好久才爬出这个坑。

$ sudo vim /etc/ssh/sshd_config

修改如下字段:

AllowTCPForwarding yes

重启sshd

$ sudo systemctl restart sshd

另外,要把MongoDB的配置文件进行修改,使其仅能通过本地访问:

$ sudo vim /etc/mongod.conf

修改如下字段:

net:

port: 27017

bindIP: 127.0.0.1

=========================================================================

一、使用PuTTY或XShell建立客户端与服务器的SSH隧道

PuTTY: 设置好登录信息(包括服务器IP端口用户密码密钥等)后,在左侧栏找到Connection/SSH/Tunnels,Add new forwarded port下,Source Port 填写需要映射到客户端的端口号,Destination填写服务器的主机和端口号(服务器的主机当然是localhost了)下面选Local和Auto即可,然后点击Add,保存以便下次登录方便,点击Open即可建立SSH隧道连接。

然后,打开Robomongo,新建连接到localhost:27018即可连接到服务器的MongoDB了。

或者说,可以通过监听本地的27018端口即可监听到服务器的27017端口。

类似地,使用XShell时,填写好登录主机端口用户名密码密钥等信息后,在左侧栏找到SSH/隧道,添加TCP/IP转移规则类型为Local, 源主机即使客户端的主机及侦听端口,目标则是服务器的主机及端口,确定后连接,即可建立SSH隧道。

=========================================================================

二、使用Robomongo自带的SSH隧道

打开Robomongo,在连接设置里的SSH选项卡中启用SSH tunnel并设置登录SSH服务器的信息,回到Connection选项卡,填入主机(localhost)与服务器上MongoDB对应的端口。保存连接即可。

配置SSH隧道访问Ubuntu服务器上的MongoDB的更多相关文章

  1. Flask+Nginx+uWSGI在Ubuntu服务器上的配置

    Flask+Nginx+uWSGI在Ubuntu服务器上的配置 Step1 安装系统环境 Ubuntu服务器选择是阿里云的ECS服务,ECS提供单独的内存\CPU\带宽\存储规格可以选择,并且提供合适 ...

  2. ubuntu服务器上配置tomcat

    前言 嗯,最近想在自己的腾讯云服务器上跑个项目玩玩,由于服务器是重装的系统,所以,只能自己手动装tomcat. 不过,tomcat是基于java的,必须又java环境tomcat才能够使用,因此首先要 ...

  3. 在ubuntu服务器上安装tomcat 9

    前提条件: 确保ubuntu服务器上 已经安装 java 8 或更高版本,安装java8可以参考我的另一篇博文 通过 ppa 在ubuntu server 上安装java 8 java -versio ...

  4. 如何将web项目部署到Ubuntu服务器上

    情景回顾: 前几天在下本着人道主义原则帮我老师的一个朋友做了个小网页,(啥人道不人道的,主要是给钱了),做完之后本来是想偷懒直接把网页扔给他自己部署去吧,结果让我帮忙部署一下,得,偷懒也偷不成了,搞吧 ...

  5. 通过ssh隧道访问mysql(转载)

    我的机器可以连接服务器A,A可以访问服务器B上的mysql,但是我的机器不能访问B,所以我需要建立一个我本地机器到服务器A的ssh隧道来访问服务器B上的mysql. 理一下思路: 1.我要ssh的服务 ...

  6. 无法访问 CentOS7服务器上应用监听的端口

    无法访问 CentOS7服务器上应用监听的端口 参考资料 云主机上Centos7配置Iptables规则开启80.3306等端口https://blog.csdn.net/qq_37960007/ar ...

  7. Ubuntu服务器上相关软件或应用时常打不开的问题

    于接触linux系统时间不就,所以在操作上难免会出现失误,以下两个问题就是近期经常出现的问题,具体如下: 1.ubuntu服务器上的浏览器时常打不开. 2.安装的pycharm和系统自带的pychar ...

  8. 浏览器通过http协议通过nginx访问ftp服务器上的文件

    1.修改nginx配置文件 2.修改nginx默认目录为ftp默认目录 3.修改成自定义路径后,并修改此目录第一行,修改为root或是nginx用户 4.重新加载 cd /usr/local/ngin ...

  9. 在阿里云的ubuntu服务器上安装xampp时出现unable to realloc unable to realloc 8380000 bytes错误

    在阿里云的ubuntu服务器上安装xampp时出现unable to realloc unable to realloc 8380000 bytes错误 解决:增加Swap空间(阿里云缺省没有分配任何 ...

随机推荐

  1. Linux命令 文件压缩及压缩命令

    gzip [功能说明] 文件的压缩 #gizp属于GNU软件,总性能不错,是Linux系统首选的压缩工具,tar归档命令的-z参数也是利用gzip/gunzip来解压缩 [语法格式] Gip[选项][ ...

  2. 推荐几个Dynamic Crm的大神博客

    ghostbear的博客:http://blog.csdn.net/ghostbear/article/category/1072859 ghostbear大神的博客是新手学习Dynamics Crm ...

  3. JMS 之 Active MQ 启动嵌入式Broke

    一.如何启动active MQ 服务 (一).使用命令启动 /bin 目录下 ./activemq start 默认使用conf/activemq.xml 配置文件 b.[root@localhost ...

  4. Java注解--实现简单读取excel

    实现工具类 利用注解实现简单的excel数据读取,利用注解对类的属性和excel中的表头映射,使用Apache的poi就不用在业务代码中涉及row,rows这些属性了. 定义注解: @Retentio ...

  5. go语言获取变量的数据类型

    package main import "fmt" import "reflect"; var y string = "sdasd" fun ...

  6. linux发行版和内核的关系

    转自:http://m.blog.csdn.net/article/details?id=50595230 Linux内核是计算机操作系统的核心.一个完整的 Linux发行版包括了内核与一些其他与文件 ...

  7. 2017全球互联网技术大会回顾(附PPT)

    有幸遇见 GITC2017上海站,刚好遇见你! 为期两天(6.23~24)的GITC大会在上海举行,我有幸参加了24号的那场,也就是上周六,之所以今天才来回顾,是我想等PPT出来后分享给大家! 这应该 ...

  8. hive集成sentry的sql使用语法

    Sentry权限控制通过Beeline(Hiveserver2 SQL 命令行接口)输入Grant 和 Revoke语句来配置.语法跟现在的一些主流的关系数据库很相似.需要注意的是:当sentry服务 ...

  9. JVM总结之命令行工具

    jps jps位于jdk的bin目录下,其作用是显示当前系统的java进程情况,及其id号. jps相当于Solaris进程工具ps.不象"pgrep java"或"ps ...

  10. QQ信鸽推送

    闲来无事,看看腾讯的信鸽推送! 优点: 1.毕竟大腿出的东西,不会太差 2.集成快 3.推送效率高,功能强,APP后台被杀的情况下同样能接受到推送. 废话少说,直接上代码: 源代码.zip