当前位置: 首页 > news >正文

【Ansible】基于windows主机,采用NTLM+HTTPS 认证部署

我们现在准备Linux centos7(Ansible控制机)和Windows(客户机)环境下的详细部署步骤:

一、Windows客户机配置

1. 准备SSL证书

1.1 生成自签名证书(测试用)

以管理员身份打开PowerShell:

# 创建自签名证书
$cert = New-SelfSignedCertificate -DnsName $env:COMPUTERNAME -CertStoreLocation Cert:\LocalMachine\My# 查看证书指纹(记录下来,后面要用)
$cert.Thumbprint
1.2 导出证书(供Ansible控制机验证)
# 导出证书(不导出私钥)
Export-Certificate -Cert $cert -FilePath C:\winrm-cert.cer# 将证书复制到Ansible控制机(根据实际IP修改)
scp C:\winrm-cert.cer root@<ansible控制机IP>:/etc/ansible/certs/

2. 配置WinRM HTTPS监听器

继续在PowerShell中执行:

# 创建HTTPS监听器(使用刚才生成的证书)
winrm create winrm/config/listener?Address=*+Transport=HTTPS "@{Hostname=`"$env:COMPUTERNAME`"; CertificateThumbprint=`"$($cert.Thumbprint)`"}"# 启用NTLM认证
winrm set winrm/config/service/auth '@{NTLM="true"}'
winrm set winrm/config/service/auth '@{Negotiate="true"}'# 禁用非加密通信
winrm set winrm/config/service '@{AllowUnencrypted="false"}'# 配置服务允许远程管理
winrm set winrm/config/service '@{MaxConcurrentOperationsPerUser="100"}'# 重启WinRM服务
Restart-Service WinRM

3. 配置防火墙

# 允许5986端口(HTTPS WinRM)
New-NetFirewallRule -DisplayName "WinRM HTTPS" -Name "WinRM-HTTPS" -Protocol TCP -LocalPort 5986 -Action Allow

二、Linux Ansible控制机配置

1. 安装必要组件

# 安装pywinrm(Ansible WinRM连接插件)
pip install pywinrm# 安装OpenSSL(用于证书验证)
sudo apt-get install openssl -y

2. 配置证书信任

# 创建证书目录(前面windows主机,如果拷贝到不是/etc/ansible/certs目录的话)
sudo mkdir -p /etc/ansible/certs# 将Windows证书复制到信任存储(假设证书已通过scp传到控制机)
sudo cp /tmp/winrm-cert.cer /etc/ansible/certs/# 用于在指定目录中创建或更新证书文件的哈希符号链接
sudo cacertdir_rehash /etc/ansible/certs/

3. 创建Ansible Inventory文件

创建 /etc/ansible/hosts 文件(注意:该目录的路径,一定需要和ansible.cfg中配置的一致,方可生效),内容如下:

[windows]
win-server ansible_host=<Windows服务器IP>[windows:vars]
ansible_user=Administrator
ansible_password=您的Windows管理员密码  # 建议使用ansible-vault加密
ansible_connection=winrm
ansible_winrm_transport=ntlm
ansible_winrm_server_cert_validation=validate  # 生产环境建议启用验证
ansible_winrm_ca_trust_path=/etc/ansible/certs/
ansible_winrm_port=5986

注意!注意!注意!
该hosts文件或者inventory.ini文件中,不允许出现 注释信息。不然,依然会报错!

4. 加密密码(可选但推荐)

# 创建加密密码
ansible-vault encrypt_string '您的明文密码' --name 'ansible_password'# 然后将输出结果替换inventory文件中的ansible_password值

三、连接测试

1. 基本连接测试

ansible windows -m win_ping -vvv

2. 验证加密连接

# 查看实际连接是否使用HTTPS
ansible windows -m raw -a "netsh advfirewall firewall show rule name=WinRM-HTTPS"

四、排错指南

如果咱们测试连接失败,请检查以下内容:

Windows端检查:

# 检查WinRM服务状态
Get-Service WinRM# 检查监听器
winrm enumerate winrm/config/listener# 查看安全日志(认证问题)
Get-EventLog -LogName Security -Newest 20 | Where-Object {$_.EventID -eq 4625}

