Base Headless Pi Setup
This page describes how to get a Pi to a base level headless configuration (ie, SSH & networking enabled, all packages up to date)
- Minimum sd card size is 4GB
WARNING: Old method of Pi SD card setup NO LONGER WORKS!
Used to be that you could just write the Raspbian image to a card, add the ssh
file in the /boot
partition, and ssh into the pi, but the normal pi
user was removed in new OS versions. Instead, the Pi Imager tool must be used.
Install the imaging software and write the SD card
-
install the imaging software. On arch:
sudo pacman -S rpi-imager
(On other OS's, the package manager is different, but the package name should be the same or similar.)
2) Plug in the SD card that will go into the pi 3) Open the "Raspberry Pi Imager" software and choose an image ("Choose OS" button --> Raspberry Pi OS (other) --> OS Lite) 4) Hit the gear icon to change these settings: * hostname * enable ssh * username/password * wifi (if the pi has wifi) * Locale (time zone/keyboard layout) 5) Choose the SD card as the Storage device 6) Click the "Write" button
Boot the Pi and login
- Insert the SD card into the Pi
- plug in ethernet to the Pi if not using wifi (most USB ethernet adapters are supported)
- Apply power to the Pi
- wait for it to come online and log in via SSH (check local DHCP server logs for Pi's IP)
Post-install steps (after logging in):
- run
sudo raspi-config
to finish SD card setup:- 6 Advanced Options --> A1 Expand File System
- reboot the Pi
- update packages with
sudo apt update && sudo apt upgrade
The Pi can now be used for it's intended project.
Add SSH Keys
To allow login from Yubikey or other private key, public keys should be added to authorized_keys
file in the Pi user's home directory. Downlowding keys requires internet connection:
-
mkdir ~/.ssh
-
curl https://github.com/Keboose.keys > ~/.ssh/authorized_keys
-
chmod 700 ~/.ssh
-
chmod 600 ~/.ssh/authorized_keys
- (Optional) disable password login: edit
/etc/ssh/sshd_config
and add/modify the password auth lines to:PasswordAuthentication no PermitEmptyPasswords no