4NK_template/docs/SSH_SETUP.md
Your Name 03fc255fdc
Some checks failed
CI - 4NK Node / Code Quality (push) Failing after 46s
CI - 4NK Node / Unit Tests (push) Failing after 29s
CI - 4NK Node / Integration Tests (push) Failing after 10s
CI - 4NK Node / Docker Build & Test (push) Failing after 8s
CI - 4NK Node / Documentation Tests (push) Failing after 4s
CI - 4NK Node / Security Tests (push) Failing after 27s
CI - 4NK Node / Release Guard (push) Has been skipped
CI - 4NK Node / Performance Tests (push) Failing after 27s
CI - 4NK Node / Notify (push) Failing after 1s
chore(template): update cursor rules, gitea templates, guards, ignores
2025-08-27 11:19:19 +02:00

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