Inloggen via key pair authenticatie

Het inloggen op de Raspberry PI’s SSH server kan via het SSH protocol. Standaard wordt dan gevraagd om een loginname en een password. Veiliger is het om met certificates te werken en een key-pair te genereren. Als de gebruiker een certificaat heeft, kan ingelogd worden, anders niet. Het commando om een key-pair te genereren is: (geef enters om de defaults te accepteren)

$ ssh-keygen -t rsa -C pi@raspberry

Hiermee wordt een key-pair gegenereerd in de directory ~/.ssh Het bestand id_rsa is de private key en id_rsa.pub is de public key. Kopieer id-rsa.pub naar  authorized_keys  van de host waarmee verbinding gemaakt moet worden met:

$ ssh-copy-id user@hostname

Het inloggen met een username/password is nu niet meer wenselijk en kan worden uitgezet door de volgende regel aan te passen met:

$ sudo nano /etc/ssh/sshd_config

#PasswordAuthentication yes

wordt dan

PasswordAuthentication no

Hierna de sshd service opnieuw starten met:

$ sudo service ssh restart

That’s all, folks! Klik op ‘Open’ en je bent op een veilige manier ingelogd.


Firewall

Om het inloggen te beperken tot een bepaalde machine (jump-host/steppingstone/bastion) kan een firewall functie toegevoegd worden. Het eenvoudigst kan dit met UFW ( Uncomplicated Firewall)

$ sudo apt install -y ufw
$ sudo ufw enable

Om nu ssh (TCP/port 22) te beperken tot de jump-host, voeg de volgende rule to aan ufw:

$ sudo ufw allow from 12.34.56.78 to any port 22 proto tcp

met uiteraard het ip adres van de jump-host i.p.v. 12.34.56.78

De status kan opgevraagd worden met:

$ sudo ufw status

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       12.34.56.78

ssh via jumphost

+-------------------------------------------------+
|                                                 |
| +-----+      +----------+       +-------------+ |
| | you |----->| jumphost |------>| destination | |
| +-----+      +----------+       +-------------+ |
|                                                 |
+-------------------------------------------------+

Om in te loggen via een jump-host naar de destination host, bijvoorbeeld:

$ ssh -J nico@jumphost pi@destination

Om het inloggen via een jumpost eenvoudiger te maken kan de configuratie van ssh aangepast worden in ~/.ssh/config

Host jumphost
  Hostname jumphost.local
  User nico

Host destination
  User pi
  ProxyJump jumphost

Hierna kun je rechtstreeks naar de destination:

$ ssh destination