File Transfer Protocol (FTP) remains one of the most reliable methods for moving files between your local machine and a Windows VPS. Whether you are deploying website updates, transferring backup archives, or managing large media files, setting up FTP on your Windows VPS gives you fast, direct access to your server’s file system without needing Remote Desktop for every operation. This guide covers FTP server installation on Windows Server, client configuration on Windows 10/11, security hardening with FTPS, and troubleshooting common connection problems.
If you are evaluating managed Windows VPS providers, compare Windows VPS plans on our site to find one with pre-configured IIS and FTP support.
Prerequisites
- A Windows VPS running Windows Server 2019, 2022, or 2025
- Administrator (RDP) access to the server
- Windows 10 or 11 client machine (or any OS with an FTP client)
- Port 21 open in the Windows Firewall (and passive port range)
Step 1: Install FTP Server on Your Windows VPS
Windows Server includes the FTP Server component as part of Internet Information Services (IIS). Install it via Server Manager or PowerShell.
PowerShell method (run as Administrator):
Install-WindowsFeature -Name Web-FTP-Server, Web-FTP-Service -IncludeManagementTools
GUI method:
- Open Server Manager → Add Roles and Features.
- Select Web Server (IIS) → expand FTP Server.
- Check FTP Service and FTP Extensibility.
- Click Install and wait for completion.
[Screenshot suggestion: Server Manager showing FTP Server role selected under IIS]
Step 2: Create an FTP Site in IIS
- Open IIS Manager (search “IIS” in Start).
- Right-click Sites → Add FTP Site.
- FTP site name: Enter a descriptive name (e.g., “MySite FTP”).
- Physical path: Browse to the folder you want to share (e.g.,
C:\inetpub\wwwroot\mysiteorC:\FTP\Shared). - Under Binding:
- IP Address: All Unassigned
- Port: 21
- Check Start FTP site automatically
- Check Enable Virtual Host Names (if using multiple FTP sites)
- Under Authentication & Authorization:
- Authentication: Check Basic
- Allow access to: Specified users — enter the FTP user account you will create next
- Permissions: Check Read and Write
- Click Finish.
[Screenshot suggestion: IIS Manager Add FTP Site dialog with settings filled in]
Step 3: Create a Dedicated FTP User Account
For security, create a dedicated local user for FTP access rather than using the Administrator account:
- On your VPS, open Computer Management → Local Users and Groups → Users.
- Right-click empty space → New User.
- Username:
ftpuser(or any name). - Set a strong password (12+ characters with mixed case, numbers, symbols).
- Uncheck User must change password at next logon.
- Check Password never expires (or set a reminder to rotate it).
- Click Create.
Grant the user NTFS permissions on the FTP folder:
icacls "C:\FTP\Shared" /grant "ftpuser:(CI)(OI)(M)" /T
This grants Modify permissions (Read, Write, Delete) to the folder and all subfolders.
Step 4: Configure Windows Firewall for FTP
FTP uses two channels: a command channel (port 21) and data channels (dynamic ports). Configure the firewall:
PowerShell commands to open ports:
# Open port 21 for FTP control
New-NetFirewallRule -DisplayName "FTP Port 21" -Direction Inbound -Protocol TCP -LocalPort 21 -Action Allow
# Open passive port range (recommended: 50000-51000)
New-NetFirewallRule -DisplayName "FTP Passive Ports" -Direction Inbound -Protocol TCP -LocalPort 50000-51000 -Action Allow
In IIS Manager, configure the passive port range:
- Open IIS Manager → click the server root node.
- Double-click FTP Firewall Support.
- Enter the passive port range:
50000-51000. - Enter your VPS’s external IPv4 address in Firewall External IP Address (important if behind NAT).
- Click Apply.
[Screenshot suggestion: IIS Manager FTP Firewall Support settings page]
Step 5: Connect from Windows 10/11
You have two options for connecting from your local Windows machine:
Option A: FileZilla (Recommended)
- Download and install FileZilla Client (filezilla-project.org).
- Enter these connection details:
- Host:
your-vps-ip-address - Port:
21 - Protocol: FTP — File Transfer Protocol
- Encryption: Use explicit FTP over TLS if available (for FTPS)
- User:
ftpuser - Password: your FTP password
- Host:
- Click Quickconnect.
- If you see a certificate warning, verify and accept it (for self-signed certificates, this is normal).
[Screenshot suggestion: FileZilla interface showing successful connection to VPS with remote files listed]
Option B: Windows File Explorer
- Open File Explorer.
- In the address bar, type:
ftp://your-vps-ip-address - Press Enter. When prompted, enter your FTP username and password.
- You can now drag and drop files between your local folders and the VPS.
[Screenshot suggestion: Windows File Explorer showing FTP connection with remote files]
Step 6: Enable FTPS (FTP over SSL/TLS) for Security
Standard FTP transmits credentials and data in plaintext. For production use, enable FTPS:
- In IIS Manager, select your FTP site.
- Click FTP SSL Settings.
- Under SSL Policy, select Require SSL connections.
- Under SSL Certificate, select a certificate (use a self-signed for testing or a trusted CA cert for production).
- Click Apply.
- In FileZilla, set Encryption to Require explicit FTP over TLS.
Generate a self-signed certificate via PowerShell:
New-SelfSignedCertificate -DnsName "ftp.yourdomain.com" -CertStoreLocation "Cert:\LocalMachine\My"
Common FTP Connection Issues and Fixes
- Connection timeout: Verify port 21 is open in the Windows Firewall and your VPS provider’s firewall/network security group. Run
Test-NetConnection -Port 21 your-vps-ipfrom your local machine. - FileZilla shows “Failed to retrieve directory listing”: This is typically a passive mode issue. Ensure the passive port range (50000-51000) is configured in IIS and opened in the firewall.
- 530 User cannot log in: Verify the FTP user account exists and the password is correct. Check that Basic Authentication is enabled for the FTP site.
- Access denied when uploading: Check NTFS permissions on the target folder. The FTP user needs Modify or Write permissions via
icacls. - Certificate warning on connection: Self-signed certificates generate warnings. For production, use a Let’s Encrypt or commercial certificate bound to your FTP hostname.
Security Best Practices
- Always use FTPS (FTP over SSL/TLS) — never expose plain FTP to the internet if you can avoid it.
- Disable anonymous access in FTP Authentication settings.
- Use strong, unique passwords for FTP accounts — consider 16+ character random passwords.
- Restrict FTP access by IP address in IIS FTP Authorization Rules if only specific IPs need access.
- Enable FTP logging in IIS to monitor connection attempts and file transfers.
- Set FTP idle timeout to 5-10 minutes in IIS FTP Site settings to disconnect inactive sessions.
- Rotate FTP passwords every 90 days.
Conclusion
Setting up FTP on your Windows VPS gives you fast, convenient file transfer capabilities that complement RDP-based management. By installing the FTP Server role in IIS, creating dedicated user accounts, configuring passive mode and firewall rules, and enabling FTPS encryption, you can build a secure and efficient file transfer workflow. Whether you use FileZilla, Windows File Explorer, or any FTP client, the same principles apply. For a managed Windows VPS with pre-configured IIS and FTP support, compare Windows VPS hosting plans to find the right provider for your needs.



