2014-03-26 236 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'"

相關問題