MSDeploy.exe可以作为管理员连接,但不能以任何其他Windows帐户连接

时间:2012-10-20 03:21:52

标签: asp.net iis iis-7.5 windows-server-2008 webdeploy

我正在将MSDeploy集成到我的构建过程中,并且在验证时遇到问题。以下命令工作正常:

msdeploy -verb:sync -source:appHostConfig="KitchenPC",computerName=192.168.0.3,userName=Administrator,password=secret -dest:package=c:\DeployTest\KPC.zip

然而,这不起作用:

msdeploy -verb:sync -source:appHostConfig="KitchenPC",computerName=192.168.0.3,userName=kpcpublish,password=secret -dest:package=c:\DeployTest\KPC.zip

并产生错误:

Error Code: ERROR_USER_NOT_ADMIN
More Information: Connected to '192.168.0.11' using the Web Deployment Agent Service, but could not authorize. Make sure you are an administ
rator on '192.168.0.11'.  Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_NOT_ADMIN.
Error: The remote server returned an error: (401) Unauthorized.
Error count: 1.

我已按照上面链接中的说明和任何other docs I could find进行了操作,几乎所有人都说同样的事情:

  1. 我创建了一个名为 kpcpublish
  2. 的帐户
  3. 我将此帐户添加到名为 MSDepSvcUsers 的组中 - 哎呀,我甚至将该帐户添加到了管理员
  4. 我右键单击该网站并选择部署 - >配置Web部署发布,并将kpcpublish添加到列表中。它说:
  5. Publish enabled for 'SERVER\kpcpublish' Granted 'SERVER\kpcpublish'
    full control on 'C:\Website' Successfully created settings file
    'C:\Users\Administrator\Desktop\SERVER_kpcpublish_KitchenPC.PublishSettings'
    

    必须是我缺少的一步,但我无法弄明白可能是什么。

    更新

    使用computerName属性的完整HTTP路径,我收到错误:

      

    错误代码:ERROR_DESTINATION_NOT_REACHABLE更多信息:可以   没有连接到远程计算机(“192.168.0.3”)。在遥控器上   计算机,确保安装了Web Deploy并且需要   进程(“Web管理服务”)已启动。了解更多信息:   http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_DES   TINATION_NOT_REACHABLE。错误:无法连接到远程服务器   错误:连接尝试失败,因为连接方没有   在一段时间后正确响应,或建立连接fa   iled因为连接的主机无法响应192.168.0.3:8192   错误计数:1。

    我已经检查过,Web管理服务确实正在运行。

    另一个更新:

    我已经完全铺设了系统,并从头开始重新设置。我没有做任何与众不同的事情,只是安装了IIS角色,并确保检查管理工具下的“管理服务”,这是WMSVC运行所必需的。然后我安装了Web PI,并安装了“Hosting Providers的推荐配置”,它将安装Web Deploy 3.0。但是,我确实注意到安装时出现了错误(我相信我最后一次也遇到了这个错误)。它看起来像:

    enter image description here

    我还附加了日志文件here

    然后我尝试手动安装Web Deploy 3.0,但它说已经安装了。接下来,我直接从http://www.iis.net/download/webdeploy下载了MSI并以“修复”模式运行它。这似乎有效。我还注意到WMSVC服务已启动并正在运行。所以这看起来不错。

    仍然,MSDeploy无法连接。我认为这可能是某种防火墙问题,所以我在本地运行它。我尝试过使用HTTPS和HTTP连接。 HTTPS给我一个错误,HTTP在2-3分钟后就会超时。

    HTTPS:

    msdeploy -verb:sync -source:appHostConfig="Default Web Site",computerName=https://STAGING:8172/msdeploy.axd,userName=Administrator,password=Khorf123 -dest:package=c:\DeleteMe.zip
    Info: Using ID 'f3a54096-adc4-4f54-9e4f-ad8fde12edb6' for connections to the remote server.
    Error Code: ERROR_CERTIFICATE_VALIDATION_FAILED
    More Information: Connected to the remote computer ("staging") using the specified process ("Web Management Service"), but could not verify the server's certifi
    cate. If you trust the server, connect again and allow untrusted certificates.
    Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_CERTIFICATE_VALIDATION_FAILED.
    Error: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
    Error: The remote certificate is invalid according to the validation procedure.
    Error count: 1.
    

    HTTP:

    msdeploy -verb:sync -source:appHostConfig="Default Web Site",computerName=http://STAGING:8172/msdeploy.axd,userName=Administrator,password=Khorf123 -dest:package=c:\DeleteMe.zip
    Info: Using ID 'ebee66f0-08e5-4d9d-98ea-0c2e59784895' for connections to the remote server.
    Error: Could not complete the request to remote agent URL 'http://staging:8172/msdeploy.axd'.
    Error: The operation has timed out
    Error count: 1.
    