Linux端检查:

# 测试端口连通性
telnet <WindowsIP> 5986# 手动测试WinRM连接
curl -vk --ntlm -u "Administrator:密码" https://<WindowsIP>:5986/wsman

五、最终验证Playbook

创建一个文件 test_connection.yml

---
- name: 测试Windows安全连接hosts: windowsgather_facts: notasks:- name: 执行whoami命令验证身份ansible.windows.win_command: whoamiregister: result- name: 显示结果debug:var: result.stdout

运行测试:

ansible-playbook test_connection.yml

六、生产环境建议

  1. 证书:替换自签名证书为CA签发的正式证书
  2. 认证:考虑使用域账户代替本地管理员账户
  3. 加固:配置WinRM的IP限制和访问控制列表
  4. 监控:设置WinRM服务的日志监控

以上步骤完成后,我们的Ansible控制机,将通过加密的HTTPS通道,使用NTLM认证安全地管理Windows服务器。

相关文章:

【Ansible】基于windows主机,采用NTLM+HTTPS 认证部署

我们现在准备Linux centos7&#xff08;Ansible控制机&#xff09;和Windows&#xff08;客户机&#xff09;环境下的详细部署步骤&#xff1a; 一、Windows客户机配置 1. 准备SSL证书 1.1 生成自签名证书&#xff08;测试用&#xff09; 以管理员身份打开PowerShell&#…...

React19源码系列之 API(react-dom)

API之 preconnect preconnect – React 中文文档 preconnect 函数向浏览器提供一个提示&#xff0c;告诉它应该打开到给定服务器的连接。如果浏览器选择这样做&#xff0c;则可以加快从该服务器加载资源的速度。 preconnect(href) 一、使用例子 import { preconnect } fro…...

鸿蒙Next开发 获取APP缓存大小和清除缓存

1. 鸿蒙Next开发 获取APP缓存大小和清除缓存 1.1. 介绍 1.1.1. 文件系统分类 在最新的Core File Kit套件中&#xff0c;按文件所有者的不同。分为如下三类&#xff1a;   &#xff08;1&#xff09;应用文件&#xff1a;文件所有者为应用&#xff0c;包括应用安装文件、应用…...

PNG转ico图标(支持圆角矩形/方形+透明背景)Python脚本 - 随笔

摘要 在网站开发或应用程序设计中&#xff0c;常需将高品质PNG图像转换为ICO格式图标。本文提供一份基于Pillow库实现的&#xff0c;能够完美保留透明背景且支持导出圆角矩形/方形图标的格式转换脚本。 源码示例 圆角方形 from PIL import Image, ImageDraw, ImageOpsdef c…...

『大模型笔记』Langchain作者Harrison Chase专访:环境智能体与全新智能体收件箱

Langchain作者Harrison Chase专访:环境智能体与全新智能体收件箱 文章目录 摘要访谈内容什么环境智能体为什么要探索环境智能体怎么让人类能更方便地和环境智能体互动参考文献摘要 LangChain 的 CEO Harrison Chase 提出了_“环境智能体”(Ambient Agents)的概念,这是一种…...

GPT( Generative Pre-trained Transformer )模型:基于Transformer

GPT是由openAI开发的一款基于Transformer架构的预训练语言模型&#xff0c;拥有强大的生成能力和多任务处理能力&#xff0c;推动了自然语言处理&#xff08;NLP&#xff09;的快速发展。 一 GPT发展历程 1.1 GPT-1&#xff08;2018年&#xff09; 是首个基于Transformer架构…...

游戏引擎学习第275天:将旋转和剪切传递给渲染器

回顾并为今天的内容定下基调 我们认为在实现通用动画系统之前&#xff0c;先学习如何手写动画逻辑是非常有价值的。虽然加载和播放预设动画是合理的做法&#xff0c;尤其是在团队中有美术人员使用工具制作动画的情况下更是如此&#xff0c;但手动编写动画代码能让我们更深入理…...

conda 输出指定python环境的库 输出为 yaml文件

