这样一个场景:
A是办公网络的一台windows主机,
B是一台Linux堡垒机,
C是生产环境一台Oracle主机,
A只能访问B但A不能访问C,B可以访问到C,那怎样才可以使A机上的“ PLSQL Developer ”连接到C机上的ORACLE数据库呢?
1、在A上用secureCRT以ssh2协议远程登录到B,然后右击工具栏下方的连接选项卡,弹出的菜单如下图所示
2、单击“会话选项”,在弹出的对话框中,先单击左边菜单中的“端口转发”,再单击右边窗口中的“添加”按钮,如下图所示:
3、在上一步弹出的窗口中,按下图指示,把选项填写完整:
4、假设C的IP地址为XXX.XXX.XXX.XXX,oracle服务器实例提供服务的端口号为1521,则在第3步的图中,4)的地方就应填入XXX.XXX.XXX.XXX,5)的地方就应填入1521。再假设2)的地方设置的本地监听端口是9000,全部保存之后,就可以通过A机上的 " PLSQL Developer " 来访问C上的数据库实例提供的服务了。如果C上service_name是helloworld,在“ PLSQL Developer ”启动的登录窗口中,正确的输入数据库用户名和密码后,在数据库连接串一栏输入 "127.0.0.1:9000/helloworld”,就可以登录到C上的数据库了。如下图所示:
" PLSQL Developer "访问本地的9000端口的所有请求,都被secureCRT通过B机转发到C的1521端口了,从而A可以突破防火墙限制,访问C的服务。SSH Secure Shell工具也有类似功能。