====== Ubuntu - SFTP - Script to Create a SFTP User to Access Only Home Directory ======
**NOTE:** This script will save the password in the **account.txt** file.
----
===== Go Home =====
cd /home
===== Create the accounts.txt file =====
sudo touch accounts.txt
----
===== Create the sftp shell setup script =====
#!/bin/bash
# This script automatically creates an SFTP Account and only allows access to the Home Directory.
# Check that a username is provided.
if [ $# -lt 1 ]; then
echo "Please enter a username"
echo "Usage: " $0 "peter"
exit
fi
# Check if the username already exists.
if id "$1" >/dev/null 2>&1; then
echo "Username already exists"
echo "Use a different username"
exit
fi
# Generate a random password for SFTP.
newuser=$1
randompw=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1)
# Create the new user and assign the random password.
useradd $newuser
echo $newuser:$randompw | chpasswd
# Set folder permissions.
mkdir /home/$newuser
chown root:root /home/$newuser
sleep 2
mkdir /home/$newuser/sftproot
sleep 2
chown $newuser:$newuser /home/$newuser/sftproot
cat <> /etc/ssh/sshd_config
Match User $newuser
ChrootDirectory /home/$newuser/
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no
EOF
sleep 2
service ssh restart
# New Username and Password to accounts.txt
cat <> /home/accounts.txt
$newuser $randompw
EOF
echo "SFTP Account:" $newuser " has been created with password:" $randompw
----
===== Make the script executable =====
sudo chmod +x createsftp.sh
----
===== To create an SFTP account =====
sudo ./createsftp.sh peter
returns:
SFTP Account: peter has been created with password: ABC0123def
**NOTE:** The Password is also saved in the accounts.txt file.
cat account.txt
returns:
peter ABC0123def
----
===== To Delete an SFTP Account =====
==== Delete the user ====
sudo deluser peter
returns:
Removing user `peter' ...
Warning: group `peter' has no more members.
Done.
----
==== Delete the sftp config lines ====
Delete the following lines from **/etc/ssh/sshd_config**:
Match User peter
ChrootDirectory /home/peter/
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no
----
==== Delete the home directory of the user ====
sudo rm -rf peter