conda 输出指定python环境的库 输出为 yaml文件。 有时为了项目部署&#xff0c;需要匹配之前的python环境&#xff0c;需要输出对应的python依赖库。 假设你的目标环境名为 myenv&#xff0c;运行以下命令&#xff1a; conda env export -n myenv > myenv_environment.ym…...

ES6 语法

扩展运算符 … 口诀&#xff1a;三个点&#xff0c;打散数组&#xff0c;逐个放进去 例子&#xff1a; let arr [1, 2];let more [3, 4];arr.push(...more); // arr 变成 [1, 2, 3, 4]解构赋值 口诀&#xff1a;左边是变量&#xff0c;右边是值&#xff0c;一一对应 例子&…...

BFS算法篇——打开智慧之门,BFS算法在拓扑排序中的诗意探索(下)

文章目录 引言一、课程表1.1 题目链接&#xff1a;https://leetcode.cn/problems/course-schedule/description/1.2 题目分析&#xff1a;1.3 思路讲解&#xff1a;1.4 代码实现&#xff1a; 二、课程表||2.1 题目链接&#xff1a;https://leetcode.cn/problems/course-schedul…...

While语句数数字

import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner in new Scanner(System.in);int number in.nextInt();int count 0;while( number > 0 ){number number / 10;count count 1;}System.out.println(count);} }...

G1JVM内存分配机制详解

为什么堆内存不是预期的3G&#xff1f; 当您设置-XX:MaxRAMPercentage75时&#xff0c;JVM并不会简单地将容器内存(4G)的75%全部分配给堆&#xff0c;原因如下&#xff1a; 计算基准差异&#xff1a; 百分比是应用于"可用物理内存"而非"容器总内存" &q…...

“端 - 边 - 云”三级智能协同平台的理论建构与技术实现

摘要 随着低空经济与智能制造的深度融合&#xff0c;传统集中式云计算架构在实时性、隐私保护和资源效率上的瓶颈日益凸显。本文提出“端 - 边 - 云”三级智能协同平台架构&#xff0c;以“时空 - 资源 - 服务”三维协同理论为核心&#xff0c;构建覆盖终端感知、边缘计算、云端…...

【UAP】《Empirical Upper Bound in Object Detection and More》

Borji A, Iranmanesh S M. Empirical upper bound in object detection and more[J]. arXiv preprint arXiv:1911.12451, 2019. arXiv-2019 文章目录 1、Background and Motivation2、Related Work3、Advantages / Contributions4、Experimental Setup4.1、Benchmarks Dataset…...

Web Service及其实现技术(SOAP、REST、XML-RPC)介绍

一.概述 1.Web Service&#xff08;Web 服务&#xff09; Web Service 由万维网联盟 (W3C) 定义为一种软件系统&#xff0c;旨在支持通过网络进行可互操作的计算机间交互。 广义概念&#xff1a;基于 Web 技术&#xff08;如 HTTP 协议&#xff09;的跨平台、跨语言通信机制…...

基于Spring Boot+Layui构建企业级电子招投标系统实战指南

一、引言&#xff1a;重塑招投标管理新范式 在数字经济浪潮下&#xff0c;传统招投标模式面临效率低、透明度不足、流程冗长等痛点。本文将以Spring Boot技术生态为核心&#xff0c;融合Mybatis持久层框架、Redis高性能缓存及Layui前端解决方案&#xff0c;构建一个覆盖招标代理…...

【嵌入式】记一次解决VScode+PlatformIO安装卡死的经历

PlatformIO 是开源的物联网开发生态系统。提供跨平台的代码构建器、集成开发环境&#xff08;IDE&#xff09;&#xff0c;兼容 Arduino&#xff0c;ESP8266和mbed等。 开源库地址&#xff1a;https://github.com/platformio 在 VScode 中配置 PlatformIO 插件&#xff0c;记录…...

抗量子计算攻击的数据安全体系构建:从理论突破到工程实践

在“端 - 边 - 云”三级智能协同理论中&#xff0c;端 - 边、边 - 云之间要进行数据传输&#xff0c;网络的安全尤为重要&#xff0c;为了实现系统总体的安全可控&#xff0c;将构建安全网络。 可先了解我的前文&#xff1a;“端 - 边 - 云”三级智能协同平台的理论建构与技术实…...

