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),仅供参考
企业数字化 ERP 产品动态
相关推荐
Oracle 哈希连接读书笔记:从执行计划到 TaoToken 配置的实践复盘 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/23 10:12:53
Win10卸载IE实战与源码解析:3步搞定遗留代码迁移 Win10卸载IE实战与源码解析:3步搞定遗留代码迁移 看了一堆教程还是不会写项目?别急,今天直接上干货。很多老项目里还死死绑定着 IE 的 ActiveX 控件,Win10… · 2026/9/23 10:12:33
炸裂,ICONIP也来一篇GraphRAG 今天分享一篇被 ICONIP 2026 接收、来自墨尔本理工学院的论文GRASP。
一句话方案:学生把n道题的答案混写成一段无标记文字,系统用图增强检索GRAG从参考库里捞回全部黄金参考、匈牙利算法一对一配对后逐段打分——零训练数据,n3时黄金参考捞回… · 2026/9/23 10:53:51
通信工程面试避坑:3个高频API陷阱与新手实战指南 通信工程面试避坑:3个高频API陷阱与新手实战指南 刚拿到通信工程offer的应届生,最崩溃的时刻往往不是八股文背不完,而是面试时面试官轻描淡写问一句:“说说你对TCP握手握手的理解?”你张嘴就来三次握手,结果对方追问:“如果第三次ACK丢… · 2026/9/23 10:53:51
Atlas 300V 24G上跑通YOLOv5:环境搭建、模型转换与ACL推理实战 1. 先搞明白Atlas 300V 24G接手的是一张什么卡我在昇腾生态里摸爬滚打两年多,说句实在话,Atlas系列卡是目前市面上极少数能“自研芯片完整工具链”走通AI推理落地的产品线。很多朋友第一次接触Atlas 300V 24G时,习惯性把它当成一张“类GPU”的… · 2026/9/23 10:53:44
Atlas 300V 24G推理卡部署YOLO实战:从模型转换到MindX流水线 当同事把一块Atlas 300V 24G加速卡递到我手里,开口就问“这卡能不能跑YOLO”的时候,我愣了一下。不是因为问题难,而是因为“能跑”和“跑得好”在昇腾生态里完全是两码事。再加上“Atlas 300V 24G到底是不是运算加速卡”这种最基础的问题&… · 2026/9/23 10:53:38
2026年AI拟人聊天软件实测:从角色设定到记忆系统的完全指南 这两年AI拟人聊天软件确实是卷到一个新高度了。打开应用商店搜索AI聊天,排在前面的基本都主打“人格化陪伴”,但这个赛道早几年前就有雏形,现在算是真正爆发了。我作为一个常年研究AI应用的人,前后体验过不下三十款这类产品&#… · 2026/9/23 10:53:38
Atlas 300V 24G 深度解析:AI推理加速卡与YOLO部署实战指南 在接触 Atlas 300V 24G 之前,我一度以为它跟普通显卡一样,插上就能跑 CUDA。实际到手我才发现,这卡从定位到部署流程都完全是另一套玩法。先说结论:它确实是一块实打实的运算加速卡,但它不是 GPU,也不是训练… · 2026/9/23 10:53:38
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29