如果我想在本机通过localhost的2521端口直接访问远程数据库,可以通过SSH隧道进行端口转发来实现。
本机运行如下命令:
ssh -L localhost:2521:192.168.3.50:1521 -i ~/env/id_rsa oracle@129.154.214.178
其中,
localhost:2521 - 指定通过本机的2521端口访问
192.168.3.50 - 远程数据库的私有IP
1521 - 远程数据库的监听端口
-i ~/env/id_rsa - 指定私钥 (PEM格式证书,通过ssh-keygen直接生成)
129.154.214.178 - 远程数据库公有IP
运行上述命令后,我们可以查看一下,2521端口已经处于监听状态了:
hysunhe@hysunpc:~$ lsof -i:2521
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ssh 9796 hysunhe 4u IPv6 119303 0t0 TCP ip6-localhost:2521 (LISTEN)
ssh 9796 hysunhe 5u IPv4 119304 0t0 TCP localhost:2521 (LISTEN)
再用SQLcl客户端工具连一下数据库(通过localhost 2521连),发现能正常连上,说明对localhost:2521的访问已经转发到了对数据库服务器的192.168.3.50:1521访问:
hysunhe@hysunpc:~$ sql sys/BotWelcome123##@localhost:2521/PDB1.regionalpublics.hysunhevcn.oraclevcn.com as sysdba
SQLcl: Release 22.3 Production on Mon Mar 06 19:56:22 2023
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Connected to:
Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
Version 19.18.0.0.0
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
_________ ___________ _____________ _____________
3 PDB1 READ WRITE NO
SQL>