【FMMT】基于模糊多模态变压器模型的个性化情感分析

遇到很难的文献看不懂,不应该感到气馁,应该激动,因为外审估计也看不太懂,那么学明白了可以吓唬他 缺陷一:输入依赖性与上下文建模不足​​ ​​缺陷描述​​: 传统自注意力机制缺乏因果关系,难以捕捉序列历史背景多模态数据间的复杂依赖关系未被充分建模CNN/RNN类模型在…...

力扣Hot100(Java版本)

1. 哈希 1.1 两数之和 题目描述&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同…...

Stream流简介、常用方法

Stream流的三类方法 获取Stream流 创建一条流水线&#xff0c;并把数据放到流水线上准备进行操作 中间方法 流水线上的操作一次操作完毕之后&#xff0c;还可以继续进行其他操作 终结方法 一个Stream流只能有一个终结方法是流水线上的最后一个操作 生成Stream流的方式 Collec…...

‌C# 集成 FastDFS 完整指南‌

‌1. 环境准备‌ ‌(1) 安装 FastDFS 服务端‌ 部署 Tracker 和 Storage 节点&#xff0c;确保服务正常运行。 配置 tracker_server 地址&#xff08;如 192.168.1.100:22122&#xff09;。 ‌(2) 添加 NuGet 包‌ 通过 NuGet 安装 FastDFS 客户端库&#xff1a; Install-Pack…...

重构门店网络:从“打补丁“到“造地基“的跨越

您是否遇到过这样的窘境&#xff1f; 新店开张要等一周&#xff0c;就为装根网线&#xff1b; 偏远地区门店三天两头断网&#xff0c;顾客排长队却结不了账&#xff1b; 总部想看实时数据&#xff0c;结果收到一堆乱码报错&#xff1b; 总部ERP系统升级&#xff0c;2000家门…...

TI的ADS1291代替芯片LH001-99

血管疾病严重威胁人类生命健康安全&#xff0c;随着人口老龄化进程的加快和社会压力等因素的增加&#xff0c;患病率正呈现逐年上升趋势&#xff0c;并且越来越年轻化。然而&#xff0c;心血管疾病大多由器官器质性病变引起&#xff0c;一旦患病很难完全康复&#xff0c;需要进…...

NPOI 操作 Word 文档

管理 NuGet 程序包 # word操作 NPOI# 图片操作 SkiaSharp Controller代码 using Microsoft.AspNetCore.Mvc; using NPOI.Util; using NPOI.XWPF.Model; using NPOI.XWPF.UserModel; using SkiaSharp;namespace WebApplication2.Controllers {[Route("api/Npoi/[action]…...

css3基于伸缩盒模型生成一个小案例

css3基于伸缩模型生成一个小案例 在前面学习了尚硅谷天禹老师的css3内容后&#xff0c;基于伸缩盒模型做的一个小案例&#xff0c;里面使用了 flex 布局&#xff0c;以及主轴切换&#xff0c;以及主轴平分等特性&#xff0c;分为使用css3 伸缩盒模型方式&#xff0c;已经传统的…...

精简大语言模型:用于定制语言模型的自适应知识蒸馏

Streamlining LLMs: Adaptive Knowledge Distillation for Tailored Language Models 发表&#xff1a;NAACL 2025 机构&#xff1a;德国人工智能研究中心 Abstract 诸如 GPT-4 和 LLaMA-3 等大型语言模型&#xff08;LLMs&#xff09;在多个行业展现出变革性的潜力&#xf…...

Rollup入门与进阶:为现代Web应用构建超小的打包文件

我们常常面临Webpack复杂配置或是Babel转译后的冗余代码&#xff0c;结果导致最终的包体积居高不下加载速度也变得异常缓慢&#xff0c;而在众多打包工具中Rollup作为一个轻量且高效的选择&#xff0c;正悄然改变着这一切&#xff0c;本文将带你深入了解这个令人惊艳的打包工具…...

博客系统技术需求文档(基于 Flask)

以下内容是AI基于要求生成的技术文档&#xff0c;仅供参考~ &#x1f9f1; 一、系统架构设计概览 层级 内容 前端层 HTML Jinja2 模板引擎&#xff0c;集成 Markdown 编辑器、代码高亮 后端层 Flask 框架&#xff0c;RESTful 风格&#xff0c;Jinja2 渲染 数据库 SQLi…...

