Iis 7 401使用非管理员用户的WebDeploy出现未经授权的错误

Iis 7 401使用非管理员用户的WebDeploy出现未经授权的错误,iis-7,msdeploy,webdeploy,Iis 7,Msdeploy,Webdeploy,是否可以使用ms web deploy从命令行将web应用程序部署到远程主机,并使用非管理员用户? 我已经遵循了微软指南中的每一点。我的目标是能够使用IIS用户/非管理员用户进行远程web部署 按照针对非管理员部署的Install and configure web deploy(安装和配置web部署)中的说明完成所有步骤后,我会收到以下日志消息(表示一切正常): 接下来,当我从本地计算机尝试运行以下命令时: .\my_deploy_package.cmd /M:https://machine


是否可以使用ms web deploy从命令行将web应用程序部署到远程主机,并使用非管理员用户?

我已经遵循了微软指南中的每一点。我的目标是能够使用IIS用户/非管理员用户进行远程web部署

按照针对非管理员部署的Install and configure web deploy(安装和配置web部署)中的说明完成所有步骤后,我会收到以下日志消息(表示一切正常):

接下来,当我从本地计算机尝试运行以下命令时:

.\my_deploy_package.cmd /M:https://machine_name:8172/msdeploy.axd -allowUntrusted /U:deploy_user /P:deploy_password /A:Basic /T
我收到一条错误消息,上面写着:错误:远程服务器返回了一个错误:(401)未经授权

如果我在目标计算机上进入事件查看器>自定义视图>管理活动,我会看到与此消息“匹配”的错误:

IISWMSVC\u授权\u服务器\u不允许

仅允许Windows管理员使用服务器进行连接 连接。其他用户应使用“连接到站点或” 应用程序的任务,以便能够连接

进程:WMSvc User=deploy\u User

此错误与中描述的完全相同。这表明我所做的是正确的方法

我已经尝试了一些建议的解决方法,比如,但似乎没有任何效果。管理服务设置为允许远程连接(Windows和IIS管理器),我已为内置Windows用户(非管理员)和IIS管理器用户运行了配置,但仍然存在相同的错误。但是,只要我与管理员用户一起运行deploy命令,它就会成功

允许我通过IIS gui与我的非管理员deploy_用户进行远程连接(在IIS中:连接到站点>[server url]/[Site name]>deploy_用户/deploy_密码),表明已配置必要的权限和规则。但是,当我尝试使用同一用户运行deploy脚本命令行时,它失败了

如果实际上是错误消息所指示的,任何非管理员用户只能通过IIS管理器使用连接到站点或应用程序,那么建议如何从命令行/a构建服务器进行这样的部署?我真的不想在构建服务器的配置中以明文形式输入管理员用户的用户名/密码


我发现一个可行的选择是,如果您的构建服务器和您尝试部署的机器具有公共Active Directory(或其他共享用户的方式),您可以跳过
/a:Basic
标志,完全省略用户名和密码。您只需确保运行部署的用户对部署目标也具有管理员权限。然而,在一种情况下,对于我们来说,构建服务器和部署目标没有一个共同的用户基础,因此这不是一个选项,我们返回到明文形式的用户名/密码-这一点都不可取。

尝试直接从命令行运行此命令

msdeploy.exe
  -source:package='…\DemoProject.zip'
  -dest:auto,
        computerName='https://TESTWEB1:8172/MSDeploy.axd?site=DemoSite',
        userName='FABRIKAM\User',
        password='Pa$$w0rd',
        authtype='Basic'
  -verb:sync
  -setParamFile:"…\DemoProject.SetParameters.xml"  
  -allowUntrusted
用包替换
DemoProject.zip
,用服务器替换
TESTWEB1
。同时相应地更改
用户名、密码、DemoSite
DemoProject.SetParameters.xml


引用自

假设您没有使用MSI进行安装,并且已经正确安装和配置了下面引用的这些步骤,请确保在服务器上正确配置了WMSvc。看看这个公认的答案是否对您有所帮助:

2.如果未安装Web管理服务,MSI将不会安装Web管理服务处理程序组件处理程序 组件对于非管理员部署是必需的。窗户 应首先安装组件IIS(包括管理服务) 以使处理程序组件能够安装

3.如果未安装PowerShell v2,MSI不会将Web管理服务配置为允许非管理员部署这个 安装步骤包括在IIS服务器中创建委派规则 允许非管理员用户使用的Administration.config文件 Web部署。PowerShell v2内置于Windows Server 2008 R2上,但 可能需要Windows Server 2008的Windows更新。或者 安装后可以手动添加委派规则


由于用户仅在站点级别而不是IIS根级别具有管理员权限,因此需要添加站点名称

而不是
https://machine_name:8172/msdeploy.axd
您需要有
https://machine_name:8172/msdeploy.axd?site=[MySiteName]


未添加此项时,
msdeploy
尝试通过IIS的根目录访问站点。通过添加参数,网站可以直接访问,特定网站的管理员权限就足够了。

这篇文章对我有两个真正的帮助

  • 指定站点名称
  • 将身份验证类型设置为basic
  • 另外,我的web应用程序名称中有空格,当我试图像这样指定服务url时,我不断地遇到一个错误
    https://machine_name:8172/msdeploy.axd?site=my%20web%20app

    我可以使用附加的msdeploy.exe标志
    “-setParam:name='IIS Web应用程序名称',value='my Web app'”

    我的工作指令是:

    my_deploy_package.cmd/M:/U:deploy_user/p:deploy_password/A:basic-allowUntrusted“-setParam:name='IIS Web应用程序名称',value='my Web app'


    也许这能帮上忙@EladLachmi:你链接到的帖子中所建议的正是我所做的(请参阅我问题第三段“完成……下所述的所有步骤后”的输出)。现在我明白了。对不起,你能试着在
    https://machine_name:8172/msdeploy.axd
    ?示例:
    https://machi
    
    msdeploy.exe
      -source:package='…\DemoProject.zip'
      -dest:auto,
            computerName='https://TESTWEB1:8172/MSDeploy.axd?site=DemoSite',
            userName='FABRIKAM\User',
            password='Pa$$w0rd',
            authtype='Basic'
      -verb:sync
      -setParamFile:"…\DemoProject.SetParameters.xml"  
      -allowUntrusted