问题描述:
客户的一个需求,想要在外网访问公司内网的数据库,但数据库只有内网IP,不通直接连接.目前的方法是先登陆
到公司有外网IP的跳板机,然后再在跳板机上通过sqlplus访问数据库.客户希望能在不开放数据库外网的情况下
使用客户端的pl/sql dev直接连接数据库.
解决方法:
通过在跳板机上设置ssh端口映射,在客户端连接跳板机上的某端口后自动转发到内网数据库的端口,来实现客户端
ps/sqldev直接连接数据库.
具体操作:
跳板机外网IP:192.108.96.117
跳板机内网IP:192.108.56.117
数据库内网IP:192.108.56.120
1.设置跳板机ssh端口映射ssh -CNfg -L 1234:192.108.56.120:1521 oracle@192.108.56.120
参数说明:
ssh -CNfg -L 跳板机端口:数据库内网IP:数据库内网端口 用户名@数据库内网IP
-C:压缩数据传输。
-N :不执行脚本或命令
-f :后台认证用户/密码,通常和-N连用,不用登录到远程主机。
-g :在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口
-L 本地端口:目标IP:目标端口
2.外网客户端tnsnames.ora中加入
testssh=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.108.96.117)(PORT = 1234))
)
(CONNECT_DATA =
(SERVICE_NAME = 内网数据库服务名)
)
)
3.通过pl/sql dev连接testssh,即连接到内网数据库.
备注:
设置ssh端口映射后,可以通过netstat -an|grep 跳板机端口,来查看链路是否已经建立.
关闭ssh端口映射,通过ps -ef|grep CNfg|grep -v grep查看pid,kill掉即可
ssh端口映射参考文章:http://blog.csdn.net/gaoming655/article/details/7231517
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28539951/viewspace-1765056/
,如需转载,请注明出处,否则将追究法律责任。