ssh-cle-publique.sh

Arduino Portenta X8 · Archivo : ssh-cle-publique.sh · Lenguaje : Bash · Uso : Sécuriser l'accès SSH par clé et désactiver les mots de passe

Una placa conectada a la red debe bloquearse antes de salir del taller: este script comprueba que tu clave está instalada, desactiva la autenticación por contraseña y recarga sshd sin cortar la sesión actual.

Hardware

Un Arduino Portenta X8 (módulo ST STM32MP1: quad Cortex-A7 Linux + doble núcleo Cortex-M4 de tiempo real, 8 GB eMMC, 2 GB LPDDR4, Wi-Fi/BT integrados, opción LTE). Ninguno; un par de claves SSH generado en el puesto de trabajo.

Cableado

Nada que cablear. Hacerlo primero por SSH por cable/USB, no en remoto en una red hostil.

Funcionamiento

El script se niega a actuar con authorized_keys vacío, escribe un drop-in de sshd_config, valida con sshd -t y recarga: la sesión en curso nunca se corta.

Ejecución

Lado Linux: acceso SSH (USB-C routed o red) sobre la imagen Portenta Linux, scripts bash/Python. Lado tiempo real: Arduino IDE con el core « Arduino Mbed OS Portenta X8 Boards », núcleo M7 de aplicación, grabado vía mboot desde Linux.

Variantes

Añadir un usuario sudo no-root, un fail2ban ligero, o cortar el SSH cuando no se use (timer systemd).

ssh-cle-publique.sh

#!/bin/bash
# Durcissement SSH de la carte : cle publique obligatoire.
# A lancer APRES avoir installe sa cle (ssh-copy-id).

set -e

echo "1) Cle publique installee ? (sinon : ssh-copy-id root@<carte>)"
grep -q . /root/.ssh/authorized_keys 2>/dev/null || {
  echo "authorized_keys vide : installez d'abord votre cle !"; exit 1; }

echo "2) Desactivation des mots de passe..."
if ! grep -q '^PasswordAuthentication no' /etc/ssh/sshd_config.d/hardening.conf 2>/dev/null; then
  printf 'PasswordAuthentication no\nPermitRootLogin prohibit-password\n' |
    sudo tee /etc/ssh/sshd_config.d/hardening.conf
fi

sudo sshd -t && sudo systemctl reload ssh

echo "3) Verification : la session actuelle reste valide ;"
echo "   ouvrez un AUTRE terminal pour tester la cle avant de fermer."

# En production, ajouter un utilisateur non-root + sudo,
# et couper le mot de passe sudo si la cle U2F est supportee.

← Volver a la ficha