0

0

怎么通过SSH通道连接Oracle_跳板机安全配置指南

P粉602998670

P粉602998670

发布时间:2026-03-17 09:00:02

|

557人浏览过

|

来源于php中文网

原创

SSH隧道连Oracle本质是端口转发:通过ssh -L将本地端口(如15210)映射至内网Oracle的1521端口,客户端直连localhost:15210即可,无需登录跳板机;跳板机需能直连Oracle,本地只需SSH可达;配置时HOST填127.0.0.1、PORT填本地映射端口,tnsnames.ora等不需改Oracle侧配置。

SSH隧道连Oracle,本质是端口转发,不是“跳板登录”

很多人误以为要先 ssh 登录跳板机、再从它里面连 oracle——其实完全不需要。真正起作用的是 ssh -l 建立的本地端口映射:把本机某个端口(比如 15210)悄悄“转接”到内网 oracle 实例的 1521 端口上。之后所有数据库客户端(pl/sql、dbeaver、python)都只连 localhost:15210,流量自动经跳板机中转,oracle 甚至感知不到你在外网。

  • 跳板机必须能直连 Oracle 服务器(即 telnet oracle-ip 1521 通),且防火墙放行
  • 本地机器只需能 SSH 连上跳板机(ssh -p 22 user@jump-host 成功即可)
  • Oracle 监听器 listener.ora 不需要改;但 sqlnet.ora 中若启用了 tcp.validnode_checking=yes,得把跳板机 IP 加进 tcp.invited_nodes
  • 别用 -Nf 后台运行就不管了——断开后隧道失效,客户端会报 ORA-12541: TNS:no listener

命令行建隧道:用 ssh -L,别碰 ProxyJump

ProxyJump 是用来“SSH 跳转登录远程主机”的,和数据库连接无关。连 Oracle 只需最朴素的端口转发:ssh -L。它轻量、稳定、全平台支持(包括 Windows 的 OpenSSH 和 WSL)。

  • 基础命令:ssh -L 15210:192.168.10.5:1521 user@jump-server.dealiaxy.com -p 22
  • 15210 是你本地空闲端口(避开 1521、3306 等常用端口)
  • 192.168.10.5 是 Oracle 数据库真实内网 IP(不是跳板机 IP!)
  • -C 压缩传输(尤其跨公网时)、-g 允许其他设备通过本机访问该端口(如手机调试用)
  • Windows 上若用 PuTTY,对应设置在 Connection → SSH → Tunnels,Source port 填 15210,Destination 填 192.168.10.5:1521,选 Local + Auto

PL/SQL Developer 或 DBeaver 怎么填连接参数?

填的是“映射后的本地地址”,不是跳板机或 Oracle 真实地址。tnsnames.ora 或 GUI 表单里,HOST 写 127.0.0.1,PORT 写你本地映射端口(如 15210),SERVICE_NAME 和用户名密码照旧。

  • PL/SQL:Database 字段填 127.0.0.1:15210/ORCL(或你实际的服务名)
  • DBeaver:新建 Oracle 连接 → Host=127.0.0.1, Port=15210, Database=ORCL;驱动类保持 oracle.jdbc.OracleDriver
  • 如果提示 ORA-12537: TNS:connection closed,大概率是隧道进程已退出,重跑 ssh -L 即可
  • 别在 DBeaver 里勾选“Use SSH tunnel”——那是给它自己建隧道用的,和你手动建的冲突

Python 用 sshtunnel 自动化,关键在 remote_bind_address

脚本里不能写死跳板机密码(尤其上线环境),要用密钥认证;且 remote_bind_address 必须是 Oracle 服务器的内网地址+端口,不是跳板机地址。

NameGPT名称生成器
NameGPT名称生成器

免费AI公司名称生成器,AI在线生成企业名称,注册公司名称起名大全。

下载
  • 示例关键段:
    with SSHTunnelForwarder(
        ('jump-server.dealiaxy.com', 22),
        ssh_username='user',
        ssh_pkey='/home/user/.ssh/id_rsa',  # 推荐用密钥,不用密码
        remote_bind_address=('192.168.10.5', 1521),  # 注意:这里是 Oracle 内网地址!
        local_bind_address=('127.0.0.1', 38399)
    ) as server:
        conn = cx_Oracle.connect('user/pass@localhost:38399/ORCL')
  • 如果 Oracle 开了加密(SQLNET.ENCRYPTION=REQUIRED),客户端也得配对应 wallet 或 sqlnet.ora,否则连上也握手失败
  • 别漏掉 server.start()SSHTunnelForwarder 上下文管理器已隐式处理,但手动实例需显式调)
  • 隧道建立耗时约 1–2 秒,高频短连接场景(如 Web API)建议复用隧道对象,而非每次新建

隧道本身不加密 Oracle 流量,它只负责“搬数据”。Oracle 层面的加密、认证、审计,还得靠 sqlnet.ora 配置和数据库 PROFILE 策略来兜底——这点最容易被忽略。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

1135

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

340

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

381

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

2257

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

380

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

1763

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

587

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

441

2024.04.29

chatgpt使用指南
chatgpt使用指南

本专题整合了chatgpt使用教程、新手使用说明等等相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号