使用 Service Management Automation 管理启用 SSH 的 Linux主机

原文地址:https://blogs.technet.com/b/chinatechnet/archive/2014/08/01/service-management-automation-ssh-linux.aspx

最近,几位在数据中心集成 Windows Azure 包的客户都在问我这样一个问题:利用安全外壳(SSH)时,是否可以使用 SMA 来管理 Linux 服务器和网络设备?实际上,通过一个著名的应用程序就可以直接验证,很多 Windows 用户都十分熟悉这个应用程序,即 PuTTY 。您可以在该网站(https://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)上了解更多信息并下载 PuTTY。

我的模块示例中所使用的专用工具是 plink.exe (PuTTY Link),该工具可在 PuTTY 下载页面(点击这里)中获得。这是一个命令行版本的 PuTTY,旨在以编程方式在启用的主机上自动化 SSH 任务。

我不打算详细介绍在主机上启用 SSH,因为网络上有很多相关内容,包括使用公钥验证以防止向主机发送密码。

基于 plink.exe,我创建了一个样本 SSH PowerShell 模块,它允许使用密码或密钥文件进行身份验证。

样本模块请参见 Script Center 网站:https://gallery.technet.microsoft.com/Sample-PowerShell-module-8d961a1c

 

image 

 

准备使用模块时,您需要从 Script Center 下载 SSH.zip 文件,然后将内容提取至您的计算机。下载 plink.exe 工具(点击这里),并将该文件放在解压缩模块的 PuttyFiles 文件夹中。完成此操作后,再次压缩 SSH 文件夹,接着将此模块导入 SMA。请确保在压缩模块时,其中包括以下文件和文件夹,如图所示:

 

以下示例 Runbook 展示了如何使用SSH模块中的活动进行调用。它演示了使用密码进行调用(即从一个名为 SSHPassword 的 SMA 可变资产进行检索),以及在使用 KeyFilePath 参数提供的路径中使用主机密钥文件进行调用的两种方法。

 

下图显示了运行该 Runbook 的输出。

 

注意:

此示例 cmdlet 还接受一个可选的开关参数来自动接收主机密钥。不建议您使用该设置,因为它可能会导致 Runbook 接收一个服务器中的所有改变,包括有恶意目的的行为。若选择此选项,您可以指示 cmdlet 连接至任一服务器,而不管主机密钥。建议仅用于测试目的时使用此选项。

从以上例子可以看出,使用 SMA Runbook 借助密钥或密码进行身份验证能够轻松连接启用 SSH 的主机,这主要取决于您的需求。除了 PuTTY,在 Windows 计算机上还有其他可用的 SSH 客户端。在 Codeplex (https://sshnet.codeplex.com)上有个很好的例子,您可以用类似的方法建立 PowerShell 模块,而这取决于它们的实现情况。

即使您的数据中心没有可用的 PowerShell,也可以像有可用的 PowerShell 系统一样,使用相同的工具管理您的系统——为您所有的自动化需求创建一个位置,从而独立于需要管理的操作系统。