130 lines
3.4 KiB
Markdown
130 lines
3.4 KiB
Markdown
# Configuration SSH automatique pour ihm_client
|
|
|
|
## Vue d'ensemble
|
|
|
|
Le projet `ihm_client` utilise automatiquement les clés SSH pour toutes les opérations Git, que ce soit en local ou dans l'environnement CI/CD Gitea Actions.
|
|
|
|
## Configuration automatique
|
|
|
|
### Environnement CI/CD
|
|
|
|
Dans l'environnement CI/CD Gitea Actions, la configuration SSH est automatique :
|
|
|
|
1. **Variable d'environnement** : La clé SSH privée est fournie via la variable `SSH_PRIVATE_KEY`
|
|
2. **Configuration automatique** : Le workflow CI configure automatiquement SSH pour `git.4nkweb.com`
|
|
3. **Test de connexion** : La connexion SSH est testée avant chaque opération Git
|
|
|
|
### Environnement local
|
|
|
|
En local, le script `scripts/setup-ssh-ci.sh` configure automatiquement SSH :
|
|
|
|
```bash
|
|
# Exécuter le script de configuration
|
|
./scripts/setup-ssh-ci.sh
|
|
```
|
|
|
|
## Configuration manuelle
|
|
|
|
Si la configuration automatique ne fonctionne pas, voici les étapes manuelles :
|
|
|
|
### 1. Générer une clé SSH
|
|
|
|
```bash
|
|
ssh-keygen -t rsa -b 4096 -C "votre-email@example.com"
|
|
```
|
|
|
|
### 2. Ajouter la clé publique à Gitea
|
|
|
|
1. Copier le contenu de `~/.ssh/id_rsa.pub`
|
|
2. Aller dans les paramètres de votre compte Gitea
|
|
3. Ajouter la clé SSH dans la section "SSH Keys"
|
|
|
|
### 3. Configurer Git pour utiliser SSH
|
|
|
|
```bash
|
|
git config --global url."git@git.4nkweb.com:".insteadOf "https://git.4nkweb.com/"
|
|
```
|
|
|
|
### 4. Tester la connexion
|
|
|
|
```bash
|
|
ssh -T git@git.4nkweb.com
|
|
```
|
|
|
|
## Workflow CI/CD
|
|
|
|
Le workflow CI/CD (`.gitea/workflows/ci.yml`) inclut :
|
|
|
|
### Étapes SSH automatiques
|
|
|
|
1. **Setup SSH for Gitea** : Configure la clé SSH et les paramètres de connexion
|
|
2. **Checkout code** : Utilise SSH pour cloner le repository
|
|
3. **Tests et build** : Exécute les tests et builds avec SSH configuré
|
|
|
|
### Variables requises
|
|
|
|
- `SSH_PRIVATE_KEY` : Clé SSH privée pour l'authentification
|
|
- `SSH_PUBLIC_KEY` : Clé SSH publique (optionnelle)
|
|
|
|
## Sécurité
|
|
|
|
### Bonnes pratiques
|
|
|
|
- Les clés SSH sont stockées de manière sécurisée dans les secrets Gitea
|
|
- Les permissions des fichiers SSH sont correctement configurées (600 pour les clés privées)
|
|
- La vérification des hôtes SSH est configurée pour `git.4nkweb.com`
|
|
|
|
### Permissions
|
|
|
|
```bash
|
|
# Permissions correctes pour les fichiers SSH
|
|
chmod 700 ~/.ssh
|
|
chmod 600 ~/.ssh/id_rsa
|
|
chmod 644 ~/.ssh/id_rsa.pub
|
|
chmod 600 ~/.ssh/config
|
|
```
|
|
|
|
## Dépannage
|
|
|
|
### Problèmes courants
|
|
|
|
1. **Permission denied** : Vérifier les permissions des fichiers SSH
|
|
2. **Host key verification failed** : Ajouter `git.4nkweb.com` aux hôtes connus
|
|
3. **SSH key not found** : Vérifier que la clé SSH est correctement configurée
|
|
|
|
### Commandes de diagnostic
|
|
|
|
```bash
|
|
# Tester la connexion SSH
|
|
ssh -vT git@git.4nkweb.com
|
|
|
|
# Vérifier la configuration Git
|
|
git config --global --list | grep url
|
|
|
|
# Vérifier les permissions SSH
|
|
ls -la ~/.ssh/
|
|
```
|
|
|
|
## Intégration avec 4NK_node
|
|
|
|
Lors de l'intégration avec `4NK_node`, la configuration SSH est préservée :
|
|
|
|
- Les clés SSH sont partagées entre les projets
|
|
- La configuration Git utilise SSH pour tous les repositories 4NK
|
|
- Le workflow CI/CD maintient la cohérence SSH
|
|
|
|
## Évolution
|
|
|
|
### Améliorations futures
|
|
|
|
- Support pour plusieurs clés SSH
|
|
- Rotation automatique des clés
|
|
- Intégration avec un gestionnaire de secrets externe
|
|
- Support pour l'authentification par certificats SSH
|
|
|
|
### Maintenance
|
|
|
|
- Vérification régulière de la validité des clés SSH
|
|
- Mise à jour des configurations SSH selon les bonnes pratiques
|
|
- Documentation des changements de configuration SSH
|