Ga naar inhoud

SSH & SFTP Installatie

In deze handleiding leer je hoe je OpenSSH kunt installeren en gebruiken op een Linux-systeem.
We gebruiken hier Debian/Ubuntu als voorbeeld, maar de stappen voor RHEL/CentOS zijn vergelijkbaar.

Achtergrondinformatie

  • SSH (Secure Shell): ontwikkeld door Tatu Ylönen in 1995, nu onderhouden door het OpenSSH-project (onderdeel van OpenBSD).
    Het biedt veilige, versleutelde toegang tot servers op afstand en is de standaard voor systeembeheer.

  • SFTP (SSH File Transfer Protocol): uitgebracht als onderdeel van het IETF SSH2 protocol rond 2001.
    Het maakt gebruik van dezelfde beveiligde verbinding als SSH en wordt vooral gebruikt om bestanden veilig te kopiëren tussen systemen.

SFTP inbegrepen

SFTP is geen aparte installatie.
Het is standaard onderdeel van OpenSSH, dus zodra je SSH installeert, heb je automatisch ook SFTP.


1. Controleren of SSH (en SFTP) al aanwezig zijn

ssh -V

Voorbeeld output:

OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022

2. Installatie

sudo apt update
sudo apt install -y openssh-server
Voorbeeld output
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  ncurses-term openssh-sftp-server ssh-import-id
Suggested packages:
  ssh-askpass molly-guard rssh
The following NEW packages will be installed:
  ncurses-term openssh-server openssh-sftp-server ssh-import-id
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 600 kB of archives.
After this operation, 5,000 kB of additional disk space will be used.
Setting up openssh-server (1:8.9p1-3ubuntu0.3) ...
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for systemd (249.11-0ubuntu3.6) ...
sudo yum install -y openssh-server
Voorbeeld output
Updating Subscription Management repositories.
Last metadata expiration check: 0:15:32 ago on Mon Jan 10 12:20:00 2023.
Dependencies resolved.
======================================================================
 Package                Arch   Version                  Repository
======================================================================
 Installing:
  openssh-server        x86_64 8.0p1-10.el8             baseos
Installing dependencies:
  openssh               x86_64 8.0p1-10.el8             baseos
  openssh-clients       x86_64 8.0p1-10.el8             baseos

Transaction Summary
======================================================================
Install  3 Packages

Installed:
  openssh-8.0p1-10.el8.x86_64
  openssh-clients-8.0p1-10.el8.x86_64
  openssh-server-8.0p1-10.el8.x86_64

Complete!

3. SSH-Service beheren

Wanneer de OpenSSH-server is geïnstalleerd, moet de service geactiveerd en gestart worden zodat je verbindingen kunt accepteren. Hieronder zie je de belangrijkste commando’s en hun functie:

sudo systemctl enable ssh
  • Zorgt ervoor dat de SSH-service automatisch start bij het opstarten van het systeem.
Voorbeeld output systemctl enable ssh
Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /lib/systemd/system/ssh.service.
sudo systemctl start ssh
  • Start de SSH-service direct, zodat je meteen verbindingen kunt maken.
Voorbeeld output systemctl start ssh
(geen directe output bij succes, de service wordt gewoon gestart)
sudo systemctl status ssh
  • Controleert de huidige status van de SSH-service en toont of deze actief draait.
Voorbeeld output systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-01-10 12:34:56 UTC; 10s ago
   Main PID: 1234 (sshd)
      Tasks: 1 (limit: 1111)
     Memory: 2.0M
     CGroup: /system.slice/ssh.service
             └─1234 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

4. Verbinden met SSH

Met SSH maak je een beveiligde shell-verbinding naar je server.
Het commando heeft de vorm:

ssh gebruikersnaam@ip-adres

Praktisch voorbeeld:

ssh alice@192.168.1.20

Handig om te weten

  • Als je standaardpoort 22 gebruikt, hoef je de poort niet te vermelden.
  • Gebruik je een andere poort (bijv. 2222), dan moet je dit toevoegen:
    ssh -p 2222 alice@192.168.1.20
    

5. Verbinden met SFTP

SFTP is de Secure File Transfer Protocol.
Het werkt via dezelfde SSH-service, dus je hoeft geen aparte installatie te doen.

sftp gebruikersnaam@ip-adres

Praktisch voorbeeld:

sftp alice@192.168.1.20
Voorbeeld van een interactieve sessie
Connected to 192.168.1.20.
sftp> put bestand.txt      # upload bestand
sftp> get log.txt          # download bestand
sftp> ls                   # bestanden tonen
sftp> exit                 # sessie afsluiten

SCP alternatief

Voor éénmalige bestandsoverdracht is SCP vaak sneller:

scp bestand.txt alice@192.168.1.20:/home/alice/

6. Extra nuttige commando’s

Open SSH in de firewall met UFW:

sudo ufw allow ssh
sudo ufw reload

Open SSH in de firewall met firewalld:

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

Herlaad de configuratie zonder de service volledig te herstarten:

sudo systemctl reload ssh

Controleer de configuratie voordat je herstart:

sudo sshd -t

Tip

Als er geen output komt, betekent dat dat de configuratie geldig is.