快速排序、归并排序、计数排序

文章目录 前言一、归并排序算法逻辑递归实现非递归实现 二、快速排序算法介绍递归实现非递归实现算法的一种优化—三路划分法 四、计数排序算法原理代码实现优劣分析 五、排序算法的性能比较总结 前言 本文介绍这三种非常强大的排序算法&#xff0c;每种算法都有各自的特点、不…...

python语言与地理处理note 2025/05/11

1. 函数定义必须要在调用之前 &#xff08;1&#xff09;正确示例&#xff1a; def test():print("what a wonderful world!")test() &#xff08;2&#xff09;错误示例&#xff1a; test() def test():print("what a wonderful world!") 会报错&…...

贪心算法:最小生成树

假设无向图为&#xff1a; A-B:1 A-C:3 B-C:1 B-D:4 C-D:1 C-E:5 D-E:6 一、使用Prim算法&#xff1a; public class Prim {//声明了两个静态常量&#xff0c;用于辅助 Prim 算法的实现private static final int V 5;//点数private static final int INF Integer.MA…...

免费 OCR 识别 + 批量处理!PDF 工具 提升办公效率

各位办公小能手们&#xff01;今天给你们介绍一款超厉害的软件——PDF工具V2.2&#xff01;我跟你们说&#xff0c;这玩意儿就像是PDF界的超级英雄&#xff0c;专门搞定PDF文件的编辑、转换、压缩这些事儿。 先说说它的核心功能哈。基础文档管理方面&#xff0c;它能把好几个PD…...

尼康VR镜头防抖模式NORMAL和ACTIVE的区别(私人笔记)

1. NORMAL 模式&#xff08;常规模式&#xff09; 适用场景&#xff1a;一般手持拍摄&#xff0c;比如人像、静物、风景或缓慢平移镜头&#xff08;如水平追拍&#xff09;等。工作特性&#xff1a; 补偿手抖引起的小幅度震动&#xff08;比如手持时自然的不稳&#xff09;&am…...

在scala中sparkSQL读入csv文件

以下是 Scala 中使用 Spark SQL 读取 CSV 文件的核心步骤和代码示例&#xff08;纯文本&#xff09;&#xff1a; 1. 创建 SparkSession scala import org.apache.spark.sql.SparkSession val spark SparkSession.builder() .appName("Spark SQL Read CSV") …...

swift flask python ipad当电脑键盘 实现osu x键和z键 长按逻辑有问题 quart 11毫秒

键盘不行我5星都打不过&#xff0c;磁轴不在身边 127.0.0.1不行要用192.168哪个地址 from flask import Flask from pynput.keyboard import Controller from threading import Threadapp Flask(__name__) keyboard Controller()# 按下按键 app.route("/press_down/<…...

浅论3DGS溅射模型在VR眼镜上的应用

摆烂仙君小课堂开课了&#xff0c;本期将介绍如何手搓VR眼镜&#xff0c;并将随手拍的电影变成3D视频。 一、3DGS模型介绍 3D 高斯模型是基于高斯函数构建的用于描述三维空间中数据分布概率的模型&#xff0c;高斯函数在数学和物理领域有着广泛应用&#xff0c;其在 3D 情境下…...

React状态管理-对state进行保留和重置

相同位置的相同组件会使得 state 被保留下来 当你勾选或清空复选框的时候&#xff0c;计数器 state 并没有被重置。不管 isFancy 是 true 还是 false&#xff0c;根组件 App 返回的 div 的第一个子组件都是 <Counter />&#xff1a; 你可能以为当你勾选复选框的时候 st…...

嵌入式STM32学习——外部中断EXTI与NVIC的基础练习⭐

按键控制LED灯 按键控制LED的开发流程&#xff1a; 第一步&#xff1a;使能功能复用时钟 第二布&#xff0c;配置复用寄存器 第三步&#xff0c;配置中断屏蔽寄存器 固件库按键控制LED灯 外部中断EXTI结构体&#xff1a;typedef struct{uint32_t EXTI_Line; …...

