You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现从远程机器向Jenkins工作区传输文件?

解决Jenkins从远程机器拉取文件到工作区的问题

别担心,你没遗漏核心逻辑,但确实有几个实用方案能搞定这种反向传输需求,我给你梳理两个最靠谱的:

方案1:用Publish Over SSH插件的「拉取文件」功能

你说得对,Publish Over SSH默认是往远程推文件,但其实它自带了拉取文件的隐藏能力,可能你没留意到。配置步骤很简单:

  • 进入Jenkins项目配置页,添加「Publish over SSH」构建步骤
  • 选择「Retrieve files」选项(而非默认的Send files)
  • 填写远程机器的文件路径(比如/remote/path/to/files/*),以及Jenkins工作区的目标路径(比如${WORKSPACE}/downloaded_files/)
  • 确保已经在Jenkins的SSH服务器配置里,完成了远程机器的公钥-私钥认证配置

这个方法不用写脚本,可视化操作就能搞定,适合不想折腾命令行的场景。

方案2:Shell脚本结合SSH Agent插件(更灵活)

如果需要定制化的传输逻辑,用Shell脚本搭配SSH Agent插件是绝佳选择——毕竟你已经有公钥-私钥认证基础了:

  1. 先安装「SSH Agent」插件,它能帮你安全管理Jenkins中的私钥,不用把密钥硬编码到脚本里
  2. 在项目构建步骤中添加「SSH Agent」,选择对应远程机器的私钥
  3. 在SSH Agent的嵌套步骤里添加「Execute shell」,用scp或rsync拉取文件:
    • 用scp的示例命令:
      scp -r user@remote-host:/remote/path/to/files/* ${WORKSPACE}/target/
      
    • 如果文件量大或需要增量同步,rsync更高效:
      rsync -avz user@remote-host:/remote/path/to/files/ ${WORKSPACE}/target/
      

这里要注意:${WORKSPACE}是Jenkins内置环境变量,直接指向当前项目的工作区路径,不用手动写死路径。

额外小提醒

  • 确保Jenkins运行用户(比如jenkins)的公钥已经添加到远程机器的~/.ssh/authorized_keys中,这样密钥认证才能正常生效
  • 如果是Jenkins Agent节点执行构建,要确保Agent机器也配置好对应SSH密钥,或者通过SSH Agent插件把密钥同步到Agent节点上

内容的提问来源于stack exchange,提问作者romawu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:23:48