MSDeploy在尝试同步网站时触发401访问被拒绝的错误。

9
我试图从一个Win2003服务器将IIS站点推送/同步到另一个服务器。这是我的命令:
msdeploy -verb:sync -source:metakey=lm/w3svc/68512112 -dest:metakey=lm/w3svc/68512112,computername=backup-09,username=Administrator,password=PASSWORD -whatif > msdeploysync.log
我还尝试了以下命令:
msdeploy -verb:sync -source:metakey=lm/w3svc/68512112 -dest:metakey=lm/w3svc/68512112,computername=backup-09,username=BACKUP-09\Administrator,password=PASSWORD -whatif > msdeploysync.log
我还尝试了:
msdeploy -verb:sync -source:metakey=lm/w3svc/68512112 -dest:metakey=lm/w3svc/68512112,computername=backup-09,username=Administrator@BACKUP-09,password=PASSWORD -whatif > msdeploysync.log
这是错误信息:

致命错误:请求远程代理URL 'http://backup-09/MSDEPLOYAGENTSERVICE' 失败。

致命错误:远程服务器返回错误:(401) 未经授权。 致命错误计数:1

  • 我已以管理员身份运行了 msdeploy/cmd。
  • 我尝试访问 http://backup-09/MSDEPLOYAGENTSERVICE,它要求我的权限,我输入了上述凭据,它可以工作(显示空站点)。
  • 这是 MSDeploy 的 Beta 2 版本。

有人可以帮助我吗?

我甚至为所有服务器设置了域控制器...仍然存在相同的问题,无论我是否作为域控制器登录,提供本地帐户,所有变化都会触发 401 错误。


1
这个答案Mike Christensen解决了我的问题。 - Mitko
6个回答

5
请注意,Web Deploy 2.0(即使是最新版本)存在一个错误,不允许管理员组中的用户进行身份验证。只有域管理员和管理员帐户本身才能对Web Deploy进行身份验证。请参见以下页面上的ERROR_USER_NOT_ADMIN错误代码:http://learn.iis.net/page.aspx/1023/web-deploy-error-codes/

3

我遇到了这个错误,因为UAC被启用了(Windows Server 2008)。

需要关闭UAC以进行远程连接:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy=1

这个密钥在另一台服务器上帮助了我(Windows Server 2012):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WebManagement\Server\WindowsAuthenticationEnabled=1

Michael12345在这里提出了建议:https://dev59.com/F13Ua4cB1Zd3GeqP8gat#15059759


3

看起来Msdeploy默认使用NTLM身份验证,即使提供了用户名和密码。要启用正确的“用户名”和“密码”处理,请在相关源或目标参数后追加以下内容:",authType=basic"。


1
我也遇到了同样的问题,刚刚尝试了这个方法,但现在不仅收到了“远程服务器返回错误:(401)未经授权”的错误,还看到了“接收到了不支持的响应。响应头'MSDeploy.Response'是'',但期望的是'v1'。” 有什么想法吗?值得注意的是,这是我第一次在这台机器上尝试这个方法,也是在安装了Visual Studio 2010的任何机器上尝试(因此可能与我从http://technet.microsoft.com/en-us/library/dd569059%28WS.10%29.aspx获取的MSDeploy冲突)。 - David

0

我以前没有遇到过这种错误,但在Visual Studio 2015 Update 3中创建新的ASP.NET Core应用程序时,默认的发布配置文件无法工作。

我找到了一个解决方案。对我来说,只需添加

<AuthType>NTLM</AuthType>

.pubxml文件中的一行修复了这个问题。


0

我刚刚遇到了401和ERROR_USER_NOT_ADMIN的问题。在我的情况下,问题是我在-dest:参数的computerName设置中使用了主机名(目标计算机上的hosts文件中也有),NTLM试图将此主机名视为用户名的域部分(例如hostname\userName)。将其更改为IP地址或实际机器名称即可解决问题。


0

这是一个非常老的问题,但我可能已经找到了答案。

我一直收到401未经授权的错误消息,但仍然能够使用调用MSDeploy中指定的帐户登录,如问题描述中所述。

在我的情况下,问题是通过在部署机器上给予部署帐户管理员特权来解决的。

(我看到您正在使用一个名为Administrator的帐户,所以这可能不适用于您 - 但我有相同的症状,所以还是想发布一下)。


1
就我所知,我已经发现了这个问题,并且我的账户是目标机器上的管理员账户。 - Tom Lianza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接