Winkelwagen

    Sorry, we konden geen resultaten vinden voor jouw zoekopdracht.

    SFTP-server handleiding CentOS 7

    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 CentOS 7 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.

    • Gebruik sudo of voer de stappen in dit artikel uit als root-user.
    • CentOS 7 komt standaard met OpenSSH geïnstalleerd en hoef je niet apart te installeren.
    • SandboxVPS'en gebruiken alleen IPv6. In SFTP-software zoals FileZilla gebruik je haakjes om je IPv6-adres op te geven als serveradres, bijvoorbeeld [2a01:7c8:aac6:381:5054:ff:fe75:81a]

     

    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 /dir/username door de naam van de root map waar deze gebruiker zijn bestanden naar gaat uploaden.

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

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

    useradd -g sftp -d /var/www/example.com/ -s /sbin/nologin example
    Toelichting
    • useradd: voegt een nieuwe gebruiker toe
      • -g sftp: voegt de nieuwe gebruiker toe aan de groep sftp
      • -d /dir/username: maakt /dir/username de home directory van deze gebruiker. Je bent vrij dit aan te passen, bijvoorbeeld:
        • Host je een website in /var/www/example.com/public_html, dan zou zou je hier /var/www/example.com gebruiken
        • Gebruik je een Plex server, bijvoorbeeld met een Big Storage, dan zou je bijvoorbeeld /mnt/bigstorage/plex-media gebruiken.
      • -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

    Optioneel kun je een bestaande user aan de sftp groep toevoegen met het commando:

    usermod -a -G groupname username

     

    Stap 4

    De nieuwe gebruiker heeft nog geen wachtwoord. Deze stel je in met het commando:

    passwd username

     

    Stap 5

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

    mkdir -p /dir/username/sftp

    In ons eerdere webhostingsvoorbeeld zou dit zijn:

    mkdir -p /var/www/example.com/public_html
    • Pas de directorie aan naar de directorie die je in stap 3 hebt opgegeven.
    • De toevoeging -p staat voor parent, en zorgt ervoor dat de onderliggende mappen ook worden aangemaakt.

     

    Stap 6

    Pas de rechten en eigendom van de mappen aan met onderstaande commando's (vervang username door de in stap 3 gekozen gebruikersnaam).

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

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

    In ons eerdere webhostingsvoorbeeld gebruik je de volgende commando's:

    chmod 555 /var/www/example.com
    chmod 700 /var/www/example.com/public_html
    chown root:root /var/www/example.com
    chown example:sftp /var/www/example.com/public_html

    Het eindresultaat zorgt ervoor dat de gebruiker 'example' de inhoud van /var/www/example.com kan bekijken, maar enkel in /var/www/example.com/public_html bestanden kan plaatsen.


     

    Stap 7

    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 8

    Scroll helemaal naar onderen en voeg de onderstaande regels toe.

    AllowGroups sftp sshd
    Match Group sftp
    ChrootDirectory /dir/%u
    ForceCommand internal-sftp -d /sftp

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

    Sla de wijzigingen op en sluit nano met ctrl + > > enter. In ons eerdere webhostingsvoorbeeld 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 9

    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.

    Kom je er niet uit?

    Ontvang persoonlijke hulp van onze supporters

    Neem contact op