背景/目标
运动部件:
- 我有一个服务账户,我们称之为
MyDomain\svcMyService
。 - 我有一个远程服务器,我们称之为
MyDomain\MyServer
。 - 我有一个 Jenkins 服务器,我们称之为
MyDomain\MyJenkins
。
在 Jenkins 中,我有一个部署任务。它抓取一些工件,然后调用msdeploy
以将它们推送到 MyServer。
此部署步骤失败,我想找出原因。
我正在使用的 MSDeploy 命令
该命令由 Jenkins 自动生成,最终内容如下(省略了敏感数据):
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:iisApp="E:\Jenkins\jobs\NotARealJobName\workspace" -dest:iisApp="MyWebSite/MyWebApp",ComputerName="https://MyServer:8172/MsDeploy.axd",UserName=MyDomain\svcMyService,Password="NotARealPassword" -allowUntrusted
错误
我从 msdeploy 输出中看到的错误消息是:
错误代码:ERROR_USER_UNAUTHORIZED 更多信息:使用 Web 管理服务连接到远程计算机(“MyServer”),但无法授权。请确保您使用的用户名和密码正确,所连接的站点存在,并且凭据代表有权访问该站点的用户。了解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED。
错误:远程服务器返回错误:(401)未经授权。
我对自己要做的事情的理解
这可能是不完整或不正确的列表。请告诉我问题是否出在这里。
我认为我必须:
- 在 IIS 上安装 WebDeploy(在本例中 3.6 是最新版本)。
- 在 IIS 中启用管理服务。
- 创建以 身份运行的应用程序池
MyDomain\svcMyService
。 - 是的,部署时使用的用户名也在运行它。我知道这不是最好的办法。目前我无能为力。
- 为我的 IIS Web 应用程序创建目录。
- 授予此目录的权限。
- 完全权限
svcMyService
- 完全权限
WDeployAdmin
- 完全权限
NetworkService
(因为 WMSvc 以此方式运行)
- 完全权限
- 使用适当的端口创建网站
- 该网站应在服务帐户的应用程序池下运行
- 该网站应该使用该帐户连接到该文件夹
svcMyService
。
- 在该网站下创建一个Web应用程序。
- 该网站应该使用该帐户连接到该文件夹
svcMyService
。 svcMyService
在站点和应用程序级别将该帐户添加为部署管理员。
- 该网站应该使用该帐户连接到该文件夹
- 确保本地
WDeployConfigWriter
和WDeployAdmin
帐户未过期并且其密码无法更改。 - 确保 IIS 管理委派正在使用
WDeployConfigWriter
帐户,WDeployAdmin
并且如果您更改了这些本地帐户的密码,请为每个委派更新这些凭据。
到目前为止的故障排除
当我尝试排除故障时,我会不断更新此列表。
检查 WMSvc IIS 日志——看起来我的用户没有发布权限
- 日志示例如下:
#Fields
:日期时间 s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent)cs(Referer)sc-status sc-substatus sc-win32-status 花费时间 2015-09-14 17:10:06 [服务器 IP] HEAD /MsDeploy.axd - 8172 - [Jenkins IP] - - 401 2 5 15
我看到所有状态均为 401.2,win32 代码为 5。
根据此故障排除链接, “如果用户已经过身份验证,但是没有发布所需的权限,则日志条目将如下所示”(401 2 5
)。
参考文章
答案1
我找到了答案在 2011 年的这个旧论坛帖子上——这看起来确实很模糊。
在该论坛帖子中找到的解决方案是:
- 打开 Regedit
- 打开路径
HKEY_LOCAL_MACHINE\Software\Microsoft\WebManagement\Server
- 添加一个名为的 DWORD
WindowsAuthenticationEnabled
,其值为1
- 重新启动 WMsvc 和 IIS
执行这些步骤后,它似乎第一次就对我起作用了。