Wat is SSH en hoe maak je veilig verbinding met je server?
Stel je voor: je hebt een VPS bij DigitalOcean of Hetzner waarop je Python-scripts draaien voor je trading bots. Je backtests draaien, je API-sleutels liggen veilig opgeslagen, en je risicomanagement-module checkt elke order. Je moet snel een logbestand bekijken of een script herstarten. Je wilt niet telkens een wachtwoord intikken dat je bijna vergeten bent. SSH is je digitale autosleutel: één keer instellen, en je stapt zo binnen. Geen gedoe, geen onveilige open deuren. SSH staat voor Secure Shell. Het is een manier om een beveiligde verbinding te maken met je server, alsof je een tunnel bouwt die niemand afluistert. Je gebruikt het om commando’s te typen, bestanden te kopiëren en services te starten, zonder dat je wachtwoorden onveilig rondstuurt. Voor algoritmische trading is dat essentieel: je API-sleutels en risico-limieten mogen nooit per ongeluk zichtbaar zijn in logs of via onbeveiligde sessies.Wat je nodig hebt
Je hebt een VPS nodig, bijvoorbeeld een DigitalOcean Droplet van €5-€10 per maand of een Hetzner CX11 van €4-€6. Je server draait Linux (Ubuntu 22.04 of 24.04). Op je laptop of desktop installeer je een SSH-client: Windows 10/11 heeft er één ingebouwd, macOS en Linux ook. Je hebt een terminalprogramma nodig: Windows Terminal, PowerShell of de standaard Terminal op macOS/Linux. Je hebt root- of sudo-toegang op je server. En je hebt vijf minuten tijd om de basis te doen, plus tien minuten voor extra veiligheid.Stap 1: Verbinding maken met wachtwoord
Open je terminal. Je typt een commando om de eerste keer in te loggen. Vervang 123.45.67.89 door het IP-adres van je VPS.- Type: ssh root@123.45.67.89 en druk Enter.
- Als je de waarschuwing “The authenticity of host can’t be established” ziet, typ yes en Enter.
- Voer het wachtwoord in dat je van je hostingprovider kreeg (het wordt niet getoond terwijl je typt).
- Je ziet een prompt als root@vps:~#. Dat betekent: je bent binnen.
Probeer nu een simpel commando, bijvoorbeeld ls -la of htop als je dat geïnstalleerd hebt.
Als je geen htop hebt, doe dan apt update && apt install htop -y. Dit werkt op Ubuntu en Debian. Het duurt 30-60 seconden. Veelgemaakte fouten: je typt “ssh root @…” met een spatie, of je gebruikt het verkeerde IP.
Check het IP in je hostingdashboard. Een andere fout is een verkeerde gebruikersnaam; bij AWS of Azure heet de standaardgebruiker soms “ubuntu” of “ec2-user”. Pas het commando aan: ssh ubuntu@123.45.67.89.
Stap 2: SSH-sleutelpaar aanmaken op je laptop
Nu maken we een openbare en een privésleutel. Dat is veiliger dan wachtwoorden. Dit duurt twee minuten.- Op macOS/Linux: type ssh-keygen -t ed25519 -C "trading-vps" en Enter.
- Wanneer je wordt gevraagd om het bestand op te slaan, druk Enter voor de standaardlocatie: ~/.ssh/id_ed25519.
- Kies een optioneel wachtwoord voor je privésleutel. Sterk: minimaal 12 tekens, mix letters/cijfers/symbolen. Je kunt ook direct Enter drukken voor geen wachtwoord, maar een wachtwoord is extra veilig.
- Op Windows: open PowerShell en type hetzelfde commando ssh-keygen -t ed25519 -C "trading-vps". Volg dezelfde stappen.
Je hebt nu twee bestanden: id_ed25519 (privésleutel) en id_ed25519.pub (publieke sleutel). De privésleutel blijft op je laptop en mag nooit gedeeld worden.
De publieke sleutel mag naar je server. Veelgemaakte fouten: je maakt een RSA-sleutel van 2048 bits, terwijl ed25519 moderner en sneller is. Of je slaat je privésleutel op in een map die niet beveiligd is.
Zorg dat ~/.ssh alleen voor jou toegankelijk is. Op macOS/Linux: chmod 700 ~/.ssh en chmod 600 ~/.ssh/id_ed25519.
Stap 3: Publieke sleutel naar je server kopiëren
Nu je server je sleutel kent, hoef je geen wachtwoord meer te typen. Gebruik ssh-copy-id of doe het handmatig.Optie A: ssh-copy-id (makkelijk). Type: Optie B: handmatig, als ssh-copy-id niet werkt.
- ssh-copy-id root@123.45.67.89 (of ubuntu@…).
- Voer het wachtwoord één keer in.
- Je ziet een bevestiging dat de sleutel is toegevoegd.
Test de verbinding: log uit (type exit) en log opnieuw in met ssh root@123.45.67.89.
- Lees je publieke sleutel: cat ~/.ssh/id_ed25519.pub. Kopieer de hele regel.
- Log in op je server: ssh root@123.45.67.89.
- Maak de map .ssh als die niet bestaat: mkdir -p ~/.ssh.
- Plak de sleutel in ~/.ssh/authorized_keys: nano ~/.ssh/authorized_keys, plakken (Ctrl+Shift+V in veel terminals), opslaan (Ctrl+O), afsluiten (Ctrl+X).
- Zet de juiste rechten: chmod 700 ~/.ssh en chmod 600 ~/.ssh/authorized_keys.
Je zou direct binnen moeten zijn zonder wachtwoord. Veelgemaakte fouten: verkeerde rechten op .ssh of authorized_keys, wat SSH dwingt om alsnog een wachtwoord te vragen. Voorkom brute force risico's door nooit onveilige wachtwoorden te gebruiken. Een andere fout is het plakken van de privésleutel in authorized_keys; dat werkt niet. Gebruik alleen de inhoud van id_ed25519.pub.
Stap 4: Extra veiligheid instellen op je server
Je server moet goed beveiligd zijn, vooral als je API-sleutels voor brokers zoals Interactive Brokers, Binance, of Alpaca gebruikt. Dit duurt tien minuten.- Wijzig de SSH-poort van 22 naar iets anders, bijvoorbeeld 2222. Bewerk /etc/ssh/sshd_config: zoek “Port 22” en verander naar “Port 2222”. Sla op en sluit.
- Schakel wachtwoordlogins uit: zoek “PasswordAuthentication yes” en verander naar “PasswordAuthentication no”.
- Herstart SSH: systemctl restart sshd (of systemctl restart ssh).
- Update je firewall. Als je ufw gebruikt: ufw allow 2222/tcp, ufw enable. Als je iptables of de cloud-firewall gebruikt, open alleen 2222 en je trading ports (bijvoorbeeld 443 voor API’s).
- Maak een niet-root gebruiker voor dagelijks werk: adduser trader, geef een sterk wachtwoord, voeg toe aan sudo: usermod -aG sudo trader.
- Zet de publieke sleutel van trader ook in ~/.ssh/authorized_keys, net als bij root. Log voortaan in als trader: ssh trader@123.45.67.89 -p 2222.
Test de nieuwe poort: log uit en type ssh trader@123.45.67.89 -p 2222. Als het lukt, werkt het.
Als niet, controleer dan de firewall en de sshd_config. Veelgemaakte fouten: je vergeet de firewall open te zetten voor de nieuwe poort en sluit jezelf buiten. Of je schakelt PasswordAuthentication uit voordat je de publieke sleutel hebt getest, waardoor je niet meer kunt inloggen.
Fix: zorg dat je sleutel werkt één keer testen voor je wachtwoorden uitzet.
Een andere fout is het openen van te veel poorten; beperk je tot wat nodig is.
Stap 5: Handige SSH-commando’s voor trading-omgevingen
SSH is meer dan alleen inloggen. Gebruik het om scripts te starten, logs te bekijken en bestanden te kopiëren.- Bestanden kopiëren: scp -P 2222 local_bot.py trader@123.45.67.89:/home/trader/bots/.
- Een script op afstand starten: ssh trader@123.45.67.89 -p 2222 "cd /home/trader/bots && nohup python3 main_bot.py &".
- Logbestanden bekijken: ssh trader@123.45.67.89 -p 2222 "tail -f /home/trader/bots/logs/bot.log".
- Port forwarding voor een lokale webinterface: ssh -L 8080:localhost:8080 trader@123.45.67.89 -p 2222. Open http://localhost:8080 in je browser.
- Meerdere servers beheren? Gebruik een SSH-configbestand: maak ~/.ssh/config aan met:
Host trading-vps
HostName 123.45.67.89
User trader
Port 2222
IdentityFile ~/.ssh/id_ed25519
Daarna typ je simpel: ssh trading-vps. Handig als je meerdere VPS’en hebt voor verschillende brokers of backtesting-omgevingen.
Veelgemaakte fouten: scp zonder poortnummer gebruiken waardoor de verbinding mislukt. Of nohup vergeten, waardoor je bot stopt als je terminal sluit. Heb je al Python en alle benodigde libraries geïnstalleerd? Check altijd of je bot blijft draaien met ps aux | grep python.
Verificatie-checklist
Gebruik deze lijst om te controleren of alles goed staat. Doe dit na elke wijziging, zeker als je net een nieuwe VPS hebt ingericht voor je trading-bot.
- Je kunt inloggen met ssh trader@123.45.67.89 -p 2222 zonder wachtwoord.
- De privésleutel id_ed25519 heeft rechten 600 en ~/.ssh heeft 700.
- SSH-poort is gewijzigd van 22 naar iets anders (bijvoorbeeld 2222).
- PasswordAuthentication staat op “no” in /etc/ssh/sshd_config.
- Firewall staat aan en staat alleen poort 2222 en essentiële trading-poorten toe.
- Root-login is uitgeschakeld: zoek “PermitRootLogin no” in sshd_config.
- Je hebt een niet-root gebruiker met sudo-rechten voor dagelijks werk.
- Een simpel Python-script start en blijft draaien via nohup.
- Logbestanden zijn leesbaar en worden bijgewerkt.
- Je kunt bestanden kopiëren met scp naar de juiste map.
Als alles klopt, zit je veilig en snel op je server. Je scripts draaien, je API-sleutels zijn beschermd, en je kunt altijd snel schakelen tussen backtesting en live trading.
SSH is je stabiele basis: een veilige tunnel voor elke trade, elke test, elke update.
