Jenkins Pipeline 密钥实现远程部署

本文介绍了如何在Jenkins Pipeline中配置SSH密钥进行远程部署,详细解析了片段生成和脚本配置步骤,包括withCredentials的使用方法。重点指出SSH密钥对方式与用户名/密码方式在Jenkinsfile脚本结构上的差异,帮助提升服务器账户的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pipeline

Jenkins 版本:Jenkins 2.341



一、配置流程

1.1 片段生成

1、按如下图选择

image-20220719122921121

2、新增密钥信息

image-20220719133057946

1.2 脚本配置

以上配置完成后,接下来就可以在 Jenkinsfile 中配置了,具体配置如下图:

image-20220719135426042

⚠️注意:使用密钥形式的推送方式,sshPutsshCommand 等相关命令必须放到 remote.* 下,否则报如下错误:

image-20220719135840068

withCredentials.usernamePassword 方式不同的是,withCredentials.usernamePassword 则可以紧跟 remote.* ,也可以不紧跟,具体如下:

image-20220719135558238

二、小结

为了服务器账户安全,jenkins 远程部署时可使用withCredentials() 方法来实现密码加密,常用的有用户名/密码方式、SSH 用户密钥对 方式来实现,当然还有其他方式,图下图所示:

image-20220719133812902

但要注意的一点是,用户名/密码方式和SSH 用户密钥对 方式在 Jenkinsfile 脚本结构上有一点小区别:

  • SSH 用户密钥对 方式:sshPutsshCommand 等相关命令必须紧跟 remote.*

  • 用户名/密码方式:sshPutsshCommand 等相关命令可以紧跟 remote.*,也可以不紧跟。

至此,Jenkins Pipeline 密钥远程部署已经配置完成!

<think>好的,用户的问题是关于如何配置Jenkins实现对Windows节点的远程部署。我需要先理清楚用户的具体需求,然后根据提供的引用内容来组织答案。用户可能已经有一定的Jenkins使用经验,但可能在Windows节点的配置上遇到问题。首先,我应该确认用户是否已经完成了基本的环境准备,比如安装Open SSH或者配置Slave节点。 根据提供的引用,特别是引用[4]和引用[5],配置Windows节点需要安装Open SSH服务器和客户端,并且在Jenkins中安装Publish Over SSH插件。同时,引用[2]提到需要在Slave节点上打开Jenkins的工作页面,这可能涉及到节点的连接方式,比如通过SSH或者JNLP。用户可能遇到的常见问题包括SSH连接失败、权限问题或者Git操作失败,如引用[3]中提到的Git pull失败的情况。 接下来,我需要将步骤分解,确保每一步都清晰,并且引用正确的参考内容。例如,在安装Open SSH时,引用[4]详细说明了安装步骤,这部分需要准确转述。同时,配置Jenkins节点时,引用[5]提到了添加Slave节点的具体方法,可能需要指导用户如何在Jenkins界面中操作。 另外,用户可能需要优化建议,比如使用SSH密钥认证代替密码,或者配置Webhook自动化触发构建,这些内容虽然引用中没有直接提到,但可以基于一般经验进行补充。同时,故障排查部分需要结合引用中的问题,比如SSH连接失败和Git操作问题,给出解决方案。 最后,生成的相关问题需要围绕用户可能的后续疑问,比如性能优化、其他部署方式或者安全性设置,这可以帮助用户进一步探索解决方案。</think>### 分步配置Jenkins远程部署Windows节点 #### 一、基础环境准备 1. **Windows节点安装OpenSSH** - 打开Windows设置 → 应用 → 可选功能 → 添加功能 - 勾选$OpenSSH\ 服务器$和$OpenSSH\ 客户端$并安装[^4] - 启动SSH服务: ```powershell Start-Service sshd Set-Service sshd -StartupType Automatic ``` 2. **Jenkins插件安装** - 进入Dashboard → Manage Jenkins → Plugins - 安装$Publish\ Over\ SSH$插件(用于SSH通信)[^4] #### 二、节点连接配置 1. **SSH密钥配置** ```bash # 在Jenkins服务器生成密钥 ssh-keygen -t rsa # 将公钥复制到Windows节点 scp id_rsa.pub user@windows-host:C:\Users\user\.ssh\authorized_keys ``` 2. **Jenkins系统配置** - Dashboard → Manage Jenkins → Configure System - 找到$Publish\ over\ SSH$配置块: - Path to key:`/var/lib/jenkins/.ssh/id_rsa`(默认密钥路径)[^1] - 新增SSH Server: ```properties Name = WinNode01 Hostname = [Windows_IP] Username = Administrator Remote Directory = C:\Jenkins_Workspace ``` #### 三、节点注册与测试 1. **创建Slave节点** - Dashboard → Manage Nodes → New Node - 选择$Permanent\ Agent$类型[^5] - 关键参数配置: ```properties # 远程工作目录需与SSH配置一致 Remote root directory = C:\Jenkins_Workspace Launch method = Launch agents via SSH ``` 2. **连接验证** - 节点启动后检查日志: ```log [SSH] Opening SSH connection to 192.168.1.100:22 SSH authentication successful ``` - 在Windows节点验证工作目录生成情况[^2] #### 四、部署任务配置示例 ```groovy pipeline { agent any stages { stage('Deploy') { steps { sshPublisher( publishers: [ sshPublisherDesc( configName: 'WinNode01', transfers: [ sshTransfer( sourceFiles: 'build/*.exe', removePrefix: 'build', remoteDirectory: 'deploy' ) ] ) ] ) } } } } ``` ### 故障排查指南 | 现象 | 解决方案 | |-------|----------| | SSH连接超时 | 检查Windows防火墙是否开放22端口 | | 权限拒绝(publickey) | 确认`authorized_keys`文件权限设为600[^4] | | Git操作失败 | 改用Git Bash替代CMD执行命令[^3] | ### 优化建议 1. 使用$SSH\ Agent$插件管理密钥,避免明文存储密码 2. 配置$Webhook$实现代码提交自动触发部署 3. 通过$Pipeline\ Script$实现多节点并行部署
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值