2013-08-24 22 views
35

Potrzebuję pomocy przy konfigurowaniu protokołu FTP w mojej instancji maszyny wirtualnej platformy Azure.Konfigurowanie FTP w usłudze Azure VM

Maszyna wirtualna to Win Server 2012 R2. Ustawiłem rolę serwera sieci Web i utworzyłem stronę FTP w IIS. I potwierdziły, że mogę uzyskać dostęp do serwera FTP z

ftp command: open localhost 

Mam również skonfigurowany punkt końcowy FTP dla VM na portalu Azure skonfigurowany do standardowego portu 21.

Wreszcie mam otwarte stworzony reguła zapory ogniowej zezwalająca na cały ruch w/z portu 21.

Teraz, gdy próbuję połączyć się z FTP na moim komputerze domowym, widzę, że nazwa publicznego serwera dns jest zgodna z właściwym adresem IP i portem, ale nie można nawiązać połączenia być zrobione.

Czy brakuje mi gdzieś kroku konfiguracyjnego?

Dzięki

+0

Czy to działa? Mam ten sam problem http://superuser.com/q/643115/166855 – dumbledad

Odpowiedz

54

Istnieje świetny przewodnik od lipca 2012 r. "Hosting FTP on IIS 7.5 in a Windows Azure VM" przez Ronald Wildenberg o tym. On echa David's answer. Są to etapy, przez które przechodzi:

  1. Przede wszystkim potrzebujesz maszyny wirtualnej. Potrzebowałem maszyny z systemem Windows z bazą danych SQL Server, więc wybrałem opcję "Microsoft SQL Server 2012 Evaluation Edition" z dostępnych szablonów.
  2. Po uruchomieniu komputera można do niego przejść przez opcję łączenia w dolnej części portalu zarządzania.
  3. Podczas pracy należy skonfigurować usługi IIS. Podsumowanie wymaganych kroków:
    • Dodaj rolę serwera sieci Web (IIS) do serwera.
    • Dodaj potrzebne funkcje IIS.
    • Dodaj punkt końcowy TCP do VM w portalu zarządzania z portu publicznego i prywatnego 80.
  4. Aby włączyć FTP, upewnij się włączyć usługi roli serwera FTP „” dla swojej roli IIS:
  5. Następnym krokiem jest utworzenie rzeczywistej witryny FTP w IIS. Kliknij prawym przyciskiem myszy na „obiekty” w IIS Manager i wybierz opcję „Dodaj witrynę FTP ...”
  6. Określ nazwę i ścieżkę lokalną na miejscu:
  7. Określanie wiązania i SSL informacje:
  8. I wreszcie określić, kto powinien mieć dostęp do strony FTP.
  9. Powinieneś mieć teraz dostęp do witryny FTP z poziomu maszyny wirtualnej.Otwórz wiersz polecenia wpisz ftp 127.0.0.1 i zalogować
  10. Dla aktywnych FTP trzeba, aby umożliwić dostęp do portów 21 (port FTP poleceń) i 20 (dane FTP port), więc trzeba dodać dwa punkty końcowe do VM
  11. skonfigurować pasywny FTP. Aby to zadziałało, musimy poinformować serwer FTP IIS o zakresie portów, który może wykorzystać do połączeń danych, i musimy dodać punkty końcowe do maszyny wirtualnej, które odpowiadają temu zakresowi portów.
  12. skonfiguruj zakres portów i zewnętrzny adres IP dla pasywnych połączeń danych. Można go znaleźć w Menedżerze usług IIS
  13. Zewnętrzny adres IP powinien być adresem wirtualnym IP, który można znaleźć w portalu Azure Management.
  14. Jeśli nie można określić kanał danych zakres portów w Menedżerze IIS korzystania z appcmd narzędzie, które można znaleźć w %windir%\system32\inetsrv: appcmd set config /section:system.ftpServer/firewallSupport /lowDataChannelPort:7000 /highDataChannelPort:7014
  15. Można określić wszystkie 15 nowych punktów końcowych w Azure portalu ale to zajęłoby wieki tak użytkowania Windows Azure Powershell cmdlets.
  16. pobierz plik ustawień publikowania. Jednym ze sposobów jest uruchomienie Windows Azure Powershell i użycie cmdletu "Get-AzurePublishSettingsFile". Otwiera przeglądarkę i umożliwia pobranie pliku ustawień publikowania, który odpowiada identyfikatorowi Windows Live.
  17. Po pobraniu pliku ustawień publikowania można go zaimportować za pomocą polecenia cmdlet Importuj konsolę AzurePublishSettings, a my jesteśmy gotowi, aby rozpocząć dodawanie punktów końcowych.
  18. Po prostu utworzyłem plik tekstowy zawierający listę poleceń, które chciałem uruchomić i skopiowałem do okna Powershell: Get-AzureVM -ServiceName 'myServiceName' -Name 'ftpportal' | Add-AzureEndpoint -Name 'FTPPassive00' -Protocol 'TCP' -LocalPort 7000 -PublicPort 7000 | Update-AzureVM gdzie "moja_nazwa_serwera" jest nazwą mojej usługi chmurowej, a "ftpportal" to nazwa mojej maszyny wirtualnej.
  19. Chociaż Zapora systemu Windows wydaje się zezwolić na cały ruch, który jest wymagany, należy również włączyć stanowe filtrowanie FTP na zaporze: netsh advfirewall set global StatefulFtp enable
  20. ponownie uruchomić usługę FTP Windows i powinniśmy się i trwania:
    • net stop ftpsvc
    • net start ftpsvc

warto następujące kroki in the original article nie tylko dlatego, że zawiera użyteczne zrzuty ekranu dla każdego kroku, ale pomyślałem, że warto zacytować tutaj obszernie, tylko w tym przypadku. W artykule wymieniono także Active FTP vs. Passive FTP, a Definitive Explanation jako warte przeczytania.

