通过 Azure Automation 远程的 Powershell 访问 azure 虚拟机
Accessing an azure vm through Powershell remote from Azure Automation
我正在尝试通过 azure 自动化的 powershell 远程访问 azure 虚拟机。我们订阅内的所有虚拟机都没有 public ips(只有私有 ip)。我尝试通过 New-Pssession 访问(如下所示),但没有成功。
能否请您告诉我实现此目标的其他方法是什么?
$connectionName = "AzureRunAsConnection"
$SPC = Get-AutomationConnection -Name $connectionName
Write-Output $SPC
Add-AzureRmAccount -ServicePrincipal -TenantId $SPC.TenantId -ApplicationId $SPC.ApplicationId -CertificateThumbprint $SPC.CertificateThumbprint
Get-AzureRmSubScription
Select-AzureRMSubscription -SubscriptionId 'XXXXXXXXXXXXXXX'
Get-AzureRMAutomationAccount | fl *
$username = 'XXXXXXX'
$password = 'XXXXXXXX'
$secpasswd = ConvertTo-SecureString $password -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ($username, $secpasswd)
$S = New-PsSession -ComputerName XXXXXXXX -Credential $mycreds
Enter-PSSession -Session $S
如果您想使用 Azure 自动化 Runbook 访问虚拟机,则需要使用 Hybrid Runbook Workers。这是安装在你的其中一台服务器上并使用你的 Azure 自动化帐户重新注册的代理。然后,您可以从这里在混合 Runbook Worker 上执行您的 Runbook。
然后您可以将 runbook 设置为在混合 Runbook Worker 上执行,这将像在您的服务器上一样有效地执行 Runbook。
如果您的 Runbook 首先在 Azure 中执行一些操作,那么我强烈建议您拆分您的 Runbook,这样一个 Runbook 在 Azure 中执行操作,然后调用另一个 Runbook 传递适当的参数,但在混合 Runbook Worker 上执行。您可以使用 PowerShell 在混合 Runbook 辅助角色上执行 Azure 自动化 Runbook,如下例所示:
Start-AzureRmAutomationRunbook –AutomationAccountName "MyAutomationAccount" –Name "Test-Runbook" -RunOn "MyHybridGroup"
当您在虚拟机上没有 public IP 地址时,您可以使用此选项。
另一种选择是结合使用 WinRM、证书和 Azure Key Vault,以便能够使用 Enter-PSSession
进行连接。有关设置的更多信息,请参阅 Setting up WinRM access for Virtual Machines in Azure Resource Manager 上的文档。但是请注意,您只能在虚拟机具有 public IP 时使用此方法。
我正在尝试通过 azure 自动化的 powershell 远程访问 azure 虚拟机。我们订阅内的所有虚拟机都没有 public ips(只有私有 ip)。我尝试通过 New-Pssession 访问(如下所示),但没有成功。
能否请您告诉我实现此目标的其他方法是什么?
$connectionName = "AzureRunAsConnection"
$SPC = Get-AutomationConnection -Name $connectionName
Write-Output $SPC
Add-AzureRmAccount -ServicePrincipal -TenantId $SPC.TenantId -ApplicationId $SPC.ApplicationId -CertificateThumbprint $SPC.CertificateThumbprint
Get-AzureRmSubScription
Select-AzureRMSubscription -SubscriptionId 'XXXXXXXXXXXXXXX'
Get-AzureRMAutomationAccount | fl *
$username = 'XXXXXXX'
$password = 'XXXXXXXX'
$secpasswd = ConvertTo-SecureString $password -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ($username, $secpasswd)
$S = New-PsSession -ComputerName XXXXXXXX -Credential $mycreds
Enter-PSSession -Session $S
如果您想使用 Azure 自动化 Runbook 访问虚拟机,则需要使用 Hybrid Runbook Workers。这是安装在你的其中一台服务器上并使用你的 Azure 自动化帐户重新注册的代理。然后,您可以从这里在混合 Runbook Worker 上执行您的 Runbook。
然后您可以将 runbook 设置为在混合 Runbook Worker 上执行,这将像在您的服务器上一样有效地执行 Runbook。
如果您的 Runbook 首先在 Azure 中执行一些操作,那么我强烈建议您拆分您的 Runbook,这样一个 Runbook 在 Azure 中执行操作,然后调用另一个 Runbook 传递适当的参数,但在混合 Runbook Worker 上执行。您可以使用 PowerShell 在混合 Runbook 辅助角色上执行 Azure 自动化 Runbook,如下例所示:
Start-AzureRmAutomationRunbook –AutomationAccountName "MyAutomationAccount" –Name "Test-Runbook" -RunOn "MyHybridGroup"
当您在虚拟机上没有 public IP 地址时,您可以使用此选项。
另一种选择是结合使用 WinRM、证书和 Azure Key Vault,以便能够使用 Enter-PSSession
进行连接。有关设置的更多信息,请参阅 Setting up WinRM access for Virtual Machines in Azure Resource Manager 上的文档。但是请注意,您只能在虚拟机具有 public IP 时使用此方法。