A GUI-based secure file transfer tool for Windows that allows you to effortlessly transfer files and folders to remote servers over SSH using password or key-based authentication.
- π Secure SSH/SFTP Transfer: Encrypted file transfer using SSH protocol
- π Dual Authentication: Support for both password and private key authentication
- πΎ Connection Profiles: Save and reuse SSH connection settings
- π¦ Smart Archiving: Automatically creates compressed archives for efficient transfer
- π₯οΈ Modern GUI: Clean, intuitive PyQt5-based interface
- π Multi-Selection: Transfer multiple files and folders with individual removal
- π Remote Extraction: Optional automatic extraction on remote server
- π Real-time Logging: Live transfer status and progress updates
- π Single Executable: No Python installation required on target machines
- Web Developers: Upload website files to production servers
- System Administrators: Transfer configuration files and backups
- Content Creators: Upload media files to remote storage
- IT Professionals: Deploy software packages to multiple servers
- Home Users: Backup files to remote servers or NAS devices
- Download
FileTransferCLI.exe - Double-click to run
- No installation required!
# Clone or download the project
cd file_transfer_cli
# Install dependencies
pip install -r requirements.txt
# Run the application
python main.py
# Or build executable
python build_exe.py- Windows 10/11 (64-bit)
- No Python installation required
- Python 3.7+
- Windows 10/11 (64-bit)
- pip (Python package manager)
-
Install Python (if not already installed)
# Download from python.org or use winget winget install Python.Python.3.11 -
Clone/Download the Project
git clone <repository-url> cd file_transfer_cli
-
Build the Executable
python build_exe.py
-
Find Your Executable
FileTransferCLI.exein the project root- Ready to distribute to any Windows machine!
Save Connection Settings:
- Fill in your SSH connection details
- Click "Save Current as Profile"
- Enter a profile name (e.g., "Production Server")
- Click OK
Load Saved Profiles:
- Select a profile from the dropdown
- All fields will be automatically filled
- Ready to transfer files!
Manage Profiles:
- Click "Manage Profiles" to open the profile manager
- Add, edit, delete, or test profiles
Host Configuration:
- Host/IP: Enter the server address (e.g.,
192.168.1.100orexample.com) - Port: SSH port (default:
22) - Username: Your SSH username
Authentication:
- Password: Enter your SSH password
- Private Key: Select a
.pem,.ppk, or.keyfile
Adding Files:
- Click "π Add Files" to select individual files
- Click "π Add Folders" to select entire directories
- Use "ποΈ Remove Selected" to remove specific files
- Use "ποΈ Clear All" to remove all selections
Features:
- Multiple files and folders can be selected
- Individual file removal with multi-selection
- Visual file type indicators (π for files, π for folders)
- File count display
Destination Path:
- Enter the remote directory path (e.g.,
/home/user/uploads/) - Directory will be created automatically if it doesn't exist
Extraction Options:
- β Extract on remote: Automatically extract the archive
- β Keep archive: Leave the compressed file on server
- Click "π Start Transfer"
- Monitor Progress in the log window
- Wait for Completion message
- Files are ready on the remote server!
Host: 192.168.1.100
Port: 22
Username: admin
Password: your_password
Remote Path: /home/admin/uploads/
Host: example.com
Port: 22
Username: deploy
Key File: C:\Users\user\.ssh\id_rsa
Remote Path: /var/www/html/
Host: ec2-xx-xx-xx-xx.compute-1.amazonaws.com
Port: 22
Username: ubuntu
Key File: C:\path\to\your-key.pem
Remote Path: /home/ubuntu/app/
- π SSH Encryption: All data is encrypted in transit
- π Key Authentication: Support for RSA, DSA, ECDSA keys
- π‘οΈ Password Protection: Secure password handling with encryption
- π¦ Archive Integrity: Files are compressed and verified
- π§Ή Automatic Cleanup: Temporary files are removed after transfer
- πΎ Encrypted Profiles: Connection profiles are securely stored
- GUI Framework: PyQt5 for modern interface
- SSH Library: Paramiko for secure connections
- Archive Format: tar.gz for efficient compression
- Build Tool: PyInstaller for single executable
- Profile Storage: Encrypted JSON with cryptography library
- Archive Creation: Files are compressed into tar.gz
- SSH Connection: Secure connection established
- SFTP Upload: Archive transferred via SFTP
- Remote Extraction: Optional automatic extraction
- Cleanup: Temporary files removed
- Compression: Automatic tar.gz compression
- Integrity: Archive verification before transfer
- Progress: Real-time transfer status
- Error Handling: Comprehensive error reporting
Connection Failed:
- Verify host/IP address and port
- Check firewall settings
- Ensure SSH service is running on server
Authentication Error:
- Verify username and password
- Check key file permissions (should be 600)
- Ensure key file is in correct format
Transfer Failed:
- Check remote directory permissions
- Verify available disk space
- Ensure network connectivity
Profile Issues:
- Profiles are stored in
profiles.json - Passwords are encrypted using system-specific keys
- Delete
profiles.jsonto reset all profiles
Run with console output for detailed logging:
python main.py --debug- π Resumable Uploads: Resume interrupted transfers
- π Progress Bars: Real-time transfer progress
- π±οΈ Drag & Drop: Direct file drag support
- π₯οΈ System Tray: Background transfer queue
- π Cross-Platform: Linux and macOS support
We welcome contributions to the File Transfer CLI! Please see CONTRIBUTING.md for guidelines on how to contribute.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License with an attribution requirement - see the LICENSE file for details.
If you use this code or any part of it in your projects, you must:
- Include the original copyright notice
- Provide attribution to the original author (MrBeanDev)
- Include a link to the original repository: https://github.com/mrbeandev/File-Transfer-Cli
- State any significant changes made to the original code
This attribution should be visible in your project's documentation and source code.
We've included a CREDITS.md file in the repository that you can copy and include in your project to satisfy the attribution requirements. Modify it as needed to reflect which parts of the code you're using.
- PyQt5: Modern GUI framework
- Paramiko: SSH/SFTP library
- PyInstaller: Executable packaging
- Cryptography: Secure profile storage
- Python Community: Excellent documentation and support
Made with β€οΈ for secure file transfers