Configurer un compte SSH sur un hôte pour automatiser des actions avec n8n

Procédure de création d'un compte Linux utilisable par n8n pour automatiser des actions d'administration/maintenance via SSH. Le compte aura les droits sudo et pourra se connecter sans mot de passe, seulement à l'aide d'une clé SSH.

Les manipulations ici ont été réalisées sur AlmaLinux 9.

Instructions

  1. Générer une clé SSH et stocker la clé privée dans un endroit sûr :
    ssh-keygen -t ed25519 -f n8n_key -C "n8n" -N ""
  2. Créer le compte n8n sur la machine :
    sudo useradd -m -s /bin/bash n8n
    sudo install -d -m 700 -o n8n -g n8n /home/n8n/.ssh
  3. Créer le fichier authorized_keys sur le compte n8n avec la clé publique dedans :
    echo "ssh-ed25519 AAAAC4NzfC1lZDI5NTE5BBBBID0G/+WnG2bGCvpSXWU8rErUDwC6/0bR4t/AtlwQ7e+P n8n" > /home/n8n/.ssh/authorized_keys
  4. Donner les permissions adéquates sur le fichier :
    sudo chown n8n:n8n /home/n8n/.ssh/authorized_keys
    sudo chmod 600 /home/n8n/.ssh/authorized_keys
    sudo restorecon -R /home/n8n/.ssh
  5. Faire le test suivant :
    grep -i '^Include' /etc/ssh/sshd_config
  6. Si la résultat de la commande est grep -i '^Include' /etc/ssh/sshd_config, alors paramètrer SSH comme ceci :
    sudo tee /etc/ssh/sshd_config.d/60-n8n.conf > /dev/null <<'EOF'
    Match User n8n
        PasswordAuthentication no
        AuthenticationMethods publickey
    EOF
  7. Redémarrer le service sshd :
    sudo sshd -t && sudo systemctl reload sshd
  8. Désactiver le mot de passe pour le sudo :
    echo 'n8n ALL=(ALL) NOPASSWD: ALL' | sudo tee /etc/sudoers.d/n8n
    sudo chmod 440 /etc/sudoers.d/n8n
    sudo visudo -cf /etc/sudoers.d/n8n
  9. Configurer la clé publique de l'hôte sur n8n et tester la connexion