git merge和git rebase

git merge和git rebase 在Git中merge和rebase都是git在管理整合分支的两种主要工具&#xff0c;但是他们的工作方式、提交历史影响和使用场景不同。 git merge 定义 将两个分支的提交历史合并&#xff0c;创建一个新的合并提交&#xff08;merge commit&#xff09;&#xff…...

我的MCP相关配置记录

1.VSCode的Cline中的MCP {"mcpServers": {"github.com/modelcontextprotocol/servers/tree/main/src/github": {"autoApprove": [],"disabled": false,"timeout": 60,"command": "cmd","args&quo…...

浅聊一下数据库的索引优化

背景 这里的索引说的是关系数据库&#xff08;MSSQL&#xff09;中的索引。 本篇不是纯技术性的内容&#xff0c;只是聊一次性能调优的经历&#xff0c;包含到一些粗浅的实现和验证手段&#xff0c;所以&#xff0c;大神忽略即可。 额…对了&#xff0c;笔者对数据库的优化手段…...

如何创建maven项目

1.IDEA 中创建 Maven 项目 步骤一&#xff1a;点击 File -> New -> Project&#xff0c;在弹出的窗口左侧选择 Maven&#xff0c;点击 Next&#xff1a; 步骤二&#xff1a;填写项目的 GroupId、ArtifactId、Version 等信息&#xff08;这些对应 pom.xml 中的关键配置&am…...

LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

一、引言 在自然语言处理领域,大规模预训练语言模型(LLMs)展现出强大的语言理解和生成能力。然而,将这些模型适配到多个下游任务时,传统微调方法面临诸多挑战。LoRA(Low-Rank Adaptation of Large Language Models)作为一种创新的微调技术,旨在解决这些问题,为大语言…...

Conda在powershell终端中无法使用conda activate命令

主要有以下原因&#xff1a; Windows PowerShell安全策略&#xff1a;默认情况下&#xff0c;PowerShell的执行策略设置为"Restricted"&#xff0c;这会阻止运行脚本&#xff0c;包括conda的初始化脚本。调用方式不同&#xff1a;在PowerShell中&#xff0c;需要使用…...

MySQL索引底层数据结构与算法

1、索引的数据结构 1.1、二叉树 1.2、红黑树(二叉平衡树&#xff09; 1.3、hash表 对key进行一次hash计算就可以定位出数据存储的位置 问题&#xff1a;hash冲突问题、仅满足和in的查找&#xff0c;不支持范围查找 1.4、B-tree 1.5、B tree 非叶子节点不存储data&…...

GOOSE 控制块参数gocbRef及goID有大小写要求

在 IEC 61850 标准中&#xff0c;GOOSE 控制块参数gocbRef和goID的大小写是严格区分的。这一结论基于以下多维度分析&#xff1a; 一、标准协议与配置文件的强制性 XML 语法的刚性约束 GOOSE 控制块的配置信息通过 SCL&#xff08;Substation Configuration Language&#xff…...

重庆医科大学附属第二医院外科楼外挡墙自动化监测

1.项目概述 重庆医科大学附属第二医院&#xff0c;重医附二院&#xff0c;是集医疗、教学、科研、预防保健为一体的国家三级甲等综合医院。前身为始建于1892年的“重庆宽仁医院”。医院现有开放床位 1380张&#xff0c;年门诊量超过百万人次&#xff0c;年收治住院病人4.5万人…...

3.4 数字特征

本章系统讲解随机变量的数字特征理论&#xff0c;涵盖期望、方差、协方差与相关系数的核心计算与性质。以下从四个核心考点系统梳理知识体系&#xff1a; 考点一&#xff1a;期望&#xff08;数学期望&#xff09; 1. 离散型随机变量的数学期望 一维情形&#xff1a; E ( X …...

servlet-api

本次内容总结 1、再次学习Servlet的初始化方法 2、学习Servlet中的ServletContext和<context-param> 3、什么是业务层 4、IOC 5、过滤器 7、TransActionManager、ThreadLocal、OpenSessionInViewFilter 1、再次学习Servlet的初始化方法 1&#xff09;Servlet生命周期&…...