Funkcja FTP wiersza polecenia nie działa

12

Korzystam z systemu Windows 7 i mam wiele aplikacji klienckich FTP działających bez problemu. Jednak gdy korzystam z wiersza polecenia FTP, mogę się połączyć, zalogować (po wprowadzeniu nazwy użytkownika i hasła), ale zawsze rozłącza się, gdy używana jest komenda dir lub ls. Odpowiedź brzmi:

Połączenie zamknięte przez zdalny host.

Jak mogę rozwiązać ten problem?

Hong
źródło
Otwórz porty 20, 21 w swojej zaporze ogniowej.
Sean Perkins,

Odpowiedzi:

13

Zazwyczaj dzieje się tak, gdy serwer próbuje się z tobą połączyć, ale nie może. FTP pierwotnie używał dwóch kanałów TCP . Jedno dotyczyło poleceń, a drugie przesyłania danych. Po uruchomieniu polecenia dir używa kanału danych. Kanał danych jest ustanawiany na żądanie i powoduje, że serwer próbuje połączyć się z tobą ponownie.

Najprawdopodobniej jest to blokowane przez router lub zaporę systemu Windows. Potrzebujesz klienta obsługującego tryb PASV .

Możesz włączyć tryb PASV w Internet Explorerze . Lub użyj innego klienta. Nie jestem pewien, czy wersja wiersza polecenia może korzystać z trybu PASV. To bardzo prosty klient.

Matt H.
źródło
Dzięki, Matt. Myślałem, że klient FTP z wiersza poleceń domyślnie używa trybu pasywnego, ale właśnie znalazłem wiele postów mówiących, że FTP z wiersza poleceń systemu Windows faktycznie wyklucza tryb pasywny. IE zawsze działa dobrze na moim komputerze dla FTP. Chcę tylko użyć wiersza polecenia, aby zbadać niektóre surowe dane z serwera FTP.
Hongkong
W ramach eksperymentu możesz sprawdzić, czy włączenie lub wyłączenie PASV w programie Internet Explorer robi różnicę ... lub daje podobny lub taki sam błąd.
barlop
1
ftp> PASV - nieprawidłowe polecenie. (Windows 7 Ent.). Ta odpowiedź jest dokładnie tym, co dzieje się w pracy.
Bratch
6
musi to być QUOTE PASV
JosephStyons
5

Miałem problem z przesyłaniem plików przez FTP, gdy zalogowałem się w odpowiednim polu. Utworzyłoby nazwę pliku, ale plik był pusty. Rozwiązałem to, wykonując następujące czynności:

  • Przejdź do Panelu sterowania → Zapora systemu Windows → Ustawienia zaawansowane → Reguły ruchu przychodzącego
  • Kliknij dwukrotnie kolumnę Nazwa, aby posortować według nazwy
  • Przewiń w dół, aż zobaczysz dwie reguły o nazwie „Program do przesyłania plików”; zostały ustawione na Zablokuj na moim komputerze (duże czerwone kółko z linią przez nie)
  • Kliknij dwukrotnie regułę
  • Na karcie Ogólne w obszarze Akcja ustaw opcję Zezwalaj na połączenie
  • Kliknij OK
  • Zrób to dla innej reguły

Warto już iść.

Keljo
źródło
Jakie są tego konsekwencje dla bezpieczeństwa?
Peter Mortensen,
Programy na twoim komputerze mogą teraz używać ftp.
Mark Deven,
Usunięcie reguł, a następnie nawiązanie połączenia przez FTP i wydanie polecenia typu „dir” (uruchomienie zapory systemu Windows z pytaniem, czy FTP powinien być dozwolony, i odtworzenie reguł, jeśli powiesz „Tak”) może również pomóc.
mlvljr
5

Klient wiersza polecenia FTP systemu Windows ftp.exeobsługuje tylko aktywny tryb FTP.

Konfigurowanie FTP w trybie aktywnym może być uciążliwe ze względu na zapory ogniowe i NAT.

Prawdopodobnie ze względu na lokalną zaporę ogniową lub NAT serwer nie mógł połączyć się ponownie z klientem, aby ustanowić połączenie przesyłania danych dla listy katalogów ( lslub dirpoleceń).

Albo twój klient nie wie o swoim zewnętrznym adresie IP i zamiast tego podaje serwerowi wewnętrzny (w PORTpoleceniu) adres wewnętrzny , którego serwer oczywiście nie może użyć.

Zobacz mój artykuł Konfiguracja sieci w trybie aktywnym .


Jeśli to możliwe, powinieneś użyć trybu pasywnego, ponieważ zwykle nie wymaga on dodatkowej konfiguracji po stronie klienta.

Niestety klient wiersza polecenia FTP systemu Windows ( ftp.exe) nie obsługuje w ogóle trybu pasywnego. To sprawia, że ​​w dzisiejszych czasach jest całkiem bezużyteczne.

Zamiast tego użyj dowolnego innego klienta wiersza polecenia FTP systemu Windows. Większość innych obsługuje tryb pasywny.

Na przykład WinSCP domyślnie pracuje w trybie pasywnym i dostępny jest przewodnik dotyczący konwersji skryptu FTP systemu Windows na skrypt WinSCP .

