【发布时间】:2014-03-26 15:46:57
【问题描述】:
是否有可能使用 ms web deploy 以 非管理员 用户从 命令行 将 Web 应用程序部署到 远程主机 ?
我已遵循 Microsoft 指南中的每一点 Installing and Configuring Web Deploy。我的目标是能够使用 IIS 用户/非管理员用户进行远程 Web 部署。
按照为非管理员部署安装和配置 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)未授权。
如果我在目标机器上进入事件查看器 > 自定义视图 > 管理事件,我会看到一条“匹配”错误消息:
IISWMSVC_AUTHORIZATION_SERVER_NOT_ALLOWED
仅允许 Windows 管理员使用服务器进行连接 联系。其他用户应使用“连接到站点或 应用程序的任务才能连接。
进程:WMSvc 用户=deploy_user
此错误与this question 中描述的完全相同。而accepted answer 表明我已经做的是正确的方法。
我尝试了几种建议的解决方法,例如this,但似乎没有任何帮助。管理服务设置为允许远程连接(Windows 和 IIS 管理器),我已经为内置 Windows 用户(非管理员)和 IIS 管理器用户运行了配置,但仍然出现相同的错误。但是,只要我使用管理员用户运行部署命令,它就会成功。
我 am 允许通过 IIS gui 与我的非管理员 deploy_user 用户远程连接(在 IIS 中:Connect to Site > [server url]/[site name] > deploy_user/ deploy_password),表示配置了必要的权限和规则。但是,当我尝试使用同一用户运行部署脚本命令行时,它会失败。
如果它实际上 是 如错误消息所示,则任何非管理员用户都可以仅通过 连接到站点或应用程序 IIS 管理器,那么从命令行/构建服务器进行这样的部署的推荐方法是什么?我真的不想在构建服务器的配置中以明文形式输入管理员用户的用户名/密码...
我发现一个可行的选项是,如果您的构建服务器和您尝试部署的机器具有共同的 Active Directory(或其他共享用户的方式),您可以跳过 /A:Basic 标志并离开完全去掉用户名和密码。您只需确保运行部署的用户也对部署目标具有管理员权限。然而,在我们的一种情况下,构建服务器和部署目标没有有一个共同的用户群,所以这不是一个选项,我们回到明文的用户名/密码 -这根本不可取。
【问题讨论】:
-
@EladLachmi:您链接到的帖子中建议的内容正是我所做的(请参阅我的问题中第三段之后的输出 “按照所述执行所有步骤后在...").
-
对,现在我明白了。对不起。
-
您可以尝试在
https://machine_name:8172/msdeploy.axd后面添加站点名称吗?示例:https://machine_name:8172/msdeploy.axd?site=[MySiteName] -
@EladLachmi:哦,天哪,这确实有效!我从来没有想过在机器参数中指定站点名称——因为它已经在参数文件中指定,而且我也不记得在任何示例中看到它。将其发布为答案,我会接受并奖励您的赏金!