ssh-cle-publique.sh

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

Une carte connectée au réseau doit se verrouiller avant de sortir du bureau : ce script vérifie la présence de votre clé, désactive l'authentification par mot de passe et recharge sshd sans couper la session courante.

Matériel requis

Une Arduino Portenta X8 (module ST STM32MP1 : quad Cortex-A7 Linux + double cœur Cortex-M4 temps réel, 8 Go eMMC, 2 Go LPDDR4, Wi-Fi/BT embarqués, option LTE). Aucun ; une paire de clés SSH générée sur le poste de travail.

Câblage

Rien à câbler. Se faire en SSH filaire/USB d'abord, pas à distance sur un réseau hostile.

Fonctionnement

Le script refuse d'agir sans authorized_keys non vide, écrit un drop-in sshd_config, valide avec sshd -t puis reload — la session en cours n'est jamais coupée.

Exécution

Côté Linux : accès SSH (USB-C routed ou réseau) sur l'image Portenta Linux, scripts bash/Python. Côté temps réel : Arduino IDE avec le core « Arduino Mbed OS Portenta X8 Boards », cœur M7 applicatif, flash via mboot depuis Linux.

Variantes

Ajouter un utilisateur sudo non-root, un fail2ban léger, ou couper le SSH quand non utilisé (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.

← Retour à la fiche