云自动化:WinRM和SSH

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

Linux自动化方式

在Linux系统中,SSH(安全shell)是远程登录服务器进行工具安装以及命令运行的远程连接和自动化的事实标准。它几乎无处不在,运行在多个Linux版本和发行版上,每个Linux管理员都应该很熟悉SSH,也该知道如何配置它。此外,值得一提的是SSH的端口22是大多数云端的默认启用端口。

SSH的一个重要功能是支持安全复制协议(AKA SCP -Secure Copy Protocol)和安全文件传输协议(AKA SFTP -Secure file transfer protocol)进行文件传输。这重要的协议支持功能是协议的内置部分,或作为协议的附件存在,几乎总是可用的。因此,使用SSH进行文件传输和远程执行基本上都是在Linux提供,Linux甚至还支持几乎所有主流编程语言和操作系统的SSH客户端工具。

WinRM-Windows环境的SSH

似乎Linux的'开箱即用'对Windows而言没那么重要。显然,SSH也不是用Windows构建的; 但多年来,Windows尝试许多不同的协议试图实现Linux相同的功能,如安全Telnet协议,但迄今为止,并未成功。从Windows Server 2003开始,引入了一个名为Windows远程管理的新工具- WinRM(Windows Remote Management)。WinRM支持Web服务器上的SOAP协议,除此之外,它还提供一个可以用来远程登录的shell,这本质上提供了与SSH相似的功能。

WinRM是目前Windows里的SSH。

优点

WinRM的优点是你可以使用一个没有任何预配置的vanilla VM(Virtual Machine虚拟机),唯一前提是需要先运行WinRM服务。现今最大的云提供商(亚马逊)EC2(Elastic Compute Cloud弹性云计算平台)支持这种开箱即用的方式,如果你运行一个标准的亚马逊云windows镜像实例(AMI for windows),它会提供默认启用WinRM服务。WinRM使得快速开始使用云计算成为可能,只需要启动一个标准的Windows VM(Windows虚拟机),对其进行远程配置 ,然后就可以开始使用它。

这对于无法创建自定义Windows镜像或某些极少数希望限制资源使用情况镜像的云环境非常有用。

挑战

SSH已经成为Linux事实上的协议,WinRM虽然提供了与SSH相媲美的安全、远程登录、命令运行的功能,但WinRM在Windows环境中却并不是一个被人熟知的工具。

使用WinRM的标准工具通常是PowerShell,这个新开发的Windows shell旨在取代标准的命令提示符。但迄今为止,WinRM内置支持的编程语言仍然相对较少,这使得通过WinRM自动化和远程登录、运行变得更为复杂。

为了解决这些问题,Cloudify(gigaspaces公司推出的基于java的paas平台)使用PowerShell本身作为一个外部进程来充当访问WinRM的客户端库。这首先要解决是客户端需要运行Windows然而PowerShell不能在Linux上运行的问题。

WinRM和SSH的另一个不同之处在于WinRM没有真正的内置文件传输。WinRM的SSH安全拷贝没有直接的对等物。也就是说,可以通过PowerShell脚本实现文件传输。

目前有几个开源计划正在考虑为Linux或者专门针对某些编程语言(如Java)构建WinRM客户端,但是这些项目都还处于不成熟的开发阶段,都未具备完善功能。因此,PowerShell仍然是Cloudify的默认工具,它基本上提供了与在Linux上运行Windows的远程命令相同级别的功能。

WinRM安全性

WinRM另一个值得注意有意思的点是它支持加密。WinRM支持三种传输协议,HTTP(超文本传输协议HTTP,HyperText Transfer Protocol),HTTPS和加密的HTTP。

有线协议使用HTTP不可避免地是未加密的。这只对于确信没有人能够监控网络上的任何事情,在数据中心内部使用HTTP来说是一个好主意。

通常使用HTTPS而不是HTTP,但是这在WinRM中存在‘鸡和蛋‘’的问题。意思是说如果想使用HTTPS,则需要在远程计算机上设置SSL证书。但问题是,通常从一个没有安装证书的vanilla Windows虚拟机开始自动插入SSL证书是无法完成的,因为这前提又是需要WinRM运行。

加密的HTTP,这在EC2中是默认使用的,它基本上使用登录凭据作为加密密钥。从安全角度来看,这是推荐使用的安全传输协议。值得注意的是,大多数创建WinRM客户端库的项目一般都会在加密的HTTP协议上遇到问题,因为实施MS的加密HTTP系统credSSP具有挑战性。但是,有不同的项目正在努力实现这一目标,所以希望在不久的将来能够得到解决。

Cloudify混合运行方式

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

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

结论

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

本文的版权归 威廉 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

关于ssh命令的几个使用小技巧(r11笔记第27天)

ssh命令其实用了些日子了,但是感觉长进不大,主要原因是对它不够了解。 我想绝大多数的系统环境我还是使用ssh的方式会多一些,就这样看起来小米加步枪的工作方式,...

3609
来自专栏云瓣

使用 Node.js 搭建一个 API 网关

外部客户端访问微服务架构中的服务时,服务端会对认证和传输有一些常见的要求。API 网关提供共享层来处理服务协议之间的差异,并满足特定客户端(如桌面浏览器、移动设...

5067
来自专栏北京马哥教育

MySQL/MariaDB基于MMM实现读写分离及高可用

前言 MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl...

38310
来自专栏迁移服务平台

腾讯云文件迁移使用指南

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

2614
来自专栏数据库新发现

Sun Cluster工作原理介绍(转)

本章的结构安排是以介绍Sun Cluster中重要的概念为主线。相关的工作原理分布在各个概念的介绍之中。     quorum的概念在分布式系统中经常被用到。...

643
来自专栏FreeBuf

看我如何发现苹果公司官网Apple.com的无限制文件上传漏洞

最后,我也因此测试漏洞收获了苹果官方不菲的赏金,以及漏洞名人堂的入榜致谢。好吧,我们一起来看看这个苹果官网的无限制文件上传漏洞。

1073
来自专栏Timhbw博客

Windows下iOS开发环境搭建教程

2016-06-1513:59:42 发表评论 2,027℃热度 1.下载工具 2.安装基本文件 3.开始主要步骤 4.总结 目录 可能许多初学者并没...

7518
来自专栏IT大咖说

VMware vSphere 6.7 新功能介绍

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

3133
来自专栏云计算D1net

深度剖析众多的Azure管理工具

自从Windows Azure首次发布以来,微软公司的首要重点就一直是开发出一套工具来帮助用户管理其资源。这个云计算平台是出了名地难于管理,但是微软公司也在一直...

3437
来自专栏DevOps时代的专栏

维护了这么久的服务器,你真的认识 Web 缓存体系?

前言 很高兴认识大家,之前做过很多分享,今天这次终于讲到正题了。因为之前一直讲自动化运维,其实做这么多年运维,自动化运维没干多少年。这几年很多公司各方面机器数量...

2538

扫码关注云+社区