场景描述
有一台拥有公网IP的服务器,提供SSH服务,端口22,可远程连接;该服务器拥有多网卡,配有内网IP; 从数据安全角度内网的Oracle不提供公网服务,但SSH服务器所在内网端可以访问数据库服务器;
现在需要访问数据库服务器,进行数据操作,首先想到的方法:在SSH服务器上安装Oracle客户端,使用SQL*PLUS访问数据库;或者使用一些第三方数据库管理客户端;
无论是使用Oracle客户端还是第三方数据库管理端,都涉及到软件的安装、配置,这都有可能对现有机器环境造成影响,而且还不一定有在SSH服务器上安装软件的权限,怎么办?
SSH端口转发
SSH提供了端口转发功能,就以SecureCRT配置为例:
1 先用SecureCRT 建立一个会话,选择“选项” 中的 “会话选项”-> “连接”->“端口转发”
选择 【添加 】:
【名称】oa_1521 (名称最好清晰)
【手工选择允许访问的本地 IP地址】 使用默认,可不指定 127.0.0.1
【端口】11521 (找一个本机并未使用的端口)
【远程】 ->【目的主机不同于SSH服务】填数据库的IP 地址
【端口】 填Oracle的监听端口 如1521
2 现在就可以用SecureCRT 连接刚才新建的会话了,连接上SSH
3 修改本机的ORACLE TNSNAMES.ORA,添加配置:
1 | TNS_NAME = |
其中SERVICE_NAME 为数据库服务监听的真实SERVER_NAME
打开PL/SQL进行登录测试,成功!
整个流程:
PL/SQL—>127.0.0.1:11521—ssh –>SSH服务器—转发—>数据库服务器:1521
同理,相同的办法也就是整个内网的服务都可以访问了
注:当前使用SecureCRT版本V6.2.3,不同版本可能会存在不同的配置选项名称