Authenticatie
DR-Terminal ondersteunt drie authenticatiemethoden: wachtwoord, privésleutel en FIDO2-beveiligingssleutel (YubiKey).
Wachtwoord
De eenvoudigste route. Een wachtwoord dat je bij een opgeslagen verbinding invoert, belandt in de beveiligde opslag van het platform — nooit in de JSON-configuratie. Als het wachtwoordveld leeg is, vraagt de app er elke keer om wanneer je verbindt.
Publieke sleutel → terugval naar wachtwoord: wanneer de server een publieke sleutel afwijst (bijv. omdat die niet in authorized_keys staat), vraagt DR-Terminal automatisch om het wachtwoord voor dezelfde gebruiker in plaats van de verbinding te verbreken.
Privésleutel
Sleutels in het formaat OpenSSH, PKCS#1, PKCS#8, ssh.com of PuTTY PPK (v2/v3) worden allemaal geaccepteerd — het formaat wordt automatisch gedetecteerd, dus een .ppk-sleutel werkt zonder eerst te converteren. Je kunt:
- De sleutel rechtstreeks in het verbindingsformulier plakken.
- De sleutelbeheerder gebruiken (Instellingen → Beveiliging → SSH-sleutels) en een opgeslagen sleutel selecteren. Sleutelbestanden die je hier importeert, mogen bovendien ruwe binaire DER zijn.
Als de sleutel met een wachtwoordzin is versleuteld, vraagt DR-Terminal erom bij het eerste gebruik van de sleutel en bewaart die daarna alleen in het geheugen — zoals ssh-agent, één keer ontgrendelen per app-run; de app afsluiten vergrendelt elke sleutel weer. Geïmporteerde versleutelde sleutels blijven in hun oorspronkelijke versleutelde vorm in de beveiligde opslag. We ondersteunen veel algoritmen — RSA, ECDSA (P-256, P-384, P-521), Ed25519, Ed25519-SK, ECDSA-SK (FIDO).
Sleutelgenerator
Bij Instellingen → Beveiliging vind je een wizard SSH-sleutel genereren. Kies het type (bijv. ed25519), stel een wachtwoordzin in (optioneel — die beschermt de sleutel zelfs binnen de beveiligde opslag) en de sleutel wordt lokaal opgeslagen. De standaard sleutelopmerking is ${user}@${host}@DR-Terminal — handig om de sleutel op de server te herkennen. De publieke sleutel kan naar het klembord worden gekopieerd voor ~/.ssh/authorized_keys op de server.
Sleutels in de lijst kunnen ter plekke worden hernoemd; als de naam die je kiest botst met een bestaande, voegt de app automatisch (2) toe.
Sleutelconverter
Instellingen → Beveiliging → SSH-sleutels → Converteren serialiseert een privésleutel opnieuw tussen alle gangbare formaten — kies een bron (een opgeslagen sleutel, een bestand of geplakte tekst) en een doelformaat, en kopieer, deel of bewaar vervolgens het resultaat.
Formaten, beide richtingen:
| Formaat | Lezen | Schrijven |
|---|---|---|
OpenSSH (BEGIN OPENSSH PRIVATE KEY) | ✓ | ✓ |
PKCS#8 (BEGIN PRIVATE KEY) | ✓ | ✓ |
PKCS#1 (BEGIN RSA PRIVATE KEY, alleen RSA) | ✓ | ✓ |
| PuTTY PPK — v2 en v3 | ✓ | ✓ |
De invoer kan PEM (tekst), PuTTY PPK of ruwe binaire DER zijn — het formaat wordt automatisch gedetecteerd. Sleuteltypen: RSA, Ed25519 en ECDSA (P-256/384/521).
- PuTTY PPK-export werkt nu in beide richtingen (voorheen kon de app alleen
.ppklezen). Kies met de versiekiezer v3 (Argon2id KDF + HMAC-SHA-256, modern PuTTY) of v2 (ouder PuTTY). Op deze manier gemaakte bestanden laden ongewijzigd in PuTTY/puttygen. - Optionele exportwachtwoordzin. Laat die leeg voor een niet-versleutelde sleutel; stel die in en de uitvoer wordt versleuteld met een sterke formaatspecifieke KDF (bcrypt / PBKDF2 / Argon2id). Zie Beveiliging & gegevens → Geëxporteerde sleutels.
- Als de conversie mislukt (verkeerde bronwachtwoordzin, incompatibel formaat), toont de app nu de werkelijke reden in plaats van een generieke fout.
PKCS#1 beschrijft alleen RSA-sleutels, dus dat doel wordt alleen aangeboden wanneer de bron een RSA-sleutel is.
Een wachtwoordverbinding overzetten naar een sleutel
Je hoeft authorized_keys niet met de hand te bewerken. Voor een opgeslagen wachtwoordverbinding biedt DR-Terminal op twee plekken een begeleide upgrade:
- Verbindingenlijst — het sleutelpictogram op de kaart van een wachtwoordverbinding start de migratiewizard.
- Binnen een sessie — het terminalmenu van een verbonden wachtwoordsessie heeft Overschakelen naar SSH-sleutel.
Beide doorlopen dezelfde flow: kies een opgeslagen sleutel of genereer een nieuwe, DR-Terminal zet de publieke sleutel op de server via de bestaande wachtwoordaanmelding, test of sleutelauthenticatie daadwerkelijk werkt en schakelt pas daarna de opgeslagen verbinding over naar sleutelauthenticatie. Als de test mislukt, blijft de verbinding ongewijzigd.
Beveiligingssleutel (FIDO2 / YubiKey)
DR-Terminal verwerkt ed25519-sk- en ecdsa-sk-sleutels — en je kunt ze vanuit de app genereren. Geen externe ssh-keygen nodig.
Een door YubiKey ondersteunde sleutel genereren in DR-Terminal
- Instellingen → Beveiliging → SSH-sleutels → SSH-sleutel genereren.
- Zet de schakelaar Beveiligingssleutel aan. Kies het algoritme — Ed25519-SK (aanbevolen) of ECDSA-SK.
- Raak je YubiKey aan wanneer daarom wordt gevraagd. De app vraagt de token een nieuwe credential aan te maken en ondertekent de publieke sleutel.
- De sleutel wordt opgeslagen in de sleutelbeheerder van DR-Terminal. Kopieer de publieke sleutel en plak die in
~/.ssh/authorized_keysop de doelserver.
Windows Hello: op Windows is de FIDO2-pincodeprompt het native Windows Hello-dialoogvenster (pincode / vingerafdruk / gezicht), geen dialoogvenster in de app.
Residente sleutels (opgeslagen op de YubiKey zelf) maken het overbodig om het sleutelbestand mee te dragen — het volledige geheim leeft op de token. Sleutels die in DR-Terminal worden gegenereerd zijn niet-resident: de credential-handle wordt bewaard in de sleutelbeheerder en is samen met de token nodig.
Een bestaande SK-sleutel gebruiken
Als je al een elders gegenereerde id_ed25519_sk / id_ecdsa_sk hebt (bijv. via ssh-keygen -t ed25519-sk), importeer die dan via dezelfde sleutelbeheerder — DR-Terminal behandelt geïmporteerde en gegenereerde SK-sleutels op dezelfde manier.
Bij het verbinden
DR-Terminal vraagt om een aanraking op je sleutel. De indicator knippert — tik erop. iOS ondersteunt NFC en USB-C (YubiKey 5Ci en later). Android — NFC + USB (OTG). Desktop gebruikt native FIDO2-API's (Windows Hello, macOS, Linux via libfido2).