How to Set Up an SFTP Server on Linux

SFTP (Secure File Transfer Protocol) is a secure alternative to FTP, allowing for encrypted file transfers over SSH. It is the preferred method for transferring files securely between machines. 

In Linux, setting up an SFTP server is simple, as it's often built into the default SSH server package. In this guide, we'll walk you through the process of setting up and configuring an SFTP server on Linux.



Most Linux distributions come with the OpenSSH package pre-installed. If it's not, you can easily install it:


For Debian/Ubuntu:


sudo apt update


sudo apt install openssh-server



For CentOS/Red Hat:


sudo yum install openssh-server



For Fedora:


sudo dnf install openssh-server



Configuring SFTP


You don't need to install a separate package for SFTP since it's integrated into the SSH server. However, you might want to configure specific directories for SFTP or restrict users.


To do this, edit the SSH configuration:


sudo nano /etc/ssh/sshd_config



To create an SFTP-only user group and set up a directory for them:


Match Group sftpusers

   ChrootDirectory /sftp/%u

   ForceCommand internal-sftp

   AllowTcpForwarding no

   PasswordAuthentication yes

   PermitRootLogin no



Make sure to create the `/sftp` directory and any user-specific directories within it, adjusting permissions accordingly.



To create an SFTP-only user:


sudo useradd -m -G sftpusers sftpuser

sudo passwd sftpuser

sudo mkdir /sftp/sftpuser

sudo chown sftpuser:sftpusers /sftp/sftpuser





Replace `sftpuser` with your desired username.



After making your configurations, restart the SSH server:


sudo systemctl restart sshd



Connect to your SFTP server using a client or the command line


sftp sftpuser@your_server

If everything is configured correctly, you should be able to log in and transfer files securely.

Comments