Apache DolphinScheduler SSH 数据源:RemoteShell 远程执行的核心配置与源码原理

发布时间:2026/9/23 10:13:04

Apache DolphinScheduler SSH 数据源:RemoteShell 远程执行的核心配置与源码原理 Apache DolphinScheduler SSH 数据源RemoteShell 远程执行的核心配置与源码原理【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/gh_mirrors/do/dolphinschedulerSSH 数据源是 Apache DolphinScheduler 中为数不多的非数据库型数据源它不用于建立 JDBC 连接而是为RemoteShell远程 Shell任务组件提供远程主机鉴权信息让工作流可以在任意可通过 SSH 访问的机器上执行命令。阅读本文后你将掌握 SSH 数据源的完整配置项、参数校验规则、连接测试机制以及从数据源到任务执行的底层调用链从而在实际项目中正确搭建远程命令执行场景。一、SSH 数据源在 DolphinScheduler 中的定位在 官方数据源文档 中明确说明该数据源专用于 RemoteShell 组件以便在远程主机上执行命令。它与其他数据源MySQL、Hive、Spark SQL 等最大的区别在于其他数据源服务于 SQL 类任务最终会产出 JDBC URL 与连接SSH 数据源不产生 JDBC 连接——从源码看SSHDataSourceProcessor 的getJdbcUrl()、getValidationQuery()、getDatasourceDriver()均返回空字符串getConnection()直接返回null它承载的是主机 端口 用户名 密码/公钥这类 SSH 登录凭证由 Apache MINA SSHD 客户端库消费。因此凡是想在 DolphinScheduler 工作流中对非 Worker 所在机器下发命令的场景如运维脚本、跨机部署、远程巡检都可以通过 SSH 数据源 RemoteShell 任务组合实现。二、在管理界面创建 SSH 数据源在 DolphinScheduler Web UI 中进入数据源中心新建数据源选择类型SSH表单如下图所示各配置项说明如下继承自官方文档并补充源码细节配置项说明源码对应字段数据源类型Data Source固定选择SSHDbType.SSH数据源名称Data Source Name自定义名称用于任务中引用该数据源BaseDataSourceParamDTO.name描述Description对该数据源的补充说明可选BaseDataSourceParamDTO.noteIP 主机名IP Hostname远程 SSH 服务器地址支持 IP 或域名BaseDataSourceParamDTO.host端口PortSSH 服务端口默认值为 22可在创建时修改SSHConnectionParam.port用户名Username用于登录远程主机的用户名BaseDataSourceParamDTO.userName密码Password密码认证方式的登录密码BaseDataSourceParamDTO.password公钥Public Key密钥认证方式使用的公钥内容SSHDataSourceParamDTO.publicKey其中publicKey字段是 SSH 数据源特有的扩展字段SSHDataSourceParamDTO在继承BaseDataSourceParamDTOdolphinscheduler-datasource-api的基础上仅新增了这一个属性。认证方式的选择从连接参数模型 SSHConnectionParam 可以看到最终落库的凭证包含user、password、publicKey、host、port五个字段支持两种认证方式密码认证只填用户名和密码连接时通过session.addPasswordIdentity(password)注入密码身份公钥认证填写用户名与公钥内容连接时由KeyPairResourceLoader解析公钥并调用session.addPublicKeyIdentity(keyPair)注入密钥身份。两种方式可以同时配置代码会按先后顺序分别注入密码身份与公钥身份见 SSHUtils.getSession()。三、参数校验哪些字段是必填的在 SSHDataSourceProcessor.checkDatasourceParam() 中定义了严格的校验逻辑if (StringUtils.isEmpty(datasourceParamDTO.getHost()) || StringUtils.isEmpty(datasourceParamDTO.getUserName())) { throw new IllegalArgumentException(ssh datasource param is not valid); }即IP 主机名host与用户名userName为必填项任一为空都会抛出IllegalArgumentException并导致创建失败。端口、密码、公钥则为可选端口不填时使用默认值 22密码与公钥可以按认证方式二选一或同时提供。这一点在单元测试 SSHDataSourceProcessorTest.testCheckDatasourceParam() 中得到了验证空 DTO 抛异常、只填 host 仍抛异常、补齐 userName 后才通过校验。四、连接测试数据源测试连接按钮背后的原理创建或编辑 SSH 数据源时点击测试连接按钮后端实际执行的是SSHDataSourceProcessor.checkDataSourceConnectivity()try (SshClientWrapper sshClientWrapper new SshClientWrapper( baseConnectionParam.getHost(), baseConnectionParam.getPort(), baseConnectionParam.getUser(), baseConnectionParam.getPassword(), baseConnectionParam.getPublicKey())) { return sshClientWrapper.isAuth(); } catch (Exception e) { log.error(ssh test connection failed, e); return false; }其底层实现位于 SshClientWrapper使用SshClient.setUpDefaultClient()创建 Apache MINA SSHD 客户端并start()connect(userName, ip, port)建立会话连接超时 10 秒分别注入密码身份与公钥身份公钥通过SecurityUtils.getKeyPairResourceParser()解析isAuth()调用clientSession.auth().verify(Duration.ofSeconds(10)).isSuccess()完成实际认证认证超时同样为 10 秒认证成功返回true否则返回false。测试用例testTestConnection()展示了连接失败返回false以及 mock 认证成功后返回true的两条路径与该实现一致。五、数据源唯一标识DolphinScheduler 为每个数据源生成唯一 ID 用于缓存与去重SSH 数据源的生成规则位于getDatasourceUniqueId()return MessageFormat.format({0}{1}{2}{3}, dbType.getName(), baseConnectionParam.getHost(), baseConnectionParam.getUser(), PasswordUtils.encodePassword(baseConnectionParam.getPassword()));即格式为ssh主机用户名加密密码密码在拼接前会经过PasswordUtils.encodePassword()处理。测试用例testGetDatasourceUniqueId()验证了sshlocalhostroot123456这一输出形式。六、RemoteShell 任务如何消费 SSH 数据源SSH 数据源的直接消费者是 RemoteShell 任务。在 RemoteExecutor 中可以看到完整的调用链任务运行时从数据源取出SSHConnectionParam构造RemoteExecutorgetSession()复用 SSHUtils.getSession() 建立并认证ClientSession通过ChannelExec在远程主机上执行 Shell 命令并借助 SFTPSftpFileSystem完成脚本文件传输远程脚本工作目录固定为/tmp/dolphinscheduler-remote-shell-%s/按任务实例格式化任务状态通过DOLPHINSCHEDULER-REMOTE-SHELL-TASK-STATUS-标记回传执行状态轮询间隔为 5000ms。此外SSHUtils.getSession()中还设置了会话心跳session.setSessionHeartbeat(HeartbeatType.IGNORE, Duration.ofSeconds(3))每 3 秒发送一次心跳以防止空闲会话被服务端断开这对长时间运行的远程命令尤为重要。因此整个链路可以概括为SSH 数据源凭证模型SSHConnectionParam→ RemoteShell 任务RemoteExecutor→ Apache MINA SSHDSshClient/ClientSession→ 远程主机 Shell。七、实践建议与注意事项优先使用密钥认证相比密码公钥认证更安全且便于在目标主机统一维护。公钥内容直接粘贴到公钥Public Key字段即可支持标准 OpenSSH 公钥格式如测试用例中的ssh-rsa AAAAB...。注意端口一致性SSH 数据源默认端口为 22若远程主机使用非标准端口如 2222务必在创建时显式填写否则连接测试会失败。连接超时阈值连接与认证的超时时间在源码中为 510 秒级别SSHUtils连接 verify 为 5000msSshClientWrapper连接与认证为 10 秒。对网络抖动较明显的环境应确保目标主机可达、防火墙放行对应端口。复用连接与心跳保活RemoteShell 任务会复用会话且设置了 3 秒心跳长时间任务无需担心空闲断连但大量并发远程任务会占用较多 SSH 连接资源需结合集群规模合理规划。主机名解析checkDatasourceParam仅做非空校验不校验主机是否真实可达请确保 Worker执行 RemoteShell 任务的节点能解析并访问该主机地址。八、进一步阅读数据源官方文档docs/docs/en/guide/datasource/ssh.mdSSH 数据源插件源码dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-sshSSH 数据源单元测试SSHDataSourceProcessorTest.javaRemoteShell 任务实现RemoteExecutor.java【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/gh_mirrors/do/dolphinscheduler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/23 10:13:04

