Maakt de two-factor authentication (2FA) op je Linux server het je moeilijk? De Linux-server met 2FA van onze collega Eric liet hem laatst niet binnen via SSH. Gelukkig had hij dankzij lights-out management toegang tot de server, maar als je niet ter plekke op de machine kunt inloggen, zul je er naartoe moeten. In sommige gevallen is dat niet voldoende. We vertellen wat je moet doen als je dankzij two-factor authentication niet kan inloggen op je Linux Server.

Het kostte me niet veel tijd om uit te vinden wat het probleem was, en ik gok zomaar dat het vaker voorkomt dan je denkt. Toen ik het gefikst had kon ik snel weer inloggen via SSH, maar ik help graag mensen op weg die hetzelfde hebben.

Het probleem heeft alles te maken met tijd. Of in het geval van deze server: de verkeerde tijd. 2FA codes zijn tijdsgevoelig, dus ze vertrouwen erop dat de server en de app die je gebruikt om de codes te genereren synchroon lopen qua tijd. Als een van beide servers of apparaten de verkeerde tijd weergeeft, is de kans groot dat 2FA je geen toegang verleent. Het probleem ligt meestal aan de kant van de server.

Wat moet je doen als je dankzij 2FA niet kan inloggen op je Linux server?

Als je dankzij two-factor authentication niet kan inloggen op je Linux server is het eigenlijk heel makkelijk. Het enige wat je nodig hebt om dit op te lossen is een gebruiker met sudo rechten. Je begint met het instellen van de tijd op je server.

De tijdzone instellen op je Linux server

Hier ligt het meest voorkomende probleem. Tenzij je de tijdzone goed hebt ingesteld tijdens de installatie van je besturingssysteem, is de kans groot dat de tijd verkeerd is ingesteld. Open een terminal op je Linux server en voer dit commando uit:

timedatectl

De uitvoer van het bovenstaande commando zal niet alleen de ingestelde tijdzone van de machine weergeven, maar ook de lokale tijd, universele tijd, RTC-tijd, of de systeemklok gesynchroniseerd is, en of de NTP service actief is.

Het eerste wat we moeten doen is de tijdzone corrigeren (als die inderdaad onjuist is). Om dat te doen moet je weten hoe het systeem de tijdzones weergeeft. Voer daarvoor het commando uit:

timedatectl list-timezones

Doorzoek de resultaten om jouw tijdzone te vinden, het ziet er zo uit:

Country/State/City

Als een staat slechts één tijdzone heeft, wordt hij vermeld als:

Country/State

Als je eenmaal je volledige tijdzone weet, kun je die instellen met het commando:

sudo timedatectl set-timezone TIMEZONE

Waar TIMEZONE je volledige tijdzone is.

De tijd instellen op je Linux server

De beste manier om de tijd in te stellen is gebruik te maken van NTP, omdat dit de tijd automatisch synchroon houdt. Hoe je dit doet hangt af van de distributie die je gebruikt voor je servers. Voor RHEL-gebaseerde servers (zoals AlmaLinux en Rocky Linux), installeer je chrony met het commando:

sudo dnf install chrony -y

Voor een Ubuntu-gebaseerde server installeer je ntp met het volgende commando:

sudo apt-get install ntp -y

Schakel chrony in met de commando’s:

sudo systemctl start chronyd
sudo systemctl enable chronyd

Schakel ntp in met de commando’s:

sudo systemctl start ntp
sudo systemctl enable ntp

Geef het systeem even een minuut om te synchroniseren, en voilà: tijd zou nu correct moeten zijn (controleer het met het datum commando). Als het goed is kun je nu op je servers inloggen die met two-factor authentication beveiligd zijn.

Hopelijk lost dit je SSH/2FA probleem op. De kans is groot, want 90% van de 2FA login-problemen heeft te maken met niet-synchroon lopende klokken aan de serverkant. En ook al was je tijdsinstelling misschien goed wanneer je de 2FA instelde: wanneer je geen automatische tijdsync daemon gebruikt en je tijdzone verkeerd was, heeft je server last van tijdsdrift en laat je 2FA je niet toe.

Op de hoogte blijven?

Onze collega’s werken op dit moment gigantisch hard aan ons platform. Schrijf je in voor onze nieuwsbrief en weet als eerste wat er speelt.

Bedankt voor je inschrijving! Hij is in goede orde ontvangen.
Er ging iets mis met het versturen van je bericht. Kun je het nog eens proberen?