Skip to main content

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

  1. 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

  1. Insert the SD card into the Pi
  2. plug in ethernet to the Pi if not using wifi (most USB ethernet adapters are supported)
  3. Apply power to the Pi
  4. 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):

  1. run sudo raspi-config to finish SD card setup:
    • 6 Advanced Options --> A1 Expand File System
  2. reboot the Pi
  3. 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. Downloading keys requires internet connection:

  1. mkdir ~/.ssh
  2. curl https://github.com/your-github-username.keys > ~/.ssh/authorized_keys
  3. chmod 700 ~/.ssh
  4. chmod 600 ~/.ssh/authorized_keys
  5. (Optional) disable password login: edit /etc/ssh/sshd_config and add/modify the password auth lines to:
    PasswordAuthentication no
    PermitEmptyPasswords no
    

Reboot Pi after changing SSH config.