Inloggen met SSH zonder passphrase in MacOS

key pair

Wanneer je inlogt via SSH, kun je je op twee manieren identificeren:

Inloggen via key pair authenticatie is niet alleen veiliger, het zorgt ervoor dat je bij het inloggen niet steeds zelf je username en wachtwoord hoeft in te toetsen. Je gebruikt een private sleutel om je te authenticeren. Die private sleutel moet dan ook ten aller tijden privé blijven. Het is bijvoorbeeld zéér onverstandig om hem via het internet te versturen, bijvoorbeeld door hem ergens naartoe te mailen. Als iemand je private sleutel te pakken krijgt, kan hij hem misbruiken en zich als jou voordoen.

Als extra beveiliging wordt er daarom vaak een passphrase op de private sleutel gezet. Hierdoor moet, iedere keer wanneer je de private sleutel gebruikt, de passphrase worden ingevoerd. Hiermee wordt het eerder beschreven gemak echter weer teniet gedaan. Je moet namelijk weer iedere keer de passphrase invullen.

In MacOS is het echter ook mogelijk de passphrase in je Keychain toe te voegen. Hierdoor vult MacOS automatisch de passphrase voor je in, waardoor je dit niet steeds zelf hoeft te doen.

Om je passphrase in de Keychain op te slaan, doe je het volgende:

  1. Open de terminal
  2. Open de SSH configuratie:
    nano ~/.ssh/config
  3. Voer nu het volgende in:
    Host *
      UseKeychain yes
  4. Sla nu het bestand op met CTRL+x.
  5. Log nu in op een computer met SSH.
  6. Er wordt nu nog één keer om een passphrase gevraagd. (en deze wordt gelijk in je Keychain gezet)
  7. Log je SSH-sessie nu weer uit.
  8. Herhaal stap 5 en je zult zien dat er nu niets meer gevraagd wordt en dat je meteen ingelogd wordt.

 

Inloggen zonder wachtwoord met een sleutel

network security

Om een beveiligde verbinding op te zetten naar een andere computer op het internet wordt vaak SSH (Secure Shell) gebruikt. Hetzelfde protocol wordt door SFTP (Secure File Transfer Protocol), de veilige variant van FTP.

Je logt in met een SSH- of SFTP-client door middel van een gebruikersnaam en wachtwoord. Hoewel steeds meer mensen een veilig wachtwoord gebruiken is het nog steeds mogelijk om middels een “brute force” attack wachtwoorden te achterhalen. Daarnaast gebruiken veel mensen hetzelfde wachtwoord op verschillende plekken. Op zich is dit niet vreemd, omdat het lastig is om veel wachtwoorden te onthouden, maar erg verstandig is het niet. Je hebt immers geen zicht op hoe bijvoorbeeld een webshop jouw wachtwoord bewaart. Mocht die webshop gehackt worden en daarmee jouw wachtwoord, dan is het niet ondenkbaar dat men met die wachtwoord ook toegang probeert te verkrijgen tot je e-mail, social media account en nog veel meer.

Een veiligere manier om in te loggen is met een authenticatiesleutel. Deze inlogmethode is gebaseerd op asymmetrische cryptografie en bestaat uit een private en een publieke sleutel. De private sleutel staat op je eigen computer en de publieke sleutel staat op het systeem waarop je inlogt. In plaats van een wachtwoord in te voeren, log je enkel in met je gebruikersnaam. De computer waarop je inlogt, kent je publieke sleutel en en stuurt je een challenge. Jouw computer bewerkt deze vervolgens met je private sleutel en stuurt deze terug. De computer waarop je inlogt, kan je vervolgens authenticeren.

Dit biedt twee voordelen: je hoeft geen wachtwoord meer in te voeren en de sleutel zijn véél complexer dan een wachtwoord, waardoor het nagenoeg onmogelijk is om deze te kraken.

Als je werkt op Linux of een Mac, dan is het heel eenvoudig om een private en een publieke sleutel aan te maken met het volgende commando:

ssh-keygen -t rsa

Je wordt nu gevraagd waar je de sleutel op wilt slaan. Er wordt standaard een locatie in je home directory aangegeven. Als je op enter drukt zal deze locatie gebruikt worden. Wil je liever een andere locatie gebruiken dan kun je deze nu opgeven.

Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Vervolgens wordt er gevraagd om een wachtwoord waarmee je private sleutel beveiligd wordt:

Enter passphrase (empty for no passphrase):

Hoewel je een leeg wachtwoord kunt geven (dus geen wachtwoord zet op je sleutel) is het aan te raden om altijd een wachtwoord op je private sleutel te zetten. Voer nu je wachtwoord nogmaals in te verificatie.

Je private en publieke sleutel zijn nu aangemaakt. Ze zijn beide te vinden in ~/.ssh

Tot slot kopieer je je publieke sleutel naar de machine waarop je wilt inloggen:

ssh-copy-id <gebruikersnaam>@<hostname.van.je.machine>

Bij dit proces wordt je wachtwoord gevraagd. Dit is de laatste keer dat je het in hoeft te voeren voor deze machine. Wel moet je nog even je private sleutel toevoegen aan je SSH agent:

ssh-add -K ~/.ssh/id_rsa

Om de sleutel toe te voegen moet je éénmaal je wachtwoord invoeren.

That’s it! Vanaf nu kun je inloggen zonder dat je wachtwoord hoeft in te voeren. Inloggen met SSH-sleutel wordt ook gebruikt door bijvoorbeeld GitHub en Digital Ocean.