To configure an SFTP server on Ubuntu, you can use OpenSSH, which is a widely-used and secure implementation of the SSH protocol suite. Here’s a step-by-step guide to setting up an SFTP server using OpenSSH on Ubuntu:
- Update your system: Before proceeding, it’s a good practice to update your Ubuntu system’s package repositories and installed packages. Open a terminal and run the following commands:
sudo apt update
sudo apt upgrade
- Install OpenSSH server: Install the OpenSSH server package by running the following command:
sudo apt install openssh-server
- Verify the SSH server status: After installation, the SSH server should start automatically. You can verify its status by running:
sudo systemctl status ssh
If the SSH server is active and running, you will see a message indicating its status.
- Configure SSH server options: Open the SSH server configuration file using a text editor like Nano or Vim:
sudo nano /etc/ssh/sshd_config
In this file, you can customize various options. Here are a few important settings you might want to consider:
- Port: By default, SSH listens on port 22. If you wish to change the port, locate the
Port
line and modify it accordingly. - PermitRootLogin: If you want to allow or restrict root login, find the
PermitRootLogin
line and adjust the value. It’s generally recommended to disable root login for enhanced security. - PasswordAuthentication: To enforce key-based authentication and disable password-based authentication (recommended for security), locate the
PasswordAuthentication
line and set it tono
. - AllowUsers (optional): If you want to restrict SSH access to specific users, you can use the
AllowUsers
directive followed by a space-separated list of usernames. For example,AllowUsers user1 user2
. After making any changes, save the file and exit the text editor.
- Restart the SSH server: To apply the changes made in the configuration file, restart the SSH server by running:
sudo systemctl restart ssh
- Create SFTP-only user (optional): If you want to create a user specifically for SFTP access and restrict them from shell access, you can create a user with the
nologin
shell. Run the following command, replacingsftpuser
with the desired username:
sudo adduser --shell /usr/sbin/nologin sftpuser
Follow the prompts to set a password and additional details for the user.
- Configure SFTP directory: By default, SSH users can access their home directories via SFTP. However, if you want to restrict a user to a specific directory, you can modify the SSH server configuration. Open the SSH configuration file again:
sudo nano /etc/ssh/sshd_config
Add the following lines at the end of the file to configure the SFTP directory for a user (replace sftpuser
with the actual username and /path/to/directory
with the desired directory):
Match User sftpuser
ForceCommand internal-sftp
ChrootDirectory /path/to/directory
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
Save the file and exit the text editor.
- Restart the SSH server: Restart the SSH server again for the configuration changes to take effect:
sudo systemctl restart ssh
After completing these steps, your SFTP server should be configured and ready to use on Ubuntu. Users can connect to the server using SFTP clients by specifying the server’s IP address
or hostname, the SSH port (default is 22), and their SSH key pair or password, depending on the authentication method allowed by the server.