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é) :
ssh-keygen -t ed25519 -C "sh0-deploy-key" -f ~/.ssh/sh0_deployRSA (4096 bits) :
ssh-keygen -t rsa -b 4096 -C "sh0-deploy-key" -f ~/.ssh/sh0_deployCela 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)
.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 :
- Accédez à Paramètres → Clés SSH.
- Cliquez sur Ajouter une clé SSH.
- Saisissez un nom descriptif (par ex., « Clé de déploiement GitHub »).
- Collez le contenu de votre fichier de clé privée.
- Cliquez sur Enregistrer.
Via l'API :
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 :
- Allez dans votre dépôt → Paramètres → Clés de déploiement.
- Cliquez sur Ajouter une clé de déploiement.
- Collez le contenu de votre clé publique (fichier
.pub). - Laissez « Autoriser l'accès en écriture » décoché (sh0 n'a besoin que de l'accès en lecture).
GitLab :
- Allez dans votre projet → Paramètres → Dépôt → Clés de déploiement.
- Ajoutez une nouvelle clé de déploiement avec votre clé publique.
- Accordez l'accès en lecture seule.
Bitbucket :
- Allez dans votre dépôt → Paramètres → Clés d'accès.
- Cliquez sur Ajouter une clé et collez votre clé publique.
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.
- Ajoutez la clé SSH à sh0 (comme décrit ci-dessus).
- Copiez la clé publique dans le fichier
~/.ssh/authorized_keysdu serveur distant :
ssh-copy-id -i ~/.ssh/sh0_deploy.pub deploy@remote-serverLors 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.
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.
# View the fingerprint of a local key file
ssh-keygen -lf ~/.ssh/sh0_deploy.pubComparez 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é
Suppression de clés
Pour supprimer une clé SSH de sh0 :
- Accédez à Paramètres → Clés SSH.
- Cliquez sur l'icône de suppression à côté de la clé que vous souhaitez supprimer.
- Confirmez la suppression.
curl -X DELETE https://your-server:9000/api/ssh-keys/key_abc123 \
-H "Authorization: Bearer YOUR_TOKEN"