Documentation: - Add comprehensive SSH key setup guide in docs/SSH-SETUP.md - Add SSH configuration sections to README.md and QUICKSTART.md - Replace specific provider examples with generic alternatives - Remove Hetzner/BorgBase specific instructions for broader applicability Anonymization: - Remove company/project specific names (Agence66 → generic) - Generalize service names (/srv/app → /srv/*) - Remove detailed application lists (/opt/nextcloud, etc. → /opt/*) - Replace specific usernames and hostnames with placeholders - Change repository label from 'serveur' to 'production' Files updated: - README.md: Add SSH setup, anonymize content - QUICKSTART.md: Add SSH configuration steps - CHANGELOG.md: Generalize paths list - config.yaml: Generic title and label - install.sh: Remove branding - scripts/healthcheck.sh: Remove branding - docs/SSH-SETUP.md: New comprehensive SSH guide 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
239 lines
5.8 KiB
Markdown
239 lines
5.8 KiB
Markdown
# Configuration SSH pour Borgmatic
|
|
|
|
Guide complet pour configurer l'authentification SSH par clé pour les backups distants.
|
|
|
|
## Pourquoi utiliser des clés SSH ?
|
|
|
|
- **Automatisation** : Pas de mot de passe à saisir manuellement
|
|
- **Sécurité** : Plus sécurisé qu'un mot de passe
|
|
- **Requis** : Nécessaire pour que le timer systemd fonctionne automatiquement
|
|
|
|
## Configuration étape par étape
|
|
|
|
### 1. Générer une clé SSH
|
|
|
|
```bash
|
|
# Se connecter en root
|
|
sudo su -
|
|
|
|
# Générer une clé Ed25519 (recommandé)
|
|
ssh-keygen -t ed25519 -C "borgmatic-backup@$(hostname)"
|
|
|
|
# Ou RSA si Ed25519 n'est pas supporté
|
|
ssh-keygen -t rsa -b 4096 -C "borgmatic-backup@$(hostname)"
|
|
```
|
|
|
|
**Réponses aux questions** :
|
|
|
|
```
|
|
Enter file in which to save the key (/root/.ssh/id_ed25519): [Entrée]
|
|
Enter passphrase (empty for no passphrase): [Entrée - laisser vide]
|
|
Enter same passphrase again: [Entrée]
|
|
```
|
|
|
|
**Important** : Laissez la passphrase **vide** pour permettre l'automatisation.
|
|
|
|
### 2. Vérifier que la clé a été créée
|
|
|
|
```bash
|
|
ls -la /root/.ssh/
|
|
# Vous devriez voir :
|
|
# id_ed25519 (clé privée - à garder secrète)
|
|
# id_ed25519.pub (clé publique - à copier sur le serveur)
|
|
```
|
|
|
|
### 3. Copier la clé sur le serveur distant
|
|
|
|
#### Méthode automatique (recommandée)
|
|
|
|
```bash
|
|
# Syntaxe générale
|
|
ssh-copy-id -p PORT user@backup-server.com
|
|
|
|
# Exemples
|
|
ssh-copy-id -p 22 backup@backup.example.com
|
|
ssh-copy-id -p 2222 user@192.168.1.100
|
|
```
|
|
|
|
Saisissez le mot de passe du serveur **une dernière fois**.
|
|
|
|
#### Méthode manuelle
|
|
|
|
Si `ssh-copy-id` ne fonctionne pas :
|
|
|
|
```bash
|
|
# 1. Afficher votre clé publique
|
|
cat /root/.ssh/id_ed25519.pub
|
|
|
|
# 2. Se connecter au serveur distant
|
|
ssh -p PORT user@backup-server.com
|
|
|
|
# 3. Sur le serveur distant, ajouter la clé
|
|
mkdir -p ~/.ssh
|
|
chmod 700 ~/.ssh
|
|
echo "VOTRE_CLE_PUBLIQUE_ICI" >> ~/.ssh/authorized_keys
|
|
chmod 600 ~/.ssh/authorized_keys
|
|
exit
|
|
```
|
|
|
|
### 4. Tester la connexion
|
|
|
|
```bash
|
|
# Tester sans mot de passe
|
|
ssh -p PORT user@backup-server.com
|
|
|
|
# Si ça fonctionne, vous êtes connecté directement !
|
|
# Tapez 'exit' pour revenir
|
|
```
|
|
|
|
**Si on vous demande toujours un mot de passe** :
|
|
- Vérifiez les permissions : `chmod 600 /root/.ssh/id_ed25519`
|
|
- Vérifiez le serveur : `ssh -v -p PORT user@backup-server.com` (mode verbeux)
|
|
|
|
## Cas spécifiques
|
|
|
|
### Serveurs avec interface web
|
|
|
|
Certains fournisseurs de stockage backup proposent une interface web pour gérer les clés SSH :
|
|
|
|
1. Connectez-vous à l'interface web de votre fournisseur
|
|
2. Cherchez la section "SSH Keys" ou "Authentification"
|
|
3. Cliquez sur "Add SSH key" ou équivalent
|
|
4. Collez le contenu de `/root/.ssh/id_ed25519.pub`
|
|
5. Sauvegardez
|
|
|
|
### Serveur VPS/Dédié
|
|
|
|
Pour un serveur standard avec accès SSH :
|
|
|
|
```bash
|
|
# Copie standard avec ssh-copy-id
|
|
sudo ssh-copy-id -p 22 user@backup-server.com
|
|
|
|
# Ou méthode manuelle
|
|
ssh -p PORT user@backup-server.com
|
|
mkdir -p ~/.ssh
|
|
chmod 700 ~/.ssh
|
|
echo "VOTRE_CLE_PUBLIQUE" >> ~/.ssh/authorized_keys
|
|
chmod 600 ~/.ssh/authorized_keys
|
|
exit
|
|
```
|
|
|
|
## Configuration avancée
|
|
|
|
### Utiliser une clé SSH spécifique
|
|
|
|
Si vous voulez utiliser une clé dédiée uniquement pour Borgmatic :
|
|
|
|
```bash
|
|
# 1. Générer une clé dédiée
|
|
ssh-keygen -t ed25519 -f /root/.ssh/borgmatic_ed25519 -C "borgmatic-only"
|
|
|
|
# 2. Copier cette clé spécifique
|
|
ssh-copy-id -i /root/.ssh/borgmatic_ed25519.pub -p PORT user@backup-server.com
|
|
|
|
# 3. Configurer dans /etc/borgmatic/.env
|
|
echo 'BORG_RSH="ssh -i /root/.ssh/borgmatic_ed25519"' >> /etc/borgmatic/.env
|
|
```
|
|
|
|
### Config SSH personnalisée
|
|
|
|
Créez `/root/.ssh/config` :
|
|
|
|
```
|
|
Host backup-server
|
|
HostName backup.example.com
|
|
Port 22
|
|
User backupuser
|
|
IdentityFile /root/.ssh/borgmatic_ed25519
|
|
StrictHostKeyChecking accept-new
|
|
```
|
|
|
|
Puis dans votre repository :
|
|
|
|
```yaml
|
|
repositories:
|
|
- path: ssh://backup-server/./backups
|
|
label: serveur
|
|
```
|
|
|
|
## Vérification et troubleshooting
|
|
|
|
### Vérifier que tout fonctionne
|
|
|
|
```bash
|
|
# 1. Test SSH
|
|
ssh -p PORT user@backup-server.com
|
|
# ✅ Doit se connecter SANS demander de mot de passe
|
|
|
|
# 2. Test Borg
|
|
source /etc/borgmatic/.env
|
|
borg list $BORG_REPO
|
|
# ✅ Doit lister les archives SANS demander de mot de passe
|
|
|
|
# 3. Test Borgmatic
|
|
make dry-run
|
|
# ✅ Doit fonctionner SANS demander de mot de passe
|
|
```
|
|
|
|
### Problèmes courants
|
|
|
|
**"Permission denied (publickey)"**
|
|
|
|
```bash
|
|
# Vérifier les permissions de la clé privée
|
|
chmod 600 /root/.ssh/id_ed25519
|
|
|
|
# Vérifier que la clé est bien copiée sur le serveur
|
|
ssh -v -p PORT user@backup-server.com 2>&1 | grep "Offering public key"
|
|
```
|
|
|
|
**"Host key verification failed"**
|
|
|
|
```bash
|
|
# Ajouter le serveur aux known hosts
|
|
ssh-keyscan -p PORT backup-server.com >> /root/.ssh/known_hosts
|
|
```
|
|
|
|
**Borgmatic demande toujours le mot de passe**
|
|
|
|
```bash
|
|
# Vérifier que SSH fonctionne bien sans mot de passe
|
|
ssh -p PORT user@backup-server.com
|
|
|
|
# Vérifier les variables d'environnement
|
|
sudo cat /etc/borgmatic/.env | grep BORG_RSH
|
|
```
|
|
|
|
## Sécurité
|
|
|
|
### Bonnes pratiques
|
|
|
|
1. **Clé dédiée** : Utilisez une clé SSH spécifique pour les backups
|
|
2. **Restrictions** : Limitez la clé aux commandes Borg uniquement (côté serveur)
|
|
3. **Rotation** : Changez les clés régulièrement (annuellement)
|
|
4. **Backup** : Sauvegardez votre clé privée en lieu sûr
|
|
|
|
### Limiter les commandes autorisées (serveur)
|
|
|
|
Sur le serveur de backup, dans `~/.ssh/authorized_keys` :
|
|
|
|
```bash
|
|
command="borg serve --restrict-to-path /path/to/repo",restrict ssh-ed25519 AAAAC3... borgmatic-backup
|
|
```
|
|
|
|
Cela limite la clé SSH à **uniquement** exécuter Borg sur ce chemin spécifique.
|
|
|
|
## Automatisation avec le timer systemd
|
|
|
|
Une fois la clé SSH configurée, le timer systemd fonctionnera automatiquement :
|
|
|
|
```bash
|
|
# Le service systemd utilisera automatiquement la clé SSH de root
|
|
systemctl status borgmatic.timer
|
|
|
|
# Les backups s'exécuteront à 3h du matin sans intervention
|
|
```
|
|
|
|
✅ **Configuration terminée !** Les backups automatiques peuvent maintenant fonctionner sans intervention manuelle.
|