3个坑让大文件下载崩溃,面试必问的正确姿势

3个坑让大文件下载崩溃,面试必问的正确姿势 配置环境就卡半天?别急,这锅不怪你,是代码没写对。很多学员在培训机构里只背了 response.send_file 这行代码,结果上线后遇到 2GB…

2026/9/23 10:08:04

亚远景-ASPICE 评估实践:VAL.1 确认,别把确认活动等同于系统测试

ASPICE SYS.5 系统验证,主要用来核对系统产出物能不能满足系统需求文档写出来的内容。ASPICE VAL.1 确认的目标,是确认产品在实际预期使用条件下,可以满足利益相关方的真实期望,重点面向用户使用场景、运行设计域 ODD。很多项目做…

2026/9/23 10:08:04

yy在线直播卡顿排查:3个代码坑点速查手册

yy在线直播卡顿排查:3个代码坑点速查手册 复制来的代码跑不通不知道怎么调,这是很多接手旧项目的开发者的噩梦。特别是处理 yy在线直播 这类高并发实时音视频业务时,一段看似简单的 WebSocket…

2026/9/23 10:58:15

SEO诊断与网站性能优化实战指南

1. 网站SEO诊断与性能优化实战指南作为一名经历过上百个网站优化项目的技术顾问,我深知SEO和性能优化对企业线上业务的重要性。很多企业投入大量资源做推广,却忽视了网站本身的优化,导致流量转化率低下。本文将分享一套经过实战检验的完整解决…

