PowerShell域内无密码远程执行的核心是利用Kerberos自动认证,而非跳过认证;需确保源/目标主机同属一域、FQDN可解析、WinRM启用Kerberos并授权域组,且依赖域登录态与票据自动续期。
powershell 远程执行在域环境中实现无密码信任,核心不是“跳过认证”,而是利用域本身的 kerberos 身份验证机制自动完成凭据传递——只要用户已登录域、目标主机加入同一域且 winrm 配置正确,就能免密执行远程命令。关键在于信任关系的建立和 winrm 端点的授权配置,而非禁用安全策略。
确保域成员身份与基础网络连通
这是所有后续操作的前提:
- 源主机(你运行 Invoke-Command 的机器)和目标主机都必须成功加入同一个 Active Directory 域,且能解析彼此的 FQDN(如 server01.fsec.com)
- 使用 nltest /dsgetdc:fsec.com 验证两台机器都能定位到域控制器
- 确认防火墙放行 WinRM 默认端口(HTTP:5985 或 HTTPS:5986),推荐优先启用 HTTPS 加密通道
在目标主机上启用并配置 WinRM 服务
以管理员身份在目标机运行以下命令(建议在域策略或启动脚本中统一部署):
- winrm quickconfig -force —— 启用 WinRM 并监听默认端口
- winrm set winrm/config/service '@{AllowUnencrypted="false";Auth="true"}' —— 关闭明文传输,强制认证
- winrm set winrm/config/service/auth '@{Kerberos="true";Credssp="false"}' —— 显式启用 Kerberos(域环境下默认开启,但显式设置更稳妥)
- winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="1024"}' —— 可选,避免内存限制导致会话中断
配置 PowerShell 远程会话权限(无需改执行策略)
PowerShell 执行策略(如 RemoteSigned)不影响远程命令执行,真正起作用的是 WinRM 的 Service Authorization 列表:
直播话术巡检系统(Windows版) — 实时语音转写、关键词检测、场景自动切换、告警推送、大屏可视化。支持 Windows VB-Cable 虚拟声卡音频采集,阿里云 ASR 实时识别。一键启动脚本,自动安装环境。
- 运行 winrm get winrm/config/service 查看当前 RootSDDL 或 AuthorizedKeysFile 设置
- 最常用方式:将域安全组(如 Domain Admins 或自定义组 PS-Remote-Admins)加入 WinRM 授权列表:
winrm add winrm/config/service?@{Group="fsec\PS-Remote-Admins"} - 也可直接授权特定域用户:
winrm add winrm/config/service?@{User="fseclice"} - 注意:添加后需重启 WinRM 服务(Restart-Service WinRM)才生效
从域内客户端发起无密码调用
只要当前登录用户属于已授权的域组或用户,以下命令即可静默执行:
- Invoke-Command -ComputerName server01.fsec.com -ScriptBlock { Get-Process powershell }
- 若首次连接提示证书不受信(HTTPS 场景),可加参数 -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck)(仅测试环境适用)
- 如需跨域或模拟其他用户,才需显式传入 -Credential;域内同林默认走 Kerberos SSO,无需干预
不复杂但容易忽略:WinRM 的授权是服务级的,和 PowerShell 执行策略无关;真正的“无密码”依赖于域登录态和 Kerberos 票据自动续期,不是绕过认证,而是让认证过程对用户透明。










