2014-03-26 247 views
13

< TLDR>
与WebDeploy未经授权的错误它是在所有可能的使用MS网络部署到从命令行部署Web应用程序到远程主机非管理员用户?
</TLDR>401使用非管理员用户

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

做的所有步骤下所描述的安装和配置网络部署非管理员部署后,我得到以下日志消息(表明一切正常):

Publish enabled for 'deploy_user' 
Granted 'deploy_user' full control on 'C:\inetpub\wwwroot' 
Successfully created settings file 'C:\Users\...\Desktop\deploy_user_Default Web Site.PublishSettings' 

接下来,当我从我的本地机器上尝试运行以下命令:

.\my_deploy_package.cmd /M:https://machine_name:8172/msdeploy.axd -allowUntrusted /U:deploy_user /P:deploy_password /A:Basic /T 

我得到一个错误消息说:错误:远程服务器返回错误:(401)未经授权。

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

IISWMSVC_AUTHORIZATION_SERVER_NOT_ALLOWED

Only Windows Administrators are allowed to connect using a server connection. Other users should use the 'Connect To Site or Application' task to be able to connect.

Process:WMSvc User=deploy_user

此错误是完全一样的,如描述this question。并且accepted answer表明我已经完成的是正确的方法。

我尝试了几种建议的解决方法,如this,但没有任何东西似乎有所帮助。管理服务设置为允许远程连接(包括Windows和IIS管理器),并且我为内置Windows用户(非管理员)和IIS管理员用户运行配置,但仍然出现相同的错误。只要我以管理员用户运行deploy命令,就会成功。

上午允许通过与我的非管理员deploy_user用户的IIS GUI远程连接(在IIS:连接至站点> [服务器URL]/[站点名称]> deploy_user/deploy_password),这表明必要的权利和规则被配置。但是,当我尝试运行部署脚本命令行时 - 用同一用户 - 它失败。

如果它实际上作为错误信息表明,任何非管理员用户可以使用连接到站点或通过IIS管理器应用,什么是那么推荐的方法做部署这样的从命令行/构建服务器?我真的不想在生成服务器的配置文件中以明文形式输入管理员用户的用户名/密码...

我发现这个工作的一个选择是,如果您的构建服务器和您尝试部署的计算机具有通用的Active Directory(或其他共享用户的方式),则可以跳过/A:Basic标志,并完全忽略用户名和密码。您只能确保运行部署的用户对部署目标也具有管理员权限。但是,在我们的一种情况下,构建服务器和部署目标并不是有一个共同的用户群,所以这不是一个选项,我们回到用户名/密码以明文形式 - 这是不可取的在所有。

+0

或许这可以帮助? http://stackoverflow.com/questions/2874939/how-to-use-msdeploy-and-target-a-specific-site –

+0

@EladLachmi:你已经链接到的帖子中的建议正是我所做的(请参阅我的问题中的第三段之后的输出_“完成...下所述的所有步骤后”)。 – Nailuj

+0

对,现在我明白了。抱歉。 –

回答

19

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

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

如果未添加此项,msdeploy会尝试通过IIS的根目录访问该站点。使用添加的参数可以直接访问站点,并且特定网站上的管理员权限就足够了。

+1

谢谢。您。先生。 – user1068352

+0

具体删除'['和']'。它并不总是很清楚。 –

+0

另外,请确保**用户名字段包含用户名**。 –

3

尝试直接在命令行

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与您的服务器。也改变username, password, DemoSiteDemoProject.SetParameters.xml相应

here

+0

该命令与运行_my_deploy_package.cmd_脚本时发出的命令大致相同,因此没有区别。 – Nailuj

2

引用假设您没有使用MSI安装和你有这些步骤下文引用正确安装和配置,确保WMSVC在服务器上配置正确。看看这个公认的答案可以帮助您与:https://stackoverflow.com/a/4834248/463478

2.The MSI will not install the Web Management Service handler component if the Web Management Service is not installed; the handler component is necessary for non-administrator deployments. Windows component IIS, including Management Service, should be installed first to enable the handler component to install.

3.The MSI will not configure Web Management Service to allow non-administrator deployments if PowerShell v2 is not installed. This setup step includes creating delegation rules in the IIS server Administration.config file that allow non-administrator users to use Web Deploy. PowerShell v2 is built-in on Windows Server 2008 R2 but may require a Windows Update for Windows Server 2008. Alternatively the delegation rules may be added manually after install.

+0

所有内容均使用Web Platform Installer进行安装。 WMSvc就位并且看起来正确配置。我已按照步骤(http://www.iis.net/learn/install/installing-publishing-technologies/installing-and-configuring-web-deploy)中的说明执行所有步骤以设置委派规则等。允许非管理员部署。非管理员部署_do work_当我通过远程IIS连接(再次,表明所有访问权限配置正确)时,但它从命令行完成时失败。 – Nailuj

0

两件事真的帮助我从这篇文章。

  1. 指定站点名称
  2. 设置身份验证类型基础。

而且我的web应用程序的名称有空格它,我一直得到一个错误,当我试图说明这样https://machine_name:8172/msdeploy.axd?site=my%20web%20app

我能解决这个我设置使用附加的站点名称服务URL msdeploy.exe标志"-setParam:name='IIS Web Application Name',value='my web app'"

我工作的命令是:

my_deploy_package.cmd /M: https://machine_name:8172/msdeploy.axd /U:deploy_user /P:deploy_password /A:basic -allowUntrusted "-setParam:name='IIS Web Application Name',value='my web app'"

相关问题