Byłoby wspaniale, gdybym mógł zgłosić, że po wykonaniu tych kroków serwer FTP oparty na platformie Azure będzie działał i był dostępny. Ale niestety the steps above did not fix it for me :-(

+0

Te kroki są nadal aktualne od września. Jako wykonawca wielokrotnie robiłem te kroki kilka razy w ciągu ostatnich kilku lat dla różnych firm. Bez względu na lokalne środowisko jedyną rzeczą, która zawsze stanowi problem, są Filezilla i IIS. Z mojego doświadczenia wynika, że ​​rzadko działa. Przeczytałem posta autorstwa autora Filezilla, który twierdził, że to była wina MS z powodu niestandardowego sposobu, w jaki wdrożyli protokół i nie zmienił kodu Filezilla, aby naprawić błąd MS. Krótko mówiąc, jeśli używasz Filezilli (która kocham) i wciąż mam problemy, spróbuj innego klienta ftp. – rism

+0

Należy również dodać, że w przypadku napotkania błędu 530 wiadomości podczas logowania należy pamiętać o sprawdzeniu uwierzytelniania FTP w Menedżerze IIS. Jeśli potrzebujesz nazwy użytkownika i haseł, będziesz chciał włączyć podstawowe uwierzytelnianie (co najmniej), które jest domyślnie wyłączone. – rism

+0

Chciałbym również podkreślić, że protokół TLS/SSL powinien być egzekwowany (co na szczęście obecnie jest standardem dla IIS). Ale dla tego włączenia StatefulFtp jest w rzeczywistości nieproduktywne, ponieważ filtr stanowy nie będzie działał z TLS i widziałem raporty, że to faktycznie je zepsuje (sam tego nie przetestowałem). W każdym razie na pewno nie trzeba go włączać, nawet w przypadku niezaszyfrowanych połączeń. –

1

Trzeba dodać dodatkowy zakres portów, które serwer ftp wyboru dla każdego połączenia ftp.

Będziesz musiał utworzyć szereg punktów końcowych wejściowych, z których każdy reprezentuje jeden z portów w określonym zakresie portów. Zauważ, że masz ograniczoną liczbę wejściowych punktów końcowych (nie jesteś pewien dokładnej liczby, ale powinieneś być w stanie otworzyć, powiedzmy, 50 wejściowych punktów końcowych w sąsiadujących portach). Następnie wystarczy skonfigurować serwer ftp, aby korzystać z tego samego zakresu. Ponadto należy zmapować wejściowy port końcowy punktu końcowego na ten sam prywatny numer portu, w przeciwnym razie połączenia nie zostaną poprawnie utworzone.

+0

brzmi dobrze. Nie jestem jednak pewien, jak skutecznie skonfigurować tak wiele punktów końcowych. Wygląda na to, że lazurowy portal pozwala tylko na jedno na raz, co wymaga wielu konfiguracji. Czy istnieje sposób na skonfigurowanie wszystkich tych portów jednocześnie? – ChiliYago

+1

Jest to bardzo łatwe dzięki PowerShell lub CLI. Pobierz polecenia cmdlet platformy Azure PowerShell i sprawdź "Add-AzureEndpoint". –

1

Link w dumbledad's answer jest aktualnie niedostępna. I wciąż występują problemy z dostaniem pasywnego FTP działa na nowym Azure VM po wykonaniu czynności tam.

Po chwili poszukiwań znalazłem to tworzy artykuł Passive FTP and dynamic ports. Jest to świetny przewodnik i zapewnia prosty skrypt do uruchomienia z VM, aby uruchomić FTP w mgnieniu oka .Jeśli konfigurujesz wiele maszyn wirtualnych, skrypt jest znacznie szybszym sposobem konfiguracji dostępu do FTP niż ręcznego skonfiguruj punkty końcowe usług IIS i Azure:

3

Po krótkim spieszeniu z powyższą 15-punktową listą otrzymałem wiadomość MS próbuje przekazać - "Nie (łatwy) FTP dla ciebie" ...

Więc wróciłem do starego, starego, dobrego świata Linux-a - skonfigurowałem serwer SCP za pomocą Cygwin. dostać nawet zdalną powłokę jako bonus ...

1) Uruchom instalator Cygwin - https://cygwin.com/setup-x86.exe

2) w sekcji 'Wybierz pakiety' poszukiwania

  • cygrunsrv (wybrać jeden pod 'Administrator')
  • OpenSSH (wybrać jeden pod „netto)

3) Po zakończeniu uruchomić Terminal Cygwin i typ:

  • ssh gospodarza konfiguracji -y -pwd S0me-Str0ng-pa55w0rd

  • cygrunsrv -S sshd

4) Z Azure VM dodanie końcowego ssh

5) W Windows FireWall, dodaj regułę przychodzącą dla portu TCP 22

I altówkę - możesz połączyć się za pomocą WinSCP, Notepad + + Putty i oczywiście ...

Uwagi:

  • Unix jest wielkość liter, dlatego wpisz hasło użytkownika w przypadku, na przykład dokładnym Administrator z kapitału A
  • Twoje dyski są w/cygdrive (c: \ jest w/c/cygdrive etc)

powodzenia!

7

Jeśli nie przeszkadza FileZilla FTP Server,

Oto co zrobiłem, aby umożliwić połączenie FTP do mojego VM.

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. 

Mam nadzieję, że komuś pomaga.

Pozdrowienia

+0

tylko uwaga, że ​​dla pasywnego punktu końcowego ftp, musisz wybierz "niestandardową" usługę, aby umożliwić dowolny zakres portów (np. 60000 w tym przykładzie) – mosheb