13

I am using Windows 7 and have multiple FTP client applications working without any problem. However, when I use command-line FTP, I can get connected, log in (after entering user name and password), but it always gets disconnected when the dir or ls command is used. The response is:

Connection closed by remote host.

How can I fix this problem?

1
  • Open up ports 20, 21 in your firewall.
    – AKDiscer
    Nov 19, 2015 at 19:15

6 Answers 6

15

You'll usually see this type of thing happen when the server tries to connect back to you but can't. FTP originally used two TCP channels. One was for commands, and the other for transferring data. When you run the dir command it uses a data channel. The data channel is established on demand and results in the server trying to connect back to you.

That's most likely being blocked by your router or Windows firewall. You need a client that supports PASV mode.

You can enable PASV mode in Internet Explorer. Or use a different client. I'm not sure if the command-line version can use PASV mode. It's a very basic client.

4
  • Thanks, Matt. I thought the command-line FTP client used passive mode by default but I have just found multiple posts saying Windows command-line FTP actually excludes passive mode. IE always works fine on my machine for FTP. I just want to use command-line to examine some raw data from an FTP server.
    – Hong
    Nov 28, 2010 at 4:53
  • As an experiment, you could see if enabling or disabling PASV in internet explorer makes a difference.. or gives similar or the same error.
    – barlop
    Nov 28, 2010 at 23:15
  • 1
    ftp> PASV - Invalid command. (Windows 7 Ent.). This answer is exactly what happens at work.
    – Bratch
    Jun 28, 2012 at 17:10
  • 6
    it needs to be QUOTE PASV Jul 10, 2012 at 5:29
5

I had an issue with transmitting files via FTP once I was logged into the box in question. It would create the file name, but the file was empty. I resolved it by doing the following:

  • Go to Control Panel → Windows Firewall → Advanced Settings → Inbound Rules
  • Double-click the Name column to sort by name
  • Scroll down until you see two rules called "File Transfer Program"; these were set to Block on my PC (big red circle with a line through it)
  • Double-click on the rule
  • On the General tab, under Action, set to Allow the connection
  • Click OK
  • Do this for the other rule

It should be good to go now.

3
  • What are the security implications of doing this? May 9, 2016 at 17:37
  • Programs on your pc can now use ftp.
    – Mark Deven
    Dec 20, 2018 at 12:10
  • Deleting the rules, then connecting via FTP and issuing something like a "dir" command (triggering Windows firewall to ask whether FTP should be allowed, and recreating the rules, if you say Yes) may also help.
    – mlvljr
    Feb 20, 2020 at 8:20
5

Windows FTP command-line client ftp.exe supports an active FTP mode only.

Setting up the FTP in the active mode can be cumbersome nowadays due to firewalls and NATs.

It's likely because of your local firewall or NAT that the server was not able to connect back to your client to establish data transfer connection for the directory listing (ls or dir commands).

Or your client is not aware of its external IP address and provides an internal address instead to the server (in PORT command), which the server is obviously not able to use.

See my article Network Configuration for Active Mode.


If possible, you should use a passive mode as it typically requires no additional setup on a client-side.

Unfortunately Windows FTP command-line client (the ftp.exe) does not support passive mode at all. It makes it pretty useless nowadays.

Use any other Windows FTP command-line client instead. Most other support passive mode.

For example WinSCP defaults to passive mode and there's a guide available for converting Windows FTP script to WinSCP script.

(I'm the author of WinSCP)

0
4

I encountered this problem on a Windows 2008 server.

This article suggests enabling the Application Layer Gateway Service. This did not fix the problem for me.

What did fix the problem was adding an exception in the Windows Firewall for C:\Windows\system32\ftp.exe

1
  • 1
    By default windows firewall include ftp.exe in its exception but only for home/work network. Make sure you are not on public network else allow ftp for public network as well.
    – Jags
    Mar 5, 2014 at 15:12
1

I was experiencing the same issue with third-party POS software on a Windows 7 machine that batches client transaction data over back to an SQL server.

It worked fine until the client location changed ISPs and, therefore, static IP addresses. Command-line FTP commands did not work beyond the initial login and none of the remedies I found online or this thread worked.

Just for kicks, I re-created the FTP rule in the firewall, a cheapo D-Link router/firewall, and viola, it seems to be working again.

0

FTP issue

Open Ports on azure NSG and server firewall: 21,20,4000-40009,990,14147

Issue: Client cannot connect to ftp from command line and Powershell

We are able to connect with testuser but not able see the directory/List

Installed Wireshark on server and on my laptop to capture packets Created a filter on wireshark with “ftp” and “IP” The packet capture doesn’t states weather is it passive or active mode and source IP is correct. (we configure primary IP and secondary IP on the server)

We found that the ftp connection is not working from the command prompt. trying to initiate a connection to ftp.abcd.com which was resolving to 11.22.33.44 and not to the actual FTP Server 44.33.22.11 IP addresses 11.22.33.44 and 44.33.22.11 are both configured on the same Machine. However, the DNS was resolving to the secondary FTP IP instead of Primary

Initially, We also found that the FTP connections to 11.22.33.44 was working fine and these connections were Active connections. We were unable to see that the Passive mode works here. Also while initiating connection to 11.22.33.44 from Commad promt the session freezes after you give 'dir' command however the same is working with other ftp clients like FileZilla and Winscp.

I tried testing with WinSCP and FileZilla and got to see Passive mode connections are working fine and Active not which is an expected behavior. We checked why the 'dir' command is not working from the devices after the successful authentication, we got to see that the windows firewall is blocking the connection. We disabled the firewall and the everything started working as expected. I checked the same on my end after creating the firewall rule, issues were resolved. There was one system which even after disabling firewall was stuck at directory listing, this might be an issue within that system or the connections are being blocked by an external factor. Since after disabling most of us are able to work fine.

settings need to be done on the machine Go to Control Panel → Windows Firewall → Advanced Settings → Inbound Rules Double-click the Name column to sort by name Scroll down until you see two rules called "File Transfer Program"; these were set to Block on my PC (big red circle with a line through it) Double-click on the rule On the General tab, under Action, set to Allow the connection Click OK

1
  • This is what the answer by @Keljo already says (actually you have copied his/hers answer). Dec 20, 2018 at 5:14

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .