azure - 来自 Azure 管道的目标计算机上的 Powershell
问题描述
我有一个 Azure VM,我想从 azure 管道远程运行一些 powershell 命令。我使用自签名证书在我的 VM 上设置了 winrm,并在 VM azure 防火墙上打开了端口 5986。我已经能够从本地机器远程执行一些我放在 VM 中的脚本,但是当我在目标机器任务上从 Powershell 执行相同的脚本时,我会收到拒绝访问错误。
我也尝试了 v2 任务并勾选测试证书并使用我用来 rdp 到机器的管理员帐户,但得到了同样的错误。我想知道我在设置这个时错过了什么?
解决方案
首先测试您是否可以让 Powershell 从笔记本电脑或其他机器在您的目标上远程执行。
使用下面的 Powershell 脚本测试您的 WinRM 连接和自签名证书,并注意测试 Powershell 脚本中的 -SkipCNCheck -SkipCACheck PSSession 选项。如果您使用的是自签名证书,这些选项是必不可少的,并且您还需要在“在目标机器上运行 Powershell”模板(版本 3)的“会话选项”中提供相同的开关。
注意:我仅使用本地主机 IP,以免意外使用真实 IP
$password = ConvertTo-SecureString 'password goes here' -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ('yourDomain\yourDomainUserId', $password)
$sessionOptions = New-PSSessionOption -SkipCNCheck -SkipCACheck
$remote_session = new-pssession -computername 127.0.0.1 -UseSSL -credential $credential -SessionOption $sessionOptions
Invoke-Command -session $remote_session -ScriptBlock { Get-Culture }
还要确保您已设置 WinRM 侦听器以侦听目标计算机的外部IP,并向该侦听器注册自签名证书指纹。使用 WinRM 命令执行此操作(使用您的实际外部公共 IP),例如:
winrm create winrm/config/Listener?Address=IP:127.0.0.1+Transport=HTTPS @{Hostname="some.hostname.outhere.net"; CertificateThumbprint="[YOUR CERT THUMBPRINT]ABCDEF0247283798137030174027"}
还有一点需要注意的是,在“在目标机器上运行 Powershell”模板的“机器”字段中,使用机器外部公共 IP 代替 FQDN 或 DNS 名称。如果您使用的是自签名证书,则必须这样做。
一旦您获得测试 Powershell 脚本以使用远程机器上的自签名证书进行连接和握手,您几乎可以保证“在目标机器上运行 Powershell”也可以成功。
其他要检查的事项:
确保您已使用通配符“*”作为服务器名称或 ip 设置 TrustedHosts。在基本连接正常工作后,您可以返回并微调您的安全性。
您可能需要域级 GPO 以允许 WinRM 服务不受阻碍地运行,具体取决于您的目标计算机是工作站还是加入域的计算机。
如果所有其他方法都失败了,请在目标机器上下载并安装 Wireshark 并设置一个 ip 过滤器以仅侦听客户端服务器的 ip 并分析流量,大多数情况下这会提示您什么被拒绝以及为什么被拒绝。
希望这可以帮助。
推荐阅读
- sql - 在Oracle中连接两个表并多次返回一个列值
- sql-server - 通过从 SQL Server 中的行截断/删除类似信息来转换数据
- c# - 使用反射调用具有泛型类型参数的泛型方法
- python - 在 Celery 任务之间共享一个变量
- android - 使用 FusedLocationProviderClient 在 Lollipop Emulator 上不调用 onLocationCallback
- c# - 实体框架在获取 DateTime 时抛出异常
- wordpress - Cloudways WP 安装上的 SSL 证书问题
- angular - 动态创建组件——“ng build --prod”在创建包时抛出错误
- dart - Web 请求后,导航到其他视图(async /await 正确使用)- Flutter , dart
- webrtc - https://webrtc.github.io/samples/ 上的 WebRTC 示例应该做什么?