Sublimity Dev Blog

Articles and Tips in Web Development , Programming , SEO and Linux

Recent Posts

Published On

SFTP Explained: A Complete Guide for Secure File Transfer

SFTP (SSH File Transfer Protocol) is a secure method for transferring files between systems over a secure shell (SSH) connection. It is widely used by system administrators and developers to upload, download, and manage files safely. In this guide, you'll learn what SFTP is, how to use it effectively, and how to automate tasks.

1. What is SFTP?

SFTP is a protocol that provides secure file access, transfer, and management functionalities over SSH. Unlike FTP, it encrypts the data and credentials during transmission, making it ideal for secure environments.

2. Basic SFTP Command Syntax

To connect to a remote server via SFTP:

sftp username@hostname_or_ip

Example:

sftp user@192.168.1.10

3. Common SFTP Commands

  • ls – List files in the remote directory
  • cd – Change remote directory
  • pwd – Show remote working directory
  • lcd – Change local directory
  • get – Download file from server
  • put – Upload file to server
  • rm – Delete file from remote server
  • exit – Exit SFTP session

Example of downloading and uploading files:

get remote_file.txt
put local_file.txt

4. Using SFTP with SSH Key Authentication

Instead of entering a password every time, you can use SSH keys for authentication:

ssh-keygen -t rsa
ssh-copy-id user@remote_host
sftp user@remote_host

Make sure the SSH agent is running:

eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa

5. Automating SFTP Transfers with Batch Files

You can automate SFTP commands using a batch file:

# file: sftp_batch.txt
lcd /local/dir
cd /remote/dir
put file1.txt
get file2.txt
bye

Run the batch file:

sftp -b sftp_batch.txt user@remote_host

6. Securing SFTP Access

To enhance security, restrict SFTP access to specific users by configuring SSH:

# /etc/ssh/sshd_config
Subsystem sftp internal-sftp

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    AllowTcpForwarding no

Restart SSH service:

sudo systemctl restart sshd

7. GUI Alternatives for SFTP

If you prefer graphical interfaces, use tools like:

  • FileZilla
  • WinSCP (Windows)
  • Cyberduck (Mac)

8. Conclusion

SFTP is an essential tool for any system administrator or developer who works with file transfers in a secure environment. By understanding its core features and how to automate and secure it, you can ensure both efficiency and security in your workflows. Combine it with SSH best practices and automation scripts to level up your Linux server operations.