Accès SSH par clé à un hôte du laboratoire

Donner à un compte ou à un agent un accès SSH par clé à un conteneur du laboratoire : clé ed25519 dédiée, dépôt par pct, test sans mot de passe, configuration effective du serveur SSH et révocation.

  • Publié le
  • Mis à jour
  • Lecture7 min
  • ContexteHomelab / projet
  • NiveauIntermédiaire
  • Durée15 min
  • EnvironnementProxmox VE · LXC · OpenSSH
Version
1.0
Date d’édition
05/10/2026

Ouvrir un accès SSH par clé à un conteneur du laboratoire, sans mot de passe, vérifiable et révocable.

1. Objet

Dans le laboratoire, l’accès aux conteneurs se fait par clé : la connexion root par mot de passe est refusée. Cette procédure décrit l’ajout d’une clé pour un nouveau client, la lecture de la configuration réellement appliquée par le serveur SSH, puis la révocation.

Le cas de référence utilise un client SSH du VLAN 80 et le conteneur de WatchTower (CTID 2013, sur pve1). Les commandes décrivent une procédure d’administration : l’identifiant historique de la clé est conservé dans les exemples.

2. Périmètre et prérequis

Périmètre

Couvert : génération de la clé, dépôt, test, contrôle du fichier des clés, configuration effective du serveur, révocation.

Hors périmètre : ouverture du flux sur le pare-feu (procédure « Ouverture d’un flux entre deux zones du pare-feu SRX300 »), bastion d’administration Guacamole, envisagé.

Prérequis

  • Un accès au nœud Proxmox qui héberge le conteneur, avec la commande pct.
  • Le flux SSH autorisé de la zone du client vers celle du conteneur. Dans l’exemple : politique hermes-deploy, de lab vers srv, service junos-ssh.

3. Rôles et responsabilités

Rôle Responsabilité
Titulaire de la clé Génère la clé et conserve la partie privée, qui ne quitte jamais sa machine.
Administrateur virtualisation Dépose la clé publique depuis le nœud Proxmox, contrôle la configuration du serveur SSH, révoque la clé.

4. Procédure

Paramètres

Paramètre Description Valeur du cas de référence
CLIENT Machine qui se connecte Client de référence, 10.10.80.10
CTID Conteneur cible 2013 (WatchTower, sur pve1)
HOTE Adresse du conteneur 10.10.20.13
COMMENTAIRE Identifiant de la clé hermes-deploy@10.10.80.10

1. Générer la clé sur le client

Avant la génération : vérifier si le fichier cible existe déjà et ne pas écraser une clé utilisée. L’exemple ci-dessous crée une clé sans phrase de passe pour un usage automatisé ; pour un usage interactif, protéger la clé par une phrase de passe et conserver un accès de secours.

ssh-keygen -t ed25519 -N "" -C "hermes-deploy@10.10.80.10" -f ~/.ssh/id_ed25519 -q
cat ~/.ssh/id_ed25519.pub

Le commentaire identifie le titulaire dans le fichier des clés autorisées : c’est lui qui permet de retrouver la clé et de la révoquer. Une clé sans phrase de passe n’est admise que pour un agent automatisé ; une personne protège sa clé par une phrase de passe.

2. Déposer la clé publique dans le conteneur

# sur le nœud Proxmox qui héberge le conteneur
pct enter 2013
# dans le conteneur : une seule ligne, la clé publique complète
mkdir -p ~/.ssh
echo '<clé publique>' >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Le dépôt passe par pct : il n’exige aucun accès SSH préalable. Ajouter une clé ne retire aucun accès existant.

3. Tester la connexion sans mot de passe

# depuis le client
ssh -o BatchMode=yes -o ConnectTimeout=5 root@10.10.20.13 true && echo OK

BatchMode désactive les demandes interactives. Un résultat positif confirme une authentification non interactive, mais pas nécessairement l’utilisation de la clé visée si un agent SSH ou une autre méthode est disponible. Vérifier la clé réellement utilisée et valider au préalable l’empreinte du serveur.

4. Contrôler le fichier des clés

# dans le conteneur : chaque fin de ligne apparaît sous la forme $
cat -A ~/.ssh/authorized_keys
# supprimer une ligne parasite qui ne contient que le commentaire
sed -i '/^ *hermes-deploy@10.10.80.10$/d' ~/.ssh/authorized_keys

Un collage dans un terminal coupe souvent la clé en deux : le commentaire se retrouve seul sur une ligne invalide.

5. Lire la configuration effective du serveur SSH

sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'
# pour un client donné
sshd -T -C addr=<adresse_du_client>,user=root,host=x | grep -Ei 'passwordauthentication|permitrootlogin'

Ne pas se fier à la lecture de sshd_config : les fichiers de /etc/ssh/sshd_config.d/ sont inclus en tête et, pour chaque directive, la première valeur lue l’emporte. Sur le conteneur de WatchTower, le fichier 10-watchtower.conf fixe :

PermitRootLogin prohibit-password
PasswordAuthentication no

Après toute modification, contrôler la syntaxe avant de recharger :

sshd -t && systemctl reload ssh
Attention

Accès temporaire par mot de passe. Tant que le bastion Guacamole n’est pas déployé, un accès par mot de passe pour l’administrateur passe par un bloc Match Address limité au sous-réseau d’administration, placé en fin de fichier (les blocs Match doivent être les derniers) et commenté comme temporaire. Ce contournement existe sur deux hôtes du laboratoire, consigné comme écart ECA-01, et disparaît au déploiement de Guacamole.

Diagnostic

Symptôme Cause probable Suite
Délai dépassé Flux bloqué par le pare-feu ou par l’hôte Procédure d’ouverture d’un flux, section diagnostic.
Connection refused Service SSH arrêté ou port fermé sur l’hôte Vérifier le service depuis la console pct enter.
Permission denied (publickey) Le réseau fonctionne : clé absente, coupée au collage, ou droits du fichier trop ouverts Étapes 2 et 4. Ne pas modifier le pare-feu.

Révocation et retour arrière

Avant le retrait : sauvegarder authorized_keys, conserver une session de secours et vérifier l’empreinte de la clé concernée. Le commentaire est un repère modifiable, pas un identifiant cryptographique ; la commande de suppression retire toutes les lignes qui correspondent à son motif. Contrôler ensuite les accès conservés et le refus de la clé révoquée.

# dans le conteneur : retirer la clé, repérée par son commentaire
sed -i '/hermes-deploy@10.10.80.10/d' ~/.ssh/authorized_keys

Si l’accès n’a plus d’usage, retirer aussi la politique correspondante sur le pare-feu.

5. Intégration réseau

  • Le client et le conteneur sont dans deux zones différentes : lab pour le client de référence, srv pour WatchTower. Le flux SSH est ouvert par la politique hermes-deploy, limitée à ces deux hôtes.
  • Dans le cas documenté au 5 octobre 2026, le seul autre flux de ce client vers la zone serveurs est HTTPS vers le proxy inverse pour l’API de n8n (politique hermes-n8n).

6. Durcissement et sécurité

  • Une clé par titulaire, avec un commentaire qui l’identifie ; jamais de clé partagée.
  • La partie privée reste sur la machine du titulaire ; seule la partie publique circule.
  • Connexion root par mot de passe refusée ; la console pct enter reste la voie de reprise.
  • Écart documenté : la clé du client de référence ouvre un accès root au conteneur de WatchTower. Un compte dédié aux droits limités et une journalisation centralisée sont à prévoir ; leur mise en place n’est pas établie par cette procédure.

7. Vérifications finales

Contrôle Critère d’acceptation Statut
Connexion par clé Le test avec BatchMode affiche OK ☐
Fichier des clés cat -A montre une clé par ligne, sans ligne parasite ☐
Droits ~/.ssh en 700, authorized_keys en 600 ☐
Configuration effective sshd -T renvoie permitrootlogin without-password et passwordauthentication no ☐
Révocation La clé est retrouvable par son commentaire ☐

8. Références et historique des révisions

Version Date Modifications
1.0 05/10/2026 Création à partir du cas d’accès par clé au conteneur de WatchTower ; démarche côté client SSH et administrateur.
Défiler vers le haut