msdeploy通过jenkins和服务帐户:连接,但“无法授权”?

背景/目标

运动部件:

  • 我有一个服务帐户,我们称之为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更多信息:使用Webpipe理服务连接到远程计算机(“MyServer”),但无法授权。 确保您使用的用户名和密码正确,所连接的站点是否存在,以及凭据是否具有访问站点的权限。 有关详细信息,请访问: http : //go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED 。

错误:远程服务器返回错误:(401)未经授权。

我对我必须做的事情的理解

这可能是一个不完整或不正确的列表。 请告诉我,如果这是问题的可能性。

我想我必须:

  • 在IIS上安装WebDeploy(在这种情况下,3.6是最新的)。
  • 在IIS中启用pipe理服务。
  • 创build一个作为MyDomain\svcMyService运行的应用程序池。
  • 是的,部署的相同用户名也在运行。 不是最好的,我知道。 目前我的手中。
  • 为我的IIS Web应用程序创build目录。
  • 授予此目录的权限。
    • svcMyService完全权限
    • WDeployAdmin完全权限
    • NetworkService完全权限(因为这是WMSvc运行的)
  • 用适当的端口创build网站
    • 该网站应该在服务帐户的应用程序池下运行
    • 该网站应使用svcMyService帐户连接到该文件夹​​。
  • 在网站下创build一个Web应用程序。
    • 该网站应使用svcMyService帐户连接到该文件夹​​。
    • 在站点和应用程序级别添加svcMyService帐户作为部署pipe理器。
  • 确保本地WDeployConfigWriterWDeployAdmin帐户未过期,并且其密码不能更改。
  • 如果更改了这些本地帐户的密码,请确保IISpipe理委派使用WDeployConfigWriterWDeployAdmin帐户,并为每个委派更新这些凭据。

故障排除至今

当我尝试排除故障时,我会保持此列表已更新。

检查WMSvc IIS日志 – 看起来像我的用户没有权限发布

  • 日志示例如下:

#Fields :date时间s-ip cs方法cs #Fields -stem cs #Fields查询s-port cs-username c-ip cs(User-Agent)cs(Referer)sc-status sc-substatus sc-win32-状态时间2015-09-14 17:10:06 [服务器IP] HEAD /MsDeploy.axd – 8172 – [Jenkins IP] – – 401 2 5 15

我看到所有的状态是401.2与win32代码5。

根据这个疑难解答链接 ,“如果用户通过身份validation,但没有发布所需的权限,日志条目将看起来像”( 401 2 5 )。

文章引用

  • http://www.iis.net/learn/publish/troubleshooting-web-deploy/troubleshooting-common-problems-with-web-deploy
  • http://www.iis.net/learn/publish/using-web-deploy/configure-the-web-deployment-handler

我在2011年的这个旧论坛上find了答案 – 看起来很模糊。

在论坛上发现的解决scheme是:

  • 打开Regedit
  • 打开pathHKEY_LOCAL_MACHINE\Software\Microsoft\WebManagement\Server
  • 添加一个值为1名为WindowsAuthenticationEnabled的DWORD
  • 重新启动WMsvc和IIS

执行这些步骤后,它似乎第一次为我工作。