Building a bunch of Raspberry Pi's led me to wanting a default authentication certificate and disabling the certificate check.

As I build all the Raspberry PI's I wanted to disable the host authentication check and use a default SSL certificate. I built nearly 18 of them and it was getting brutal constantly deleting the known_hosts file and adding each new Pi into my config. I also wanted it to only apply to my domain name so it did not try and use my certificate outside of my network. I will not cover in detail adding the certificate at the same time you flash your Pi. For that I used pi-gen which will build a Raspberry Pi image that you can flash.

Some of the errors that you would see for the host checks would be something like this:

The authenticity of host ' (' can't be established.
ECDSA key fingerprint is SHA256:oN41psu6pnjJVyUUa5H+njN8KUPRZvAElNCczMcEI9Y.
Are you sure you want to continue connecting (yes/no)
Warning: Permanently added '' (ECDSA) to the list of known hosts. password:

The ECDSA host key for playground1.c.lan has changed,
and the key for the corresponding IP address
is unchanged. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
Offending key for IP in C:\\Users\\edward/.ssh/known_hosts:4
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
Please contact your system administrator.
Add correct host key in C:\\Users\\edward/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\\Users\\edward/.ssh/known_hosts:6
ECDSA host key for has changed and you have requested strict checking.
Host key verification failed.

To make this work I added the following to my ~/.ssh/config file. That is the file that ssh uses for configuration. Replace with your domain name and yourusernameonyourlinuxsystem with the username on your Linux system. Also replace the identity file path, ~/.ssh/linux_id with the path your private key for your user.

Host *
    User yourusernameonyourlinuxsystem
    StrictHostKeyChecking no
    IdentityFile ~/.ssh/linux_id

This configuration will only work if you used the same SSH keys for all your systems.


I am glad I did this. Coupling the same key on all Pi's and setting the default with the StrictHostKeyChecking no property in the configuration file made it considerably easier to build my Raspberry Pi's. And now I do not need to modify the config file with all my Pi's and other Linux systems. So much easier now.


Tool used to create the Raspbian images - RPi-Distro/pi-gen
Running pi-gen on WSL 2
This post is all about building and using a custom kernel for WSL2 and getting pi-gen to work.
Certificate Based SSH Authentication
I want to use Certificates to authenticate to my Linux servers.