Доступ к экземплярам PaaS облачной службы Azure через удаленное взаимодействие PowerShell

У меня есть веб-роль Azure с двумя экземплярами (обратите внимание: роли PaaS, * не виртуальные машины Azure). Я могу подключиться к ним через удаленный рабочий стол, но я не знаю, как выполнять удаленное взаимодействие в Powershell (удаленное взаимодействие PowerShell), потому что, в отличие от облачной службы виртуальных машин Azure, нет способа определить конечную точку и порт для каждого экземпляра как нет отдельных адресов для каждой рабочей роли.

Как я могу подключиться к отдельному экземпляру рабочей роли PaaS с помощью удаленного взаимодействия Powershell? IOW, как я могу использовать:

Enter-PSSession –ComputerName PC1 –Credential User

против экземпляра роли работника облачной службы (PaaS)?


person Majico    schedule 03.04.2013    source источник
comment
Проверьте конечные точки на предмет правильного порта.   -  person TheBigCheese    schedule 03.04.2013


Ответы (2)


Использование удаленного взаимодействия PowerShell (не путать с RDP) выглядит вполне возможным для виртуальных машин Azure:

Для удаленного взаимодействия PowerShell требуется правильная конфигурация сети, чтобы обеспечить удаленное подключение. Поскольку мы будем получать доступ к виртуальной машине через Интернет, мы должны использовать HTTPS для защиты канала связи. Пропуская детали удаленного управления Windows, которое используется PowerShell Remoting, я просто скажу, что порт HTTPS по умолчанию - 5986.

Чтобы разрешить подключение к виртуальной машине, эту конечную точку необходимо добавить в ServiceDefinition.csdef:

<endpoints>
    <inputendpoint localport="5986" port="5986" protocol="tcp" name="WinRM" /> 
</endpoints> 

При открытом правильном порте остается лишь включить удаленное взаимодействие PowerShell. Перед включением необходимо решить две проблемы.

Во-первых, для настройки удаленного взаимодействия используется правильная учетная запись пользователя. Вы должны использовать ранее созданную учетную запись для запуска сценария для настройки удаленного взаимодействия [1]. С помощью этих команд созданный вами ранее пользователь выполнит сценарий e: \ Approot \ StartRemotingListener.ps1:

schtasks /CREATE /TN "StartRemotingListener" /SC ONCE /SD 01/01/2020 /ST 00:00:00 
               /RL HIGHEST /RU <username> /RP <password> 
               /TR "powershell -ExecutionPolicy unrestricted 
                               -Command e:\approot\StartRemotingListener.ps1 -Force" /F
schtasks /RUN /TN "StartRemotingListener"

Вторая проблема - это настройка сертификата, необходимого для HTTPS-соединения. Получение сертификата может не быть проблемой для производственной среды. Возможно, у вас уже есть один для вашей службы, и вы можете использовать его повторно. Это может быть проблемой, если вашему сервису не требуется сертификат для нормальной работы или для непроизводственных сред.

От: http://blogs.msdn.com/b/mariok/archive/2011/08/08/command-line-access-to-azure-vms-powershell-remoting.aspx

person x0n    schedule 03.04.2013
comment
Я добавил endpoint = 5986 в ServiceDefinition.csdef и выполнил новое развертывание в Azure. Но все равно не работает. Как написано в статье, которую вы мне прислали: этот метод разрешает подключения к службам только с одним экземпляром, в то время как у меня есть два экземпляра. Дело в том, что я могу легко подключиться к виртуальной машине с помощью Powershell Remoting, но я не могу сделать то же самое для экземпляра облачной службы. Когда я редактирую файлы rdp для подключения к виртуальной машине и экземпляру, я вижу, что у экземпляра есть что-то вроде следующего, и я не знаю, как указать его в Powershell Remoting: - person Majico; 03.04.2013
comment
полный адрес: s: MyService.cloudapp.net имя пользователя: s: Имя пользователя LoadBalanceInfo: s: Cookie: mstshash = WorkerRole1 # WorkerRole1_IN_0 - person Majico; 03.04.2013

Используя портал управления Azure, вы можете скачать файлы RDP, используемые для подключения. Отредактируйте эти файлы, у вас должна быть вся информация, необходимая для подключения (конечные точки и порты).

Кстати, Azure использует переадресацию портов для доступа к конкретному экземпляру.

person Uri May    schedule 03.04.2013
comment
Спасибо, но в файле написано: полный адрес: s: MyService.cloudapp.net имя пользователя: s: Имя пользователя LoadBalanceInfo: s: Cookie: mstshash = WorkerRole1 # WorkerRole1_IN_0 Итак, как мне использовать mstshash в команде Enter-PSSession? - person Majico; 03.04.2013
comment
Вы знаете, как это сделать в Powershell Remoting? как я могу указать в PowerShell: полный адрес: s: MyService.cloudapp.net имя пользователя: s: Имя пользователя LoadBalanceInfo: s: Cookie: mstshash = WorkerRole1 # WorkerRole1_IN_0 - person Majico; 03.04.2013
comment
Почему бы не запустить mstsc.exe с файлом rdp в качестве параметра ?? - person Uri May; 11.08.2013