(Jestem autorem WinSCP)

Martin Prikryl
źródło
Działa na dowolnej wersji systemu Windows (od XP). Jaki masz błąd? Rozważ zadanie nowego osobnego pytania z dalszymi szczegółami.
Martin Prikryl,
Trzeba zarówno winscp.comi winscp.exew tym samym folderze. Wierzę, że komunikat o błędzie wyraźnie mówi, że winscp.comszuka winscp.exew swoim folderze. Zobacz także winscp.net/eng/docs/executables
Martin Prikryl
Np, usuń komentarze.
Martin Prikryl,
4

Ten problem wystąpił na serwerze z systemem Windows 2008.

W tym artykule sugeruje się włączenie usługi bramy warstwy aplikacji. To nie rozwiązało problemu.

Rozwiązaniem problemu było dodanie wyjątku w Zaporze systemu Windows dla C: \ Windows \ system32 \ ftp.exe

Spodnie
źródło
1
Domyślnie zapora systemu Windows zawiera ftp.exe w swoim wyjątku, ale tylko dla sieci domowej / roboczej. Upewnij się, że nie jesteś w sieci publicznej, w przeciwnym razie zezwól ftp również na sieć publiczną.
Jags
1

Wystąpił ten sam problem z oprogramowaniem POS innej firmy na komputerze z systemem Windows 7, który przesyła dane transakcji klienta z powrotem na serwer SQL.

Działało dobrze, dopóki lokalizacja klienta nie zmieniła dostawców usług internetowych, a zatem statycznych adresów IP. Polecenia FTP wiersza polecenia nie działały poza początkowym logowaniem i żadne ze środków zaradczych, które znalazłem online lub ten wątek, nie działało.

Na wszelki wypadek odtworzyłem regułę FTP w zaporze, tani router / zaporę D-Link i altówkę, wydaje się, że znowu działa.

Splot Mędrzec
źródło
0

Problem z FTP

Otwórz porty w lazurowej NSG i zaporze serwera: 21,20,4000-40009,990,14147

Problem: Klient nie może połączyć się z ftp z wiersza polecenia i programu PowerShell

Jesteśmy w stanie połączyć się z testserem, ale nie widzimy katalogu / Listy

Zainstalowałem Wireshark na serwerze i laptopie w celu przechwytywania pakietów. Utworzono filtr w Wireshark z „ftp” i „IP”. Przechwytywanie pakietów nie określa pogody, czy jest to tryb pasywny lub aktywny, a źródłowy adres IP jest poprawny. (konfigurujemy pierwotny adres IP i dodatkowy adres IP na serwerze)

Odkryliśmy, że połączenie ftp nie działa z wiersza poleceń. próba nawiązania połączenia z ftp.abcd.com, które zostało rozwiązane do 11.22.33.44, a nie do rzeczywistego serwera FTP 44.33.22.11 Adresy IP 11.22.33.44 i 44.33.22.11 są skonfigurowane na tej samej maszynie. Jednak DNS był przetwarzany na dodatkowy adres IP FTP zamiast Podstawowy

Początkowo stwierdziliśmy również, że połączenia FTP z 11.22.33.44 działały dobrze i były to połączenia aktywne. Nie mogliśmy zobaczyć, że działa tutaj tryb pasywny. Również podczas inicjowania połączenia z Commad do 11.22.33.44 sesja zawiesza się po wydaniu polecenia „dir”, jednak to samo działa z innymi klientami ftp, takimi jak FileZilla i Winscp.

Próbowałem przetestować z WinSCP i FileZilla i zobaczyłem, że połączenia w trybie pasywnym działają dobrze, a Aktywne nie, co jest oczekiwanym zachowaniem. Sprawdziliśmy, dlaczego polecenie „dir” nie działa z urządzeń po udanym uwierzytelnieniu, zauważyliśmy, że zapora systemu Windows blokuje połączenie. Wyłączyliśmy zaporę i wszystko zaczęło działać zgodnie z oczekiwaniami. Po utworzeniu reguły zapory sprawdziłem to samo, problemy zostały rozwiązane. Był jeden system, który nawet po wyłączeniu zapory utknął na liście katalogów, może to być problem w tym systemie lub połączenia są blokowane przez czynnik zewnętrzny. Ponieważ po wyłączeniu większość z nas jest w stanie działać dobrze.

ustawienia należy wprowadzić na komputerze Przejdź do Panelu sterowania → Zapora systemu Windows → Ustawienia zaawansowane → Reguły przychodzące Kliknij dwukrotnie kolumnę Nazwa, aby posortować według nazwy Przewiń w dół, aż zobaczysz dwie reguły o nazwie „Program do przesyłania plików”; ustawiono je na Zablokuj na moim komputerze (duże czerwone kółko z linią przez nie poprowadzoną) Kliknij dwukrotnie regułę Na karcie Ogólne w obszarze Akcja ustaw opcję Zezwalaj na połączenie Kliknij przycisk OK

Desh Kanth
źródło
Tak mówi już odpowiedź @Keljo (w rzeczywistości skopiowałeś jego / jej odpowiedź).
Martin Prikryl,