6 个答案:

答案 0 :(得分:18)

2016-03-07更新 - 注意:?site=IIS_SITE_NAME后非管理员部署也需要msdeploy.axd,否则连接将被视为全局,需要管理员访问权限)

不确定最初错过了什么,但您的问题是computerName参数。仅在使用WMSVC时才支持非管理员部署,您需要为其指定完整的URL。

尝试以下

msdeploy -verb:sync ^
  -source:appHostConfig="KitchenPC",computerName=https://192.168.0.3:8172/MsDeploy.axd,userName=kpcpublish,password=secret,authType=Basic ^ 
  -dest:package=c:\DeployTest\KPC.zip 

From the docs

  

计算机名称将转换为默认的Web部署URL。例如, computerName = Server1 将变为 http://Server1/MsDeployAgentService 。如果远程服务使用自定义端口或URL运行,则必须指定完整URL

from the install instructions

  

如果未安装Web管理服务,MSI将不会安装Web管理服务处理程序组件;处理程序组件是非管理员部署所必需的

(我找不到更明确的规范来源,将WMSVC描述为非管理员部署的要求)

答案 1 :(得分:16)

想出来!

所以,似乎(至少在默认情况下),WMSVC只监听HTTPS,而HTTP只会超时。但是,由于我的证书是自签名的,因此我必须使用 -allowUntrusted 命令行选项。

差不多。我还必须像Richard最初建议的那样指定 authType = Basic 。因此,要将它们放在一起,这将是实际工作的MSDeploy命令行:

msdeploy -verb:sync -source:appHostConfig="Default Web Site",computerName=https://192.168.0.3:8172/msdeploy.axd,authType=Basic,userName=Publish,password=secret -dest:package=c:\DeployTest\KPC.zip -allowUntrusted

答案 2 :(得分:1)

尝试在目标计算机上重新启动wmsvc服务

答案 3 :(得分:1)

配置Web部署我的服务器as follows之后。我继续遇到HTTP 404连接失败。在可能对我有用的是以下额外的努力......

  1. 卸载现有的所有以前版本的Web Deploy。我甚至都不知道他们存在;但是,以前的版本似乎与完成与最新Web Deploy服务的连接冲突。较新的版本不会卸载它们的前辈。在最后一部分,我得到HTTP 401.7 - File Extension Denied
  2. 为了更好地衡量,请执行当前版本的Web Deploy的修复,目前为Microsoft Web Deploy 3.6
  3. 为了更好地衡量,请重新创建并导入我的Visual Studio 2013部署配置文件...
    1. 使用publish settings file Configure Web Deploy Publishing小组中目标网站的Deploy上下文菜单选项中提供的IIS Manager对话框重新创建Connections。 (注意,当您按publish settings file作为在对话框条目中指定完整路径的文件Setup时)时,将重新创建Specify a location to save the publish settings file
    2. 复制或以其他方式使publish settings file可用于Visual Studio并从项目的上下文菜单中选择Publish通过导入publish settings file

答案 4 :(得分:0)

如上所述,请确保您通过HTTPS进行连接。如果您尝试以管理员身份进行连接,但未使用SSL,则会收到以下错误:

  

错误代码:ERROR_USER_NOT_ADMIN

     

更多信息:使用Web部署代理服务连接到“主机”,但无法授权。确保您是“主持人”的管理员。

('host'是您的服务器名称)

答案 5 :(得分:0)

对我来说,问题是我的密码已过期...我在注销时注意到它,然后尝试登录远程桌面。