2015-11-24 68 views
2

我已成功将一些Azure虚拟机部署到Azure资源组。也就是说,我正在使用新的Azure Resource Manager部署模型从JSON模板部署虚拟机和相关资源。远程PowerShell到AzureRM虚拟机

我的问题是如何从我的笔记本电脑对这些虚拟机执行远程PowerShell脚本。我已经梳理了许多文章 - 但他们都展示了如何使用Azure中的经典虚拟机进行操作。这我已经知道并成功地使用。

现在,基于SSL的远程PowerShell是否具有默认情况下在使用Azure资源管理器创建的Azure虚拟机上启用的证书?我如何连接到Enter-PSSession或Invoke-Command?

+2

这不是我实际使用过的 - 但这可能会指向正确的方向 - https://github.com/Azure/azure-quickstart-templates/tree/master/ 201-winrm-windows-vm –

+0

感谢这看起来非常有前途 - 将试用! –

+0

完成 - 使用来自Azure Key Vault的证书配置SSL上的WinRM的工作方式看起来是正确的方式。我现在可以对JSON模板中的这些选项配置的虚拟机执行远程PowerShell。此PS命令现在可以从我的笔记本电脑客户端运行:Invoke-Command - 计算机名称 .westeurope.cloudapp.azure.com -Credential $ cred -UseSSL -ScriptBlock $ script -SessionOption(New-PSSessionOption -SkipCACheck -SkipRevocationCheck -SkipCNCheck) –

回答

4

这是针对现有机器的:确保您的虚拟机具有通过NIC设置的公共IP。接下来,如果您要使用笔记本电脑,请确保您的防火墙对公共交通开放。这可以用一个简单的netsh命令来完成:

netsh advfirewall firewall add rule name="WinRM HTTP" dir=in action=allow protocol=TCP localport=5985 profile=public 

一旦你有一个公网IP和防火墙上打开你可以输入一个Wi​​nRM的会话:

$username = '<admin-user>' 
$pass = ConvertTo-SecureString -string '<password>' -AsPlainText -Force 
$cred = New-Object -typename System.Management.Automation.PSCredential -argumentlist $username, $pass 
Enter-PSSession -ComputerName <public-IP> -Credential $cred -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck) 

注:默认情况下,WinRM的通过HTTP和应该在你的机器上设置和监听。 HTTPS未启用,因为它不清楚在哪里获取证书。但是,WinRM使用消息级加密,因此它不完全是纯文本。您可以验证:

winrm e winrm/config/listener 

这应该告诉你的东西,如监听器:

Listener [Source="GPO"] 
    Address = * 
    Transport = HTTP 
    Port = 5985 
    Hostname 
    Enabled = true 
    URLPrefix = wsman 
    CertificateThumbprint 
    ListeningOn = 1.1.1.1 
+0

Thanks - Azure要求您使用HTTPS。我最终通过使用winrm和netsh直接配置了通过HTTPS的远程访问。很棒。如果服务器已经安装了计算机名称上的域名证书,则可以轻松配置安全的远程访问。只需使用以下命令:winrm quickconfig -transport:https –

+0

请给我一个明确的步骤,说明你正在做什么来启用SSL证书 – HaTiMSuM