Ga naar inhoud

SFTP Gebruikers Workflow β€” Ubuntu/Linux Server + macOS/Windows Clients

Deze handleiding legt uit hoe je SFTP-gebruikers toevoegt, rechten instelt en configureert.
We behandelen de configuratie op een Ubuntu/Linux server, en de verbinding vanaf macOS en Windows (PowerShell/Git Bash).

Info

Alle voorbeelden gebruiken poort 22 expliciet, zodat je dit makkelijk kunt aanpassen als jouw server een andere poort gebruikt.


πŸ”Ή Wat is SFTP?

SFTP (SSH File Transfer Protocol) is een manier om veilig bestanden uit te wisselen via een SSH-verbinding.

Het werkt via dezelfde poort en sleutels als SSH, maar kan apart worden geconfigureerd zodat gebruikers: - alleen toegang hebben tot bestanden - geen toegang tot shell/commando’s krijgen


Kies een distro

πŸ”Ή Gebruiker toevoegen

Op de server (Ubuntu/Linux) maak je een nieuwe gebruiker aan die alleen SFTP mag gebruiken.

Met adduser maak je eenvoudig een nieuwe gebruiker sftpuser. De optie --home geeft de locatie van de home directory aan, en --shell /usr/sbin/nologin zorgt dat deze gebruiker geen toegang tot bash of ssh-shell krijgt.

sudo adduser --home /home/sftpuser --shell /usr/sbin/nologin sftpuser

Alternatief kun je de meer "basis" variant useradd gebruiken. Daarbij moet je extra opties meegeven:

-m β†’ maakt automatisch de home directory aan.

-d β†’ specificeert waar de home directory moet komen.

-s β†’ zet de shell op nologin, zodat de gebruiker alleen SFTP mag gebruiken.

Omdat useradd standaard geen wachtwoord instelt, moet je dit daarna nog doen met passwd:

sudo useradd -m -d /home/sftpuser -s /usr/sbin/nologin sftpuser
sudo passwd sftpuser

πŸ”Ή Home map instellen

Stel de juiste eigenaar en rechten in op de home directory, zodat de nieuwe gebruiker hier bestanden kan opslaan en lezen

  # Zorg dat de chroot-directory van root is
  sudo chown root:root /home/sftpuser
  sudo chmod 755 /home/sftpuser

  # Maak een uploadmap aan waar sftpuser bestanden mag plaatsen
  sudo mkdir /home/sftpuser/upload
  sudo chown sftpuser:sftpuser /home/sftpuser/upload

πŸ”Ή configuratie voor sftpuser

Open het configuratiebestand:

  sudo nano /etc/ssh/sshd_config

Voeg onderin in de config bestand 1 van de regel hieronder klink op zo on de zien hoe je dit goed instelt:

sftpuser moet eigendom zijn van root en mag niet schrijfbaar zijn voor de gebruiker.

Match User sftpuser
  ChrootDirectory /home/sftpuser
  ForceCommand internal-sftp
  AllowTcpForwarding no

Zorg ervoor dat je sftpuser toevoegt aan de www-data groep, zodat hij bestanden in /var/www/ kan bewerken.

Match User sftpuser
  ChrootDirectory /var/www
  ForceCommand internal-sftp
  AllowTcpForwarding no

Om een bind-mount te maken, gaan we eerst een stap terug: Maak een www-map aan in de home-directory van sftpuser. Mount vervolgens de /var/www/-map naar deze nieuwe locatie zodat de inhoud gespiegeld wordt. Zorg er daarnaast voor dat sftpuser lid is van de www-data groep, zodat hij schrijfrechten heeft binnen de gemounte map.

    # Maak een map in de home van de gebruiker
    sudo mkdir /home/sftpuser/www
    # Bind mount zodat /var/www gespiegeld wordt in /home/sftpuser/www
    sudo mount --bind /var/www /home/sftpuser/www

    # (Optioneel) permanent maken in /etc/fstab
    echo "/var/www  /home/sftpuser/www  none  bind  0  0" | sudo tee -a /etc/fstab
    # Open de `etc/fstab`
    sudo nano /etc/fstab

    # Zoek deze regel hieronder
    /var/www  /home/sftpuser/www  none  bind  0  0
    # Verwijder de hele regel of zet er een # voor om hem uit te schakelen
    # /var/www  /home/sftpuser/www  none  bind  0  0

SSH-configuratie aanpassen:

    sudo nano /etc/ssh/sshd_config

Voeg onderaan toe:

     Match User sftpuser
     ChrootDirectory /home/sftpuser
     ForceCommand internal-sftp
     AllowTcpForwarding no

login methode aanpassen:

voeg toe onderaan de Match user sftpuser, bepaal voor je zelf welk je wilt gebruiken. deze regels overschrijven de instellende regels voor ssh toegang dan voor alleen de sftpuser

  PasswordAuthentication no
  PubkeyAuthentication yes

πŸ”Ή Herstart de SSH-service

sudo systemctl restart ssh

πŸ”Ή Verbinden via Windows (PowerShell / GUI)

In Windows 10/11 zit sftp standaard bij PowerShell.

   sftp -P 22 sftpuser@192.168.1.50

Of via WinSCP / FileZilla (GUI):

  1. Protocol: SFTP
  2. Hostname: 192.168.1.50
  3. Gebruiker: sftpuser of webuser
  4. Poort: 22 (of aangepaste poort)
  5. Authenticatie:
  6. Wachtwoord (als toegestaan in sshd_config)
  7. Of SSH sleutel β†’ vaak .ppk formaat vereist
    • Zet je OpenSSH-sleutel (id_rsa of id_ed25519) om naar .ppk met PuTTYgen
  8. Selecteer dit bestand bij "Sleutelbestand" in de Site Manager

πŸ”Ή loggen en debuggen

Logs vind je op de server via:

  journalctl -u ssh

πŸ”Ή Gebruiker toevoegen

Maak een gebruiker aan voor SFTP-only toegang.

sudo adduser -d /home/sftpuser -s /sbin/nologin sftpuser
sudo passwd sftpuser

πŸ”Ή Gebruiker toevoegen

Zelfde werkwijze als CentOS.

sudo adduser -d /home/sftpuser -s /sbin/nologin sftpuser
sudo passwd sftpuser

πŸ”Ή Gebruiker toevoegen

Gebruik useradd om een gebruiker aan te maken met SFTP-only toegang.

sudo useradd -m -d /home/sftpuser -s /usr/bin/nologin sftpuser
sudo passwd sftpuser

πŸ”Ή Gebruiker toevoegen

Op Alpine Linux gebruik je adduser.

adduser -D -h /home/sftpuser -s /sbin/nologin sftpuser
passwd sftpuser

πŸ”Ή Gebruiker toevoegen

Op Windows (met OpenSSH-server geΓ―nstalleerd) maak je een nieuwe gebruiker aan via PowerShell:

net user sftpuser <Wachtwoord> /add

Geef deze gebruiker beperkte toegang tot de SFTP-root via de OpenSSH configuratie (sshd_config).