Bekijk live logs van de SSH-service:

journalctl -u ssh -f

Upload een bestand naar de server:

scp bestand.txt gebruikersnaam@server:/doelmap/

Download een bestand van de server:

scp gebruikersnaam@server:/pad/naar/bestand.txt ./

Info

Voor grotere/multiple bestanden is rsync vaak efficiënter.

Stuur een lokale poort door naar een poort op de server:

ssh -L 8080:localhost:80 gebruikersnaam@server

Nu kun je lokaal http://localhost:8080 openen.

Logging en Debugging

Wanneer je problemen hebt met SSH of SFTP, kan logging je helpen om de oorzaak te achterhalen.

journalctl -u ssh -f
Voorbeeld output
Aug 25 10:22:41 server sshd[1234]: Accepted password for alice from 192.168.1.20 port 51562 ssh2
Aug 25 10:22:41 server sshd[1234]: pam_unix(sshd:session): session opened for user alice by (uid=0)
Aug 25 10:25:03 server sshd[1256]: Received disconnect from 192.168.1.20 port 51562:11: disconnected by user
Aug 25 10:25:03 server sshd[1256]: Disconnected from user alice 192.168.1.20 port 51562

Je kunt tijdelijk het debug-niveau verhogen door de SSH-daemon in debug-modus te starten:

sudo systemctl stop ssh
sudo /usr/sbin/sshd -D -ddd
  • -D → niet in de achtergrond draaien
  • -d / -dd / -ddd → verschillende debug-niveaus (meer d = meer details)
Voorbeeld output
debug1: sshd version OpenSSH_8.9, OpenSSL 3.0.2 15 Mar 2022
debug2: load_server_config: filename /etc/ssh/sshd_config
debug3: /etc/ssh/sshd_config line 23: Applying options for *
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.

Als je vanaf de client wilt debuggen:

ssh -vvv alice@192.168.1.20
Voorbeeld output
OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
debug1: Reading configuration data /etc/ssh/ssh_config
debug2: resolving "192.168.1.20" port 22
debug1: Connecting to 192.168.1.20 [192.168.1.20] port 22.
debug1: Connection established.
debug1: Authentication succeeded (publickey).

SFTP maakt gebruik van de SSH-service. Fouten verschijnen dus ook in de SSH-logs.
Voor extra debugging kan je op de client:

sftp -vvv alice@192.168.1.20
Voorbeeld output
OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Authentication succeeded (password).
Connected to 192.168.1.20.
sftp> ls
file1.txt  file2.log

Configuratiebestanden

SSH en SFTP maken gebruik van een aantal belangrijke configuratiebestanden. Hieronder een overzicht:

  • /etc/ssh/sshd_config
    Het belangrijkste configuratiebestand voor de SSH-daemon (server). Hier stel je zaken in zoals de poort (Port), toegestane authenticatiemethoden (PasswordAuthentication, PubkeyAuthentication), root-login (PermitRootLogin) en SFTP-instellingen.

  • /etc/ssh/ssh_config
    Het configuratiebestand voor de SSH-client. Dit bepaalt standaardopties voor alle uitgaande SSH-verbindingen, zoals de standaard gebruiker of host-specifieke instellingen.

  • ~/.ssh/config
    Gebruikersspecifieke configuratie voor SSH-clients. Hier kun je shortcuts definiëren voor servers (bijvoorbeeld aliassen, standaard sleutels per host, enz.).

  • /etc/ssh/moduli
    Bevat cryptografische parameters (Diffie-Hellman groepen) die gebruikt worden voor sleuteluitwisseling.

  • /var/log/auth.log (Debian/Ubuntu) of /var/log/secure (RHEL/CentOS)
    Logbestanden waarin je kunt nakijken wie er verbinding maakt en of er inlogpogingen mislukken.

Handige check

Na wijzigingen in /etc/ssh/sshd_config altijd testen met:

sudo sshd -t
Zo voorkom je dat je jezelf buitensluit door een configuratiefout.



SSH verwijderen

Ja, het is technisch mogelijk om OpenSSH te verwijderen, maar dit wordt sterk afgeraden.
Zeker als je server alleen via SSH beheerd wordt, kan dit ervoor zorgen dat je geen toegang meer hebt.
Verwijder SSH dus alleen als je fysieke toegang hebt tot de server of een alternatieve beheerinterface (bijv. IPMI, iDRAC, of de cloud-console van je provider).

sudo apt remove openssh-server
sudo yum remove openssh-server

Let op

Het verwijderen van SSH kan leiden tot permanente buitensluiting van je server.
Overweeg dit alleen in een testomgeving of wanneer je zeker weet dat er een alternatieve toegang beschikbaar is.

Hardening Tips

Aanbevelingen voor extra veiligheid

  • Poort aanpassen in /etc/ssh/sshd_config (bijv. Port 2222)
  • Alleen key-authenticatie toestaan (PasswordAuthentication no)
  • Root-login blokkeren (PermitRootLogin no)
  • Gebruik Fail2ban of firewall regels voor extra beveiliging

✅ Na installatie heb je zowel SSH als SFTP tot je beschikking!