2026/9/23 10:58:15

1050ti显卡驱动面试必问:3个致命坑让你项目跑不起来

1050ti显卡驱动面试必问:3个致命坑让你项目跑不起来 很多后端和AI工程师刚接触GPU加速时,都会陷入一个怪圈:语法背得滚瓜烂熟,PyTorch和CUDA指令信手拈来,但真到了搭项目环境时,1050ti显卡驱动就成了一堵墙。更扎心的是,…

2026/9/23 10:58:15

JSP毕设实战:SQL Server车辆管理系统并发控制与部署避坑指南

简介:这是一套面向计算机专业本科生的毕业设计级Java Web项目源码,聚焦住宅小区车辆管理场景,适用于JSPSQL Server技术栈的学习与实践。系统功能完整,涵盖用户中心、车辆进出登记、车位分配与预约、管理员权限分级及网站基础配置等…

2026/9/23 10:58:15

GEO行业资源对接指南:打破信息孤岛,提升效率

1. 项目背景与核心价值在GEO(地理空间信息)行业摸爬滚打这些年,最常被同行问到的就是"哪里能找到靠谱的数据供应商"、"谁家遥感解译做得专业"这类资源对接问题。这个行业存在一个典型矛盾:一方面产业链条长、…

2026/9/23 10:58:15

3个维度看懂分级阅读:图解原理与选型指南

3个维度看懂分级阅读:图解原理与选型指南 学会语法却不知怎么搭项目?别慌,这不是你的错。很多开发者卡在“代码能跑”到“系统能稳”的断层,根源在于没搞懂底层逻辑。今天用图解原理拆解分级阅读,帮你把碎片知识拼成完整拼图。…

2026/9/23 10:53:14

ApiGo对话式接口平台:MCP协议与REST API生成实战

1. 从“写代码”到“说需求”:ApiGo 到底想解决什么问题第一次看到“对话即是开发”这个说法,我脑子里蹦出来的不是某个具体产品,而是一个很朴素的场景:后端同学花两天时间写完一套 CRUD 接口,前端同学等了两天&#x…

2026/9/22 10:02:42

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/22 9:07:39

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/23 0:01:54

3个实战技巧搞定形式英语:从看教程到跑通性能优化

3个实战技巧搞定形式英语:从看教程到跑通性能优化 看了一堆教程还是不会写项目?别慌,这种“眼高手低”的困境在开发者圈子里太常见了。很多人以为卡点在语法,其实真正拦路虎是缺乏将知识点串联成完整链路的能力。今天咱们不聊虚的,直接拿【形式英语】这…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码