云自动化工具:WinRM vs SSH

[文章最初由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 条评论
登录 后参与评论

相关文章

来自专栏IT技术精选文摘

聊聊C10K问题及解决方案

1 C10K问题 大家都知道互联网的基础就是网络通信,早期的互联网可以说是一个小群体的集合。互联网还不够普及,用户也不多。一台服务器同时在线100个用户估计在当...

5289
来自专栏linux驱动个人学习

硬盘写到一半时断电,文件系统里会发生什么?

知乎问题: 断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗? 更进一步的, 文件系统如何保证事务性, 会不...

2894
来自专栏Java后端技术栈

大型网站技术架构总结一二

早期的网站为了节省成本一般会设计成集中式系统,应用程序、数据库等都部署在一台服务器上。 但随着业务的快速度发展,逐渐出现瓶颈,按一定原则**(应用拆分、服务拆分...

1192
来自专栏dotnet & java

不要使用Resource Owner Password Credentials

最近公司项目在做一些重构,因为公司多个业务系统各自实现了一套登录逻辑,比较混乱。所以,现在需要做一个统一的鉴权登录中心,准备用IdentityServer4来实...

1104
来自专栏迁移服务平台

腾讯云文件迁移使用指南

迁移上云的时候,会有迁移上腾讯云对象存储(cos)的需求,目前的迁移方案有两种:1、cos提供的COS Migration工具;2、客户自己利用友商和cos的a...

3434
来自专栏IT大咖说

VMware vSphere 6.7 新功能介绍

内容来源:2018 年 06 月 19 日,VMware大中华区原厂高级技术讲师姚泉在“VMware在线技术专题分享·第二期”进行《VMware vSphere...

4623
来自专栏架构师之路

数据库软件架构设计些什么

缘起:受@萧田国 萧总邀请,上周五晚上在“高效运维1号群”内分享了《58同城数据库软件架构设计与实践》(这个topic今年在数据库大会上分享过),应组织方要求,...

36811
来自专栏即时通讯技术

开源轻量级IM框架MobileIMSDK v3.0发布!

本次更新为主版本更新,更新内容包含了简化了消息发送目标的方式、支持Web版与APP版互通、优化了Protocal协议结构等主要升级,详细更新内容见“版本更新说明...

1841
来自专栏ThoughtWorks

大型项目程序配置管理演化之路|TW洞见

今日洞见 文章作者、图片来自ThoughtWorks:窦衍森。封面图片来自网络。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司...

3286
来自专栏非著名程序员

Android开发方便快捷的8个好工具,你造吗?

Android是第二个最流行的用于 智能手机和平板电脑 的操作系统。这里有8个最好的 Android工具以许多不同的方式 帮助开发人员 ,例如 - SDK和AV...

1957

扫码关注云+社区