Jenkins远程连接Windows执行命令

环境说明

        我在一台linux服务器上安装了Jenkins服务作为Jenkins服务器,除此之外,还有一台Windows电脑,安装了python环境,本地保存着自动化测试用的python代码,这台电脑用于执行基于chrome浏览器的自动化web测试。2台机器都处在同一个网络里。

        现在想要达到的效果是,利用Jenkins的定时构建任务,让Windows电脑能够定时地执行自动化测试,并返回结果,不需要人为的手动点击运行。

        想要达到效果,第一步需要解决的就是Jenkins如何与Windows连接。众所周知,Windows的远程是RDP协议的,而Jenkins是通过SSH协议进行文件传输及命令传输的,所以先要让Windows支持SSH协议连接。

Windows安装SSH服务

        在Windows上安装SSH服务的应用有很多,比如OpenSSH,freeSSHd等,本文举例通过安装openssh server,来实现Jenkins通过SSH连接windows服务器。

        Windows安装OpenSSH可以按照我写的另外一篇文章来安装,地址:https://blog.youkuaiyun.com/v781423070/article/details/131322758

安装和配置Jenkins

        Jenkins的安装和基本配置可以查看我写的另外一篇文章,地址:https://blog.youkuaiyun.com/v781423070/article/details/130456211

Jenkins安装Publish Over SSH插件

打开Manage Jenkins→Plugins→Available plugins界面,搜索框中输入SSH,安装Publish Over SSH插件,如下图(因为我已经安装过了,所以没搜索出来),安装完成后重启Jenkins服务生效。

Jenkins配置SSH连接

打开Manage Jenkins→System界面,如下图红框,找到Publish over SSH下的SSH Servers选项。(没有安装Publish Over SSH插件则不会显示选项)

如下图红框

Name:连接名称,随便写。

Hostname:要远程连接的主机ip,我要远程的Windows电脑的ip是172.20.1.144。

Username:远程连接账号,如果电脑通过OpenSSH来实现的SSH服务,则账号就是正常windows远程桌面连接的账号,就是正常登录电脑的账号。

Remote Directory:可以为空,也可以输入/。(输入/,则它对应的就是windows下面的C盘下面的用户下面对应的用户名的目录)

勾选复选框并填写登录密码:如果电脑通过OpenSSH来实现的SSH服务,则账号密码就是正常windows远程桌面连接的账号密码,就是正常登录电脑的账号密码。

填写Port:远程主机的SSH端口。

Timeout(ms):超时时间默认300000。

其他都可以为空不用填写,填写完点击右下角Test Configuration测试一下,左下角出现Success则代表连接成功,链路通了。

点击保存按钮,保存。

Jenkins创建任务来实操

点击【新建Item】

输入一个任务名称,选择Freestyle project,点击确定。

填写任务描述,随便写。

其他的比如【源码管理】【构建触发器】【Build Steps】【构建后操作】这些配置项在这里就不再赘述了,根据想法来构建任务。

这里主要重点说一下【构建环境】,勾选Send files or execute commands over SSH after the build runs。(没有装Publish Over SSH插件则不会显示选项)

Name:选择SSH链接名。(注意:这里写的是链接名,并不是远程主机ip)

在Exec command输入栏中输入需要远程Windows主机执行的命令,命令前面需加“cmd /c”,否则不会执行命令。比如下图红框内的命令意思就是,执行C:\Users\YVIEW\PycharmProjects\124\目录下的run.bat文件。

点击高级按钮,将Exec timeout时间改为0,防止运行超时中断。

其他选项不用填写,保存。构建任务,如下图,查看日志,显示成功了。(实际在windows电脑上自动化测试也已经自动执行了,目的达到了)

我在Exec command输入栏中输入的是让远程机执行批处理文件,批处理文件内容如下图,已经把要操作的命令写在了文件里,最终只要执行bat文件就行。bat文件的内容意思就是,进入到C盘的\Users\YVIEW\PycharmProjects\124目录下,这个目录是Pycharm其中的一个项目目录,然后再执行man.py文件,运行代码执行自动化测试。

其他问题

上面的实操,Windows用的是OpenSSH来建立连接的,但我还尝试了安装freeSSHd来建立SSH连接,(安装freeSSHd操作可查看我的另外一篇文章,地址:https://blog.youkuaiyun.com/v781423070/article/details/131324571),但是,遇到了问题,用linux命令行连接是建立成功的,但是在Jenkins里报了错,如下图,报错信息应该是SSH算法有问题,目前还没有找到解决办法。

对于整个Jenkins环境的其他想法

        目前就2台机器,一台是Jenkins服务器,一台是Windows测试电脑,Jenkins远程连接Windows并发送执行远程命令,Windows执行测试并返回结果,这个方案解决了不需要人为手动来点击运行执行测试的麻烦,可以来定时地执行任务。

        但,Jenkins能做到的远远不止这些。

        如果把测试代码上传到Git,通过Jenkins从Git处下载代码到Jenkins服务器,然后Jenkins服务器本地打包代码,再远程连接Windows,再把文件发送过去,再执行远程命令,Windows再来执行自动化测试并返回结果。这个方案既解决了无需手动点击运行的麻烦,又解决了如果测试代码有变动,无需手动copy到Windows的麻烦。

        Jenkins可以用触发构建任务(当有代码更新了就去拉取)或轮询触发任务(定时地去拉取)都可以,也很灵活。

<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$实现多节点并行部署
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值