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?
windows-7
command-line
ftp
Hong
źródło
źródło
Odpowiedzi:
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.
źródło
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:
Warto już iść.
źródło
Klient wiersza polecenia FTP systemu Windows
ftp.exe
obsł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 (
ls
lubdir
poleceń).Albo twój klient nie wie o swoim zewnętrznym adresie IP i zamiast tego podaje serwerowi wewnętrzny (w
PORT
poleceniu) 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)
źródło
winscp.com
iwinscp.exe
w tym samym folderze. Wierzę, że komunikat o błędzie wyraźnie mówi, żewinscp.com
szukawinscp.exe
w swoim folderze. Zobacz także winscp.net/eng/docs/executablesTen 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
źródło
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.
źródło
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
źródło