Op een bestaande Linux server is het eenvoudig om sftp functionaliteit toe te voegen door gebruik te maken van de sshd daemon.

Je kunt ook het pakket vsftp installeren, maar dit artikel beschrijft hoe het ook kan zonder extra software te installeren.

In dit voorbeeld wordt de data opgeslagen in /opt/sftp en is de home directory van het sftp account /home/sftp dit is belangrijk omdat je niet wilt dat de ssh keys door het sftp account gewijzigd kunnen worden. Door de ChrootDirectory voorkom je dat de sftp user ook een cd /etc kan doen en daar van alles kan downloaden.

 

mkdir /opt/sftp
chmod 755 /opt/sftp
groupadd sftp

 

Je kunt nu voor elk sftp account dat je wilt aanmaken het volgende doen:


useradd -g sftp -m -d /home/sftp1 -s /sbin/nologin sftp1

mkdir /opt/sftp/sftp1
chown root:root /opt/sftp/sftp1
chmod 755 /opt/sftp/sftp1
mkdir /opt/sftp/sftp1/data
chown sftp1:sftp /opt/sftp/sftp1/data
chmod 755 /opt/sftp/sftp1/data

Voeg de onderstaande regels to aan het einde van de file /etc/ssh/sshd_conf
de regel Subsystem sftp alleen als deze nog niet bestaat (bestaat nl. meestal al)

Subsystem sftp /usr/libexec/openssh/sftp-server
Match group sftp
ChrootDirectory /opt/sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -d /data

Maak nu ssh-keys aan voor de gebruiker.

sudo -u sftp1 bash
ssh-keygen

cd /home/sftp1/.ssh
cp id_rsa.pub authorized_keys

Haal nu de private-key naar de client en log dan in met:

sftp -i fstp1_private-key sftp1@server