为了数据安全,在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对应的端口。保存连接即可。

最新文章

  1. 4.View绘制分析笔记之onDraw
  2. java分享第十八天( JAVA利用enum结合testng做数据驱动示例)
  3. 在ie浏览器,360浏览器下,margin:0 auto;不居中的原因
  4. catalina
  5. [SmartFoxServer概述]SFS2X栈平台
  6. LocalStorage 本地存储
  7. 从Delphi 7升级到Delphi XE
  8. 收集整理的非常有用的PHP函数
  9. deepin2014.1快捷键
  10. Solitaire
  11. python2x如何迁移代码到python3中
  12. DevExpress ASP.NET Core Controls 2019发展蓝图(No.1)
  13. Spring+SpringMVC+MyBatis+easyUI整合进阶篇(八)线上Mysql数据库崩溃事故的原因和处理
  14. springMvc前后台传值各种情况
  15. 【转】classpath和环境变量设置
  16. CentOS配置rsyslog Serve
  17. ajax和302(转)
  18. Object -c基础知识(5)--release 之后 retainCount为何为1
  19. Halcon的一维条码解码步骤和解码技巧
  20. Android开发 Android Studio2.0 教程从入门到精通Windows版 - 入门篇

热门文章

  1. 深入理解 JavaScript 事件循环(二)— task and microtask
  2. 常见浏览器User-Agent大全
  3. ecshop循环计数
  4. Advice详解
  5. go语言获取变量的数据类型
  6. linux 小技巧(查找替换文件中的ascii编码字符)
  7. 【LeetCode】237. Delete Node in a Linked List
  8. 【Android Developers Training】 70. 使用ViewPager实现屏幕滑动
  9. eclipse在多modules项目结构下避免模块间依赖引用的场景
  10. 开始JAVA编程的敲门砖——JAVA开发环境搭建