专栏首页技术视点云自动化工具:WinRM vs SSH

云自动化工具: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 条评论
登录 后参与评论

相关文章

  • Code2Cloud:不只是瓦解ALM

    VMware新发布的Code2Cloud很吸引人。根据公告,开发基础设施将作为一项服务交付,不需要安装,也不需要管理硬件或软件。Code2Cloud会替代编程/...

    电工昌威
  • 17个混合云安全威胁及解决方案

    反对者经常将混合IT云视为一种混乱的架构。但这并非混合IT云的问题,问题出在较差的网络执行、安全协议和管理上。无缝混合云的最大障碍是合规性不足、缺乏加密、风险评...

    电工昌威
  • 将Spring Boot应用程序部署到Bluemix

    在之前的博客文章中,我介绍了如何通过Swagger在Spring Boot应用程序中记录REST API。下面我将介绍如何将这些应用程序作为Docker容器部署...

    电工昌威
  • 云自动化:WinRM和SSH

    [最初由Barak Merimovich撰写的文章]

    Techeek
  • Mac下快捷键的收集整理

    最近刚换用了Mac的笔记本,因为之前是Linux用户,感觉切换的过程非常平滑,但是难免有些小不适应,在使用过程中,遇到一些快捷键,收集了下来,与大家分享。

    大江小浪
  • Windows Developer Day - Windows AI Platform

    本次 Windows Developer Day,最值得期待的莫过于 Windows AI Platform 了,可以说是千呼万唤始出来。观看直播的开发者们,留...

    Shao Meng
  • 微软安全公告—2016年8月

    微软于北京时间2016年8月10日发布了9个新的安全公告,其中5个为严重等级,4个为重要等级。本次更新主要修复Windows、Internet Explorer...

    嘉为科技
  • 10年 Windows 与 Linux 程序员的区别

    如果一个程序员从来没有在Linux、Unix下开发过程序,一直在Windows下面开发程序,同样是工作10年,大部分情况下与在Linux、unix下面开发10年...

    小小科
  • Visual Studio 2013 添加新项缺失[ADO.NET 实体数据模型]解决方法

          之前使用在Vs2012下使用SQLite+EF建的项目在VS2013下不能运行了,我把以前的*.edmx删除后准备重新添加以下 .可是,在添加新项目...

    hbbliyong
  • 用Vue实现一个全选指令

    最近用vue做了两个项目,都需要实现全选反选的功能,两个项目用了两种实现方法,第一个项目用vue的computed,第二个项目用指令来实现,用起来,发觉指令更加...

    对角另一面

扫码关注云+社区

领取腾讯云代金券