<TLDR>
是否可能使用ms web deploy在命令行中使用非管理员用户将Web应用程序部署到远程主机?
</TLDR>
我已经按照微软的安装和配置Web Deploy指南中的每个步骤进行了操作。我的目标是能够使用IIS用户/非管理员用户进行远程Web部署。
在按照为非管理员部署安装和配置Web Deploy描述的所有步骤后,我收到以下日志消息(表示一切正常):
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
我收到一个错误消息,内容为:Error: 远程服务器返回了一个错误:(401) 未经授权。 如果我在目标机器上进入事件查看器>自定义视图>管理员事件,我会看到一个带有以下消息的“匹配”错误:
这个错误与此问题中描述的完全相同。已接受的答案建议我已经采取的方法是正确的。IISWMSVC_AUTHORIZATION_SERVER_NOT_ALLOWED
只有Windows管理员可以使用服务器连接进行连接。其他用户应使用“连接到站点或应用程序”任务才能连接。
进程:WMSvc 用户=deploy_user
我尝试了几种提供的解决方法,例如 this,但似乎没有什么帮助。管理服务设置为允许远程连接(包括Windows和IIS管理器),我已经为内置Windows用户(非管理员)和IIS管理器用户运行了配置,但仍然出现相同的错误。但是,只要我使用管理员用户运行部署命令,它就成功了。
我可以通过我的非管理员deploy_user用户通过IIS gui进行远程连接(在IIS中:连接到站点 > [服务器url]/[站点名称] > deploy_user/deploy_password),表明必要的权限和规则已经配置好了。然而,当我尝试使用相同的用户运行部署脚本命令时,它会失败。
如果错误信息所示的确实是这样,即任何非管理员用户只能通过IIS Manager使用“连接到站点或应用程序”,那么从命令行/构建服务器进行部署的推荐方法是什么?我真的不想在构建服务器的配置中明文输入管理员用户的用户名/密码...
我发现的一个可行的选择是,如果您的构建服务器和您尝试部署到的机器有一个共同的Active Directory(或其他共享用户的方式),则可以跳过/A:Basic标志并完全省略用户名和密码。您必须确保运行部署的用户也具有部署目标上的管理员权限。但是,在我们的一个案例中,构建服务器和部署目标没有共同的用户基础,因此这不是一个选项,我们又回到了明文输入用户名/密码的问题 - 这一点都不理想。
https://machine_name:8172/msdeploy.axd
后面添加站点名称吗?例如:https://machine_name:8172/msdeploy.axd?site=[MySiteName]
- Elad Lachmi