CentOS7上Ansible2.7.5通过WinRM连Windows的两类报错求解决
解决CentOS7上Ansible 2.7.5通过WinRM连接Windows的OpenSSL相关报错
你遇到的这两个报错本质上都是CentOS7 yum源自带的pyOpenSSL版本过于老旧导致的,系统默认的0.13.1版本不支持Ansible 2.7.5连接WinRM所需的新特性,下面是一步一步的解决方法:
步骤1:卸载系统自带的旧版pyOpenSSL
首先把之前用yum装的老版本卸载掉:
sudo yum remove -y pyOpenSSL
步骤2:确保pip可用并升级
CentOS7默认可能没有pip,先安装pip,再升级到较新版本避免安装依赖时出问题:
# 安装pip sudo yum install -y python-pip # 升级pip sudo pip install --upgrade pip
步骤3:安装兼容版本的pyOpenSSL和cryptography
因为CentOS7用的是Python2.7,所以要选择支持Python2.7的最新兼容版本,推荐安装pyOpenSSL 19.1.0和cryptography 2.8(这个组合和Ansible2.7.5适配性很好):
sudo pip install pyOpenSSL==19.1.0 cryptography==2.8
步骤4:安装WinRM相关依赖
确保Ansible连接WinRM所需的pywinrm和CredSSP支持包也安装完整:
sudo pip install pywinrm pywinrm[credssp]
验证安装
安装完成后可以查看版本确认:
pip show pyOpenSSL cryptography
输出应该显示pyOpenSSL版本为19.1.0,cryptography为2.8。
现在重新运行你的Ansible ping任务,应该就能正常连接Windows机器了。
报错原因补充
- 第一个报错
X509_up_ref找不到,是因为旧版pyOpenSSL绑定的OpenSSL库没有这个函数; - 第二个报错
TLSv1_2_METHOD找不到,是因为旧版本不支持TLS1.2协议,而WinRM通常要求用TLS1.2来建立安全连接,尤其是使用CredSSP认证的时候。
内容的提问来源于stack exchange,提问作者sfgroups
相关产品推荐
相关产品推荐

