Hulpartikel overzicht

Hulpartikel

SFTP-server handleiding Ubuntu 16 & 18

SFTP maakt gebruik van SSH om een beveiligde verbinding op te zetten tussen computers voor het versturen van bestanden.

Met een SFTP-server kun je relatief eenvoudig bestanden uploaden naar je server. Dit is bijvoorbeeld handig voor een webserver om updates van websites op je VPS te plaatsen, of bij een Plex-server om media te uploaden.

In dit artikel laten wij zien hoe je de configuratie van OpenSSH in Ubuntu 16 of 18 aanpast zodat SFTP-gebruikers geen verdere SSH-toegang tot je server hebben en de SFTP-toegang beperkt tot een specifieke map per gebruiker.

Gebruik je liever FTPS? Neem dan een kijkje in ons vsftpd-artikel.


 

Stap 1

Verbind met je VPS via SSH of de VPS-console in je controlepaneel.


 

Stap 2

Alle gebruikersaccounts binnen Linux behoren tot een (of meerdere) groep(en). Uit veiligheidsoverwegingen, en om de SFTP-accounts eenvoudiger in bulk te kunnen beheren, maak je een groep aan waar de SFTP-gebruikers in worden toegevoegd:

groupadd sftp

Je bent vrij de groepnaam naar wens aan te passen. Let wel dat je dan ook de groupnaam in de volgende stappen aanpast.


 

Stap 3

Maak vervolgens een gebruiker aan met het commando hieronder, waarbij je username vervangt door de daadwerkelijke sftp-gebruikersnaam en /sftp door de naam van de root map waar deze gebruiker zijn bestanden naar gaat uploaden (e.g. /sftp/username/files).

useradd -g sftp -d /sftp -s /usr/sbin/nologin username
passwd username
Toelichting
  • useradd: voegt een nieuwe gebruiker toe
    • -g sftp: voegt de nieuwe gebruiker toe aan de groep sftp
    • -d /sftp: maakt /sftp de home directory van deze gebruiker
    • -s /sbin/nologin: de gebruiker krijgt de shell toegang /sbin/nologin, oftewel: geen login rechten via ssh
    • username: de gebruikersnaam van de nieuwe gebruiker
  • passwd username: stel een wachtwoord in voor de nieuwe gebruiker

 

Stap 4

Maak voor de nieuwe gebruiker vervolgens de map aan waar hij/zij bestanden naar kan uploaden.

mkdir -p /sftp/username/files
  • Pas username aan naar de gebruikersnaam die je in stap 3 hebt gekozen.
  • De toevoeging -p staat voor parent, en zorgt ervoor dat de onderliggende mappen sftp en username ook worden aangemaakt.
  • Je bent vrij de directory aan te passen naar een andere locatie, bijvoorbeeld:
    • Host je een website in /var/www/example.com/public_html, dan zou zou je hier /var/www/example.com/public_html gebruiken
    • Stel dat je een SFTP map wil toevoegen in een home directory, dan vervang je bijvoorbeeld de mapnaam /sftp door /home/username/sftp. Let wel dat de gebruiker in dit voorbeeld wel moet bestaan.
    • Gebruik je een Plex server, bijvoorbeeld met een Big Storage, dan zou je bijvoorbeeld /mnt/bigstorage/plex-media/pictures (en/of videos / series) gebruiken.

 

Stap 5

Pas de rechten en eigendom van de mappen aan met onderstaande commando's.

Hiermee zorg je ervoor dat de sftp-gebruiker uiteindelijk enkel rechten heeft om bewerkingen uit te voeren in de map /sftp/username/files, en niet in de onderliggende mappen.

chmod 500 /sftp 
chmod 700 /sftp/username/files
chown root:root /sftp/username
chown username:sftp /sftp/username/files
Toelichting
  • chmod 500 /sftp: Geef enkel de eigenaar van /sftp read en execute rechten tot de /sftp map.
  • chmod 700 /sftp: Geef enkel de eigenaar van /sftp/username/files read, write en execute rechten in de map /sftp/username/files
  • chown root:root /sftp/username: Maak de gebruiker en groep root eigenaar van de /sftp/username map
  • chown username:sftp /sftp/username/files: Maakt de gebruiker username en de groep ftpusers (de groep waar username toe behoort) eigenaar van /sftp/username/files

 

Stap 6

Tot slot is een kleine aanpassing nodig van de configuratie van je SSH-server. Open eerst de configuratie, bijvoorbeeld:

nano /etc/ssh/sshd_config

 

Stap 7

Scroll helemaal naar onderen en voeg de onderstaande regels toe.

AllowGroups ssh sftp
Match Group sftp
ChrootDirectory /sftp/%u
ForceCommand internal-sftp

Gebruikers van de groep sftp, worden hiermee automatisch in de map /sftp/u% geplaatst, waar u% (automatisch) de naam is van de gebruiker die inlogd.

Sla de wijzigingen op en sluit nano met ctrl + x > y > enter.


 

Stap 8

Herlaad tot slot je SSH server om de wijziging te verwerken:

systemctl restart sshd

 

Je kunt nu verbinden met je server via SFTP! Let wel dat je in je SFTP-software SFTP als protocol selecteert in plaats van FTP/FTPS. Daarnaast gebruik je je SSH-poort in plaats van je FTP-poort. Mocht je niet zeker weten welke poort dit is, dan kun je die achterhalen op je server met het commando:

cat /etc/ssh/sshd_config | grep Port

 

Mocht je aan de hand van dit artikel nog vragen hebben, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' onderaan deze pagina.

Wil je dit artikel met andere gebruikers bespreken, laat dan vooral een bericht achter onder 'Reacties'.

 

Heb je ook een goed idee?

Stuur jouw idee in! Met genoeg stemmen komt jouw idee op onze wishlist!

Heeft dit artikel je geholpen?

Maak een account aan of log in om een beoordeling achter te laten.

Reacties

Maak een account aan of log in om een reactie te plaatsen.

0
Matthijs van Beek Admin 15 juli 2019 (#3313)

@gerbentesselaar,

Goeie! Hetzelfde geldt ook voor Ubuntu 16. Wij hebben het artikel hierop aangepast.

0
gerbentesselaar 13 juli 2019 (#3306)

Bij Ubuntu 18 bij stap 3 is het belangrijk dat je ipv

useradd -g sftp -d /sftp -s /sbin/nologin username

useradd -g sftp -d /sftp -s /usr/sbin/nologin username

gebruikt.

0
Matthijs van Beek Admin 27 juni 2019 (#3251)

@paspalas,

Je moet hiervoor inderdaad SSH geinstalleerd hebben, zie het aandachtsblok bovenaan het artikel. De naam SFTP is verwarrend, maar SFTP gebruikt daadwerkelijk SSH, vandaar dat dat vereist is.

Op een Ubuntu 18.04 VPS krijgen wij geen foutmelding geproduceerd bij het uitvoeren van systemctl restart sshd. Zou je een bericht kunnen sturen naar onze supportafdeling via de 'neem contact op'-knop onderaan dit artikel met de foutmelding die je krijgt?

0
paspalas 26 juni 2019 (#3245)

moet je hiervoor eerst SSH geïnstalleerd hebben? En hoe zit dat met sFTP? Staat niet vermeld, volg de stappen zoals ze hier staan maar krijg een fout bij "systemctl restart sshd"

De titel suggereerd dat je hiermee je sftp server kunt opzetten...

Kom je er niet uit?

Ontvang persoonlijke hulp van onze supporters

Neem contact op