Docs/ Sécurité/ Clés SSH

Clés SSH

Gérez les clés SSH pour une authentification sécurisée auprès des fournisseurs Git et l'accès aux serveurs distants.

Vue d'ensemble

Les clés SSH dans sh0 servent deux objectifs principaux :

  • Authentification auprès du fournisseur Git : Cloner des dépôts privés depuis GitHub, GitLab, Bitbucket ou tout serveur Git prenant en charge SSH.
  • Accès aux serveurs distants : Se connecter aux nœuds distants dans une configuration multi-serveur via des tunnels SSH.

sh0 stocke les clés privées SSH chiffrées au repos avec AES-256-GCM. Les clés ne sont déchiffrées en mémoire que lorsqu'elles sont nécessaires pour l'authentification.

Génération d'une paire de clés SSH

Si vous n'avez pas de paire de clés SSH, générez-en une avec la commande suivante. sh0 prend en charge les clés Ed25519 (recommandé) et RSA.

Ed25519 (recommandé) :

Terminal
ssh-keygen -t ed25519 -C "sh0-deploy-key" -f ~/.ssh/sh0_deploy

RSA (4096 bits) :

Terminal
ssh-keygen -t rsa -b 4096 -C "sh0-deploy-key" -f ~/.ssh/sh0_deploy

Cela crée deux fichiers :

  • ~/.ssh/sh0_deploy -- la clé privée (gardez-la secrète)
  • ~/.ssh/sh0_deploy.pub -- la clé publique (peut être partagée sans risque)
Warning
Ne partagez jamais votre clé privée. Seule la clé publique (fichier .pub) doit être ajoutée aux fournisseurs Git. La clé privée est uploadée vers sh0 pour qu'il puisse s'authentifier en votre nom.

Ajout de clés SSH à sh0

Vous pouvez ajouter des clés SSH via le tableau de bord ou l'API.

Via le tableau de bord :

  1. Accédez à Paramètres → Clés SSH.
  2. Cliquez sur Ajouter une clé SSH.
  3. Saisissez un nom descriptif (par ex., « Clé de déploiement GitHub »).
  4. Collez le contenu de votre fichier de clé privée.
  5. Cliquez sur Enregistrer.
Formulaire d'ajout de clé SSH avec champs nom et clé privée

Via l'API :

Terminal
curl -X POST https://your-server:9000/api/ssh-keys \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "GitHub Deploy Key",
    "private_key": "-----BEGIN OPENSSH PRIVATE KEY-----\\n...\\n-----END OPENSSH PRIVATE KEY-----"
  }'

Clés SSH pour les fournisseurs Git

Pour déployer depuis des dépôts privés, sh0 a besoin d'une clé SSH qui a un accès en lecture au dépôt. Voici comment la configurer pour les fournisseurs courants :

GitHub :

  1. Allez dans votre dépôt → Paramètres → Clés de déploiement.
  2. Cliquez sur Ajouter une clé de déploiement.
  3. Collez le contenu de votre clé publique (fichier .pub).
  4. Laissez « Autoriser l'accès en écriture » décoché (sh0 n'a besoin que de l'accès en lecture).
Page de configuration de clé de déploiement GitHub

GitLab :

  1. Allez dans votre projet → Paramètres → Dépôt → Clés de déploiement.
  2. Ajoutez une nouvelle clé de déploiement avec votre clé publique.
  3. Accordez l'accès en lecture seule.

Bitbucket :

  1. Allez dans votre dépôt → Paramètres → Clés d'accès.
  2. Cliquez sur Ajouter une clé et collez votre clé publique.
Tip
Vous pouvez utiliser la même paire de clés SSH pour plusieurs dépôts, ou générer une clé séparée pour chaque dépôt pour un contrôle d'accès plus granulaire. sh0 prend en charge plusieurs clés et les essaiera dans l'ordre lors de la connexion à un fournisseur Git.

Clés SSH pour l'accès serveur

Lors de l'ajout de nœuds distants à une configuration multi-serveur, sh0 utilise des clés SSH pour établir des tunnels sécurisés. La clé doit être autorisée sur le serveur distant.

  1. Ajoutez la clé SSH à sh0 (comme décrit ci-dessus).
  2. Copiez la clé publique dans le fichier ~/.ssh/authorized_keys du serveur distant :
Terminal
ssh-copy-id -i ~/.ssh/sh0_deploy.pub deploy@remote-server

Lors de l'ajout du nœud dans sh0, sélectionnez cette clé SSH pour l'authentification. sh0 l'utilisera pour établir le tunnel SSH vers le démon Docker distant.

Configuration de nœud avec menu déroulant de sélection de clé SSH

Empreintes de clés

Chaque clé SSH a une empreinte unique que vous pouvez utiliser pour vérifier son identité. sh0 affiche l'empreinte SHA-256 pour chaque clé stockée.

Terminal
# View the fingerprint of a local key file
ssh-keygen -lf ~/.ssh/sh0_deploy.pub

Comparez cette empreinte avec celle affichée dans le tableau de bord sh0 pour vérifier que vous avez bien uploadé la bonne clé.

Gestion de plusieurs clés

Le panneau Clés SSH liste toutes les clés stockées dans sh0. Pour chaque clé, vous pouvez voir :

  • Nom de la clé et empreinte
  • Type de clé (Ed25519, RSA)
  • Date d'ajout
  • Quelles applications ou nœuds utilisent la clé
Panneau de gestion des clés SSH montrant toutes les clés stockées avec leurs détails
Tip
Utilisez des noms descriptifs pour vos clés (par ex., « GitHub - production-api », « Nœud - EU Francfort ») pour pouvoir facilement identifier quelle clé est utilisée pour quel objectif.

Suppression de clés

Pour supprimer une clé SSH de sh0 :

  1. Accédez à Paramètres → Clés SSH.
  2. Cliquez sur l'icône de suppression à côté de la clé que vous souhaitez supprimer.
  3. Confirmez la suppression.
Terminal
curl -X DELETE https://your-server:9000/api/ssh-keys/key_abc123 \
  -H "Authorization: Bearer YOUR_TOKEN"
Danger
Supprimer une clé SSH utilisée par une application ou un nœud cassera les déploiements et les connexions serveur. sh0 vous avertira si la clé est actuellement utilisée avant d'autoriser la suppression.