Winkelwagen

/ .nl-domeinnaam

Jouw .nl voor slechts € 0,49.

Domeinnaam checken
E-mail

/ Hostingpakket keuzehulp

Weet je niet zeker welk hostingpakket de beste
keus is voor jouw website? Met onze keuzehulp
kom je er wel uit.

Direct naar de keuzehulp

/ OpenStack

/ Probeer Public Cloud uit

Gratis 1 maand aan de slag met Public Cloud?

Vraag proefperiode aan

/ TransIP Blog

Woocommerce vs Shopify - Kies jouw ideale platform

Lees de blogpost
Hulp nodig?

    Sorry, we konden geen resultaten vinden voor jouw zoekopdracht.

    SFTP gebruiken in Linux

    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 of downloaden vanaf je server. Dit is bijvoorbeeld handig voor een webserver om updates van websites op je VPS of instance te plaatsen.

    SFTP is standaard aanwezig in moderne Linux-distributies zoals Ubuntu, Debian, AlmaLinux, Rocky Linux en CentOS Stream. In dit artikel laten wij zien hoe je de configuratie van OpenSSH aanpast zodat SFTP-gebruikers geen verdere SSH-toegang tot je server hebben en de SFTP-toegang beperkt tot een specifieke map per gebruiker.


     

    Stap 1

    Verbind met je server via SSH, de VPS-console (VPS) of de OpenStack-console (OpenStack-instance)


     

    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:

    sudo groupadd sftp

    Je bent vrij de groepsnaam 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).

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

    Voor een webhostingserver zou dit er bijvoorbeeld als volgt uit kunnen zien:

    sudo useradd -g sftp -d /var/www/example.com/ -s /usr/sbin/nologin example
    sudo passwd example
    • 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 /usr/sbin/nologin: de gebruiker krijgt de shell toegang /usr/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.

    sudo mkdir -p /sftp/username/files

    In ons eerdere webhostingvoorbeeld zou dit bijvoorbeeld zijn:

    sudo mkdir -p /var/www/example.com/public_html
    • 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 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 mediaserver, bijvoorbeeld met een Block 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.

    sudo chmod 500 /sftp 
    sudo chmod 700 /sftp/username/files
    sudo chown root:root /sftp/username
    sudo chown username:sftp /sftp/username/files
    • 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 sftp (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:

    sudo 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 inlogt.

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

    In ons eerdere webhostingvoorbeeld zou je hier de volgende code gebruiken:

    AllowGroups sftp sshd
    Match Group sftp
    ChrootDirectory /var/www/%u.com
    ForceCommand internal-sftp -d /public_html

     

    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

    Kom je er niet uit?

    Ontvang persoonlijke hulp van onze supporters

    Neem contact op