前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云自动化工具:WinRM vs SSH

云自动化工具:WinRM vs SSH

作者头像
电工昌威
发布2018-01-12 15:24:20
2.3K0
发布2018-01-12 15:24:20
举报
文章被收录于专栏:技术视点技术视点技术视点

[文章最初由Barak Merimovich撰写]

Linux式的自动化工具

在Linux环境中,SSH(安全Shell)是远程连接和自动化的事实标准,用户可以使用SSH登录远程机器来安装工具和运行命令。它几乎无处不在,可以在多种Linux版本和发行版上运行,每个称职的Linux管理员都了解SSH,并知道如何配置它。SSH的默认端口(端口22)甚至是大多数云端默认启用的端口。

SSH的一个重要功能是支持通过安全复制协议(SCP)和安全文件传输协议(SFTP)进行文件传输。这些协议或作为工具的内置部分,或作为插件附属于其他长期可用的协议上。因此,使用SSH进行文件传输和远程执行命令基本可以看作是Linux自带的功能,甚至还有几乎支持所有主流编程语言和操作系统的SSH客户端。

Linux世界中的WinRM

所以Linux的开箱即用理念,与Windows是不同的。显然,Windows并不内置SSH;多年来,有不同的协议试图实现相同的功能,譬如安全Telnet以及其他协议,但迄今为止,没有一个真正成功。从Windows Server 2003开始,一个名为WinRM(Windows远程管理)的新工具被引入Windows 。WinRM是一个建立在Web服务上的、基于SOAP的协议,它给用户提供了一个Shell,允许用户连接到远程系统,本质上提供了与SSH相似的功能。

WinRM是目前Windows环境中SSH的替代品。

优点

WinRM的优点是,只要WinRM服务处于运行状态,你就可以使用一台没有进行过任何预先配置的vanilla虚拟机。现在最大的云提供商EC2支持这种开箱即用的方式,所以如果你想为Windows运行一个标准的亚马逊机器镜像(AMI),那WinRM默认是启用的。这使得在云上快速开展工作成为可能,只需要启动一个标准的Windows虚拟机,然后就可以对其进行远程配置,并开始使用它。

在无法创建自定义Windows镜像的云环境中,或者在镜像数量极少并需要限制资源使用情况时,这种特性非常有用。

挑战

相比SSH已经成为Linux协议的事实标准,WinRM在Windows环境中是一个远不为人所知的工具,虽然它提供了各式功能、与功能匹配的安全性以及连接和在远程机器上执行命令的能力。

通常使用WinRM的标准工具是PowerShell,这个新的Windows Shell旨在取代标准的命令提示符。但迄今为止,原生支持WinRM的编程语言仍然较少,这使得通过WinRM自动化和远程执行任务变得更为复杂。

为了完成这些任务,Cloudify使用PowerShell本身作为一个外部进程来充当访问WinRM的客户端库。但主要的问题是,客户端也需要运行Windows,因为PowerShell不能在Linux上运行。

WinRM和SSH的另一个不同之处在于它没有真正的内置文件传输。WinRM中没有直接等同于SSH中安全拷贝的功能。也就是说,我们只能通过创建PowerShell脚本实现文件传输。

目前有几个开源计划正在考虑为Linux,或者只针对某些编程语言(如Java),构建一个WinRM客户端,,但是这些开源计划均处于不同的开发阶段,都不能正常运行。因此,PowerShell仍然是Cloudify的默认工具,它基本是在Windows上,提供了类似于在Linux上运行远程命令的功能。

WinRM和安全

WinRM另一个值得考虑的特性是它支持加密。WinRM支持三种传输协议,HTTP、HTTPS和加密的HTTP。

使用HTTP,而这种线上协议不可避免地是未加密的。如果您完全确信没有人能够监控线上的任何事情,那么在您自己的数据中心内部使用HTTP是一个好主意。

通常我们使用HTTPS而不是HTTP,但是WinRM中存在鸡和蛋的问题。即如果您想使用HTTPS,那么你需要在远程计算机上设置SSL证书;但当从一个没有安装证书的vanilla Windows虚拟机开始操作时,插入SSL证书的过程需要自动进行,由于WinRM没有运行,因此又无法设置SSL证书。

加密的HTTP,这也是EC2中的默认传输协议,工作原理是使用用户登录凭据作为加密密钥。从安全角度来看,也推荐使用这种安全传输协议。值得注意的是,多数情况下,在创建WinRM客户端库时,都会在加密HTTP协议上遇到问题,因为实现微软的加密HTTP系统credSSP确实极具挑战。但是,有很多项目正在努力实现这一目标,所以在不久的将来,这个问题有望能够解决。

Cloudify与混合环境

WinRM在Cloudify中主要是在云引导过程中发挥作用。通过使用WinRM,Cloudify用户能够远程连接到云提供的vanilla虚拟机,并设置Cloudify管理器或代理,并使之在虚拟机上运行。

除了传统的云环境外,WinRM还可以在非云环境和非虚拟化环境下工作,例如运行多个Windows服务器的标准数据中心。只需要为Cloudify提供证书,它就可以使用WinRM远程连接和设置机器。由于WinRM是预先打包在Windows中,所以不需要安装任何东西,唯一的要求就是WinRM服务处于运行状态,因为不是所有的Windows镜像都会运行此服务。

结论

简而言之,WinRM是Windows中替代SSHD的功能,它允许您远程登录并在Windows机器上执行命令。从云自动化的角度来看,它提供了几乎所有必要的功能,因此建议在您的Windows环境中运行WinRM。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档