2013-08-24 103 views
35

我需要一些幫助,在我的Azure虛擬機實例上設置FTP。如何在Azure虛擬機上設置FTP

VM是Win Server 2012 R2。我已經設置了Web服務器角色並在IIS中創建了一個FTP站點。我證實,我可以

ftp command: open localhost 

訪問FTP服務器,我也配置配置的標準端口21

最後的VM在Azure的門戶網站的FTP終點,我已經打開創建一個防火牆規則,允許所有流量進出端口21.

現在,當我嘗試從我的家庭計算機的FTP到它,我可以看到服務器公共DNS名稱解析爲正確的IP和端口,但沒有連接可以被製造。

我是否缺少配置步驟?

感謝

+0

您是否得到了正常工作?我遇到同樣的問題http://superuser.com/q/643115/166855 – dumbledad

回答

54

關於這一點,2012年7月'Hosting FTP on IIS 7.5 in a Windows Azure VM'的Ronald Wildenberg有很好的演練。他呼應David's answer。這些是他經歷的階段:

  1. 首先,你需要一個虛擬機。我需要一臺帶有SQL Server數據庫的Windows機器,因此我從可用模板中選擇了「Microsoft SQL Server 2012評估版」。
  2. 一旦機器啓動,您就可以通過管理門戶底部的連接選項將RDP加入其中。
  3. 當你在,你需要配置IIS。所需步驟的摘要:
    • 將'Web服務器(IIS)'角色添加到服務器。
    • 添加您需要的IIS功能。
    • 在管理門戶添加TCP端點到你的虛擬機與公共和私有端口80
  4. 要啓用FTP,請確保您的IIS角色啓用「FTP服務器」角色服務:
  5. 下一步是在IIS中創建實際的FTP站點。在IIS管理器「網站」單擊鼠標右鍵,選擇「添加FTP站點......」
  6. 指定名稱和站點的本地路徑:
  7. 指定綁定和SSL信息:
  8. 最後指定誰應該有訪問FTP站點。
  9. 您現在應該能夠從VM內訪問FTP站點。打開命令提示符下,鍵入ftp 127.0.0.1和登錄
  10. 對於你需要允許訪問端口21(FTP命令端口)和20(FTP數據端口)主動FTP,所以你需要兩個端點添加到您的虛擬機
  11. 配置被動FTP。爲此,我們需要告訴IIS FTP服務器它可以用於數據連接的端口範圍,並且我們需要將端點添加到與此端口範圍對應的VM。
  12. 配置被動數據連接的端口範圍和外部IP地址。這可以在IIS管理器中找到
  13. 外部IP地址應該是您可以在Azure管理門戶中找到的虛擬IP地址。
  14. 如果您不能指定在IIS管理器中使用APPCMD實用的數據通道端口範圍,可以在%windir%\system32\inetsrv發現:appcmd set config /section:system.ftpServer/firewallSupport /lowDataChannelPort:7000 /highDataChannelPort:7014
  15. 你可以在Azure的門戶網站指定所有15級新的端點但會採取年齡以便使用Windows Azure Powershell cmdlets
  16. 下載發佈設置文件。一種方法是啓動Windows Azure Powershell並使用cmdlet「Get-AzurePublishSettingsFile」。它會打開一個瀏覽器並允許您下載與您的Windows Live ID相對應的發佈設置文件。
  17. 當您下載發佈設置文件時,您可以使用「Import-AzurePublishSettingsFile」cmdlet導入它,我們準備開始添加端點。
  18. 我只是創建了一個文本文件,其中包含我想要運行的命令列表並將其複製到Powershell窗口中:Get-AzureVM -ServiceName 'myServiceName' -Name 'ftpportal' | Add-AzureEndpoint -Name 'FTPPassive00' -Protocol 'TCP' -LocalPort 7000 -PublicPort 7000 | Update-AzureVM其中'myServiceName'是我的雲服務的名稱,'ftpportal'是我的虛擬機的名稱。
  19. 雖然Windows防火牆似乎允許所需的所有流量,還需要在防火牆上啓用狀態FTP過濾:netsh advfirewall set global StatefulFtp enable
  20. 重啓FTP Windows服務,我們應該啓動並運行:
    • net stop ftpsvc
    • net start ftpsvc

它按照以下步驟值得特別是因爲他包含了每個步驟的有用截圖,但我認爲這裏值得引用大量引用。文章還提到Active FTP vs. Passive FTP, a Definitive Explanation值得閱讀。

如果在遵循這些步驟之後報告說您的基於Azure VM的FTP服務器可以正常工作並且可以訪問,那將是非常好的。但不幸的是the steps above did not fix it for me :-(

+0

這些步驟截至2014年9月仍有效。作爲承包商,我在過去幾年中爲不同的公司多次完成了這些步驟。無論本地環境如何,始終是一個問題的是Filezilla和IIS。根據我的經驗,它很少起作用。我讀過一篇由Filezilla作者撰寫的文章,他聲稱這是MS的錯誤,因爲他們已經實施了該協議的非標準方式,並且他不打算修改Filezilla代碼來修復MS錯誤。所以簡而言之,如果你使用的是Filezilla(我喜歡它),並且仍然有問題,請嘗試使用不同的ftp客戶端。 – rism

+0

我還應該補充說,如果您在登錄時遇到錯誤530消息,請記住在IIS管理器中檢查FTP身份驗證。如果您需要用戶名和密碼,那麼您將希望啓用默認禁用的基本身份驗證(至少)。 – rism

+0

我還想強調一下,TLS/SSL應該被強制實施(現在對於IIS來說,幸運的是默認設置)。但是,對於這種啓用StatefulFtp實際上是反效果的,因爲無論如何,有狀態過濾器不會與TLS一起工作,並且我看到了它實際上破壞它的報告(我沒有自己測試它)。無論如何,它絕對不必啓用,即使是未加密的連接。 –

1

您需要添加額外的端口範圍,將FTP服務器將從每個FTP連接選擇。

您需要創建一堆輸入端點,每個輸入端點代表指定端口範圍內的一個端口。請注意,您的輸入端點數量有限(不確定確切的數量,但您應該能夠輕鬆打開連續端口中的50個輸入端點)。然後,只需設置ftp服務器即可使用相同的範圍。另外,您需要將輸入端點公共端口映射到相同的專用端口號,否則連接將無法正確創建。

+0

聽起來不錯。但我不確定如何有效設置這麼多端點。似乎Azure門戶一次只允許一個配置。有沒有辦法一次設置所有這些端口? – ChiliYago

+1

使用PowerShell或CLI這非常簡單。下載Azure PowerShell cmdlet並查看Add-AzureEndpoint。 –

1

dumbledad's answer鏈接是當前不可用。我仍然有

有點搜索後得到以下的步驟後有一個新的Azure的虛擬機上運行被動FTP的問題,我發現創建文章Passive FTP and dynamic ports這是一個很好的演練,它提供了一個簡單的腳本來運行你的虛擬機,讓FTP在一分鐘內運行起來,如果你設置了多個虛擬機,腳本是一種更快速的方式來設置FTP訪問,而不是手動配置IIS和Azure端點

3

經過一段時間,上面列出了15分的列表,我收到了消息MS試圖通過 - 「沒有(簡單)FTP爲你」... ...

所以我回到了開放的Linux世界 - 老舊的& - 使用Cygwin建立SCP服務器。 你甚至可以得到一個遠程shell作爲獎金......

1)運行Cygwin的安裝程序 - https://cygwin.com/setup-x86.exe

2)在 '選擇軟件包' 的

  • cygrunsrv搜索(選擇下一個'管理')
  • OpenSSH的(選擇下「網的一個)

3)完成後,開始在Cygwin終端,和類型:

  • SSH-主機配置-y -pwd S0me-Str0ng-pa55w0rd

  • cygrunsrv -S sshd的

4)從天青VM添加SSH端點

5)在Windows防火牆中,爲TCP端口添加入站規則22

和中提琴 - 您可以使用WinSCP,記事本+ +當然膩子粉

注:

  • 的Unix是大小寫敏感的,所以在精確的情況下,例如輸入您的用戶資本管理員
  • 你的驅動器是在/ cygdrive(C:\是/ cygdrive/C等)

祝你好運!

7

如果你不使用的FileZilla FTP服務器介意,

這裏是我做什麼,以使FTP連接到我的虛擬機。

1. Go to Azure VM (manage.windowsazure.com), and add 2 endpoints: 
    1. Name: FTP (Protocol TCP, Public Port 21, Private Port 21) 
    2. Name: FTP Passive (Protocol TCP, Public Port 60000, Private Port 60000) 
2. Go back to VM (via RDP), Open connection for port 21, and 60000 on Windows Firewall inbound rule. 
3. Download and open FileZilla Server. 
4. Click Edit -> Users and add user and shared directory as needed. 
5. Click Edit -> Settings. On the sidebar click Passive Mode Settings. 
6. Check "use custom port range" and enter 60000 - 60000 
7. On ip4specific part, select radio button "use the following ip", and enter your xxxx.cloudapp.net. 
8. Save, and run the server. That's it, you can now connect to FTP from outside of VM. 

希望它可以幫助別人。

乾杯

+0

只是一個筆記,對於被動的ftp端點,你必須選擇「自定義」服務以允許任意端口範圍(例如,在本例中爲60000) – mosheb