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