Actualiser gnome_accounts.sh
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
# Script de sauvegarde et restauration des comptes et partages réseau GNOME
|
||||
# Auteur: Fontaine Johnny
|
||||
# Version: 1.0
|
||||
# Version: 1.1 - Ajout sauvegarde SSH
|
||||
|
||||
# Couleurs pour l'affichage
|
||||
RED='\033[0;31m'
|
||||
@@ -18,6 +18,7 @@ EVOLUTION_CONFIG_DIR="$HOME/.config/evolution"
|
||||
KEYRING_DIR="$HOME/.local/share/keyrings"
|
||||
NETWORK_CONFIG_DIR="/etc/NetworkManager/system-connections"
|
||||
USER_NETWORK_CONFIG_DIR="$HOME/.config/NetworkManager"
|
||||
SSH_CONFIG_DIR="$HOME/.ssh"
|
||||
|
||||
# Fonction d'affichage avec couleurs
|
||||
print_info() {
|
||||
@@ -155,6 +156,72 @@ backup_accounts_network() {
|
||||
print_warning "Répertoire Evolution non trouvé: $EVOLUTION_CONFIG_DIR"
|
||||
fi
|
||||
|
||||
# Sauvegarder la configuration SSH
|
||||
print_info "Sauvegarde de la configuration SSH..."
|
||||
if [ -d "$SSH_CONFIG_DIR" ]; then
|
||||
SSH_BACKUP="$BACKUP_BASE/ssh"
|
||||
mkdir -p "$SSH_BACKUP"
|
||||
|
||||
print_warning "ATTENTION: Sauvegarde des clés SSH privées!"
|
||||
print_warning "Cette opération sauvegarde vos clés privées SSH (TRÈS SENSIBLE!)"
|
||||
|
||||
# Sauvegarder tous les fichiers SSH
|
||||
cp -r "$SSH_CONFIG_DIR"/* "$SSH_BACKUP/" 2>/dev/null
|
||||
|
||||
# Créer un inventaire des fichiers SSH sauvegardés
|
||||
SSH_INVENTORY="$SSH_BACKUP/ssh-inventory.txt"
|
||||
{
|
||||
echo "=== INVENTAIRE DES FICHIERS SSH SAUVEGARDÉS ==="
|
||||
echo "Date: $(date)"
|
||||
echo "Utilisateur: $USER"
|
||||
echo ""
|
||||
echo "Fichiers sauvegardés:"
|
||||
ls -la "$SSH_BACKUP/" 2>/dev/null | grep -v "ssh-inventory.txt"
|
||||
echo ""
|
||||
echo "⚠ ATTENTION: Clés privées sauvegardées!"
|
||||
echo "⚠ Ne partagez JAMAIS ces fichiers!"
|
||||
echo ""
|
||||
|
||||
# Lister les clés publiques avec leurs empreintes
|
||||
if command -v ssh-keygen &> /dev/null; then
|
||||
echo "=== EMPREINTES DES CLÉS PUBLIQUES ==="
|
||||
find "$SSH_BACKUP" -name "*.pub" | while read -r pubkey; do
|
||||
if [ -f "$pubkey" ]; then
|
||||
keyname=$(basename "$pubkey")
|
||||
echo "Clé: $keyname"
|
||||
ssh-keygen -lf "$pubkey" 2>/dev/null || echo " Erreur lecture empreinte"
|
||||
echo ""
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Analyser le fichier config s'il existe
|
||||
if [ -f "$SSH_BACKUP/config" ]; then
|
||||
echo "=== CONFIGURATION SSH (config) ==="
|
||||
echo "Hosts configurés:"
|
||||
grep -E "^Host " "$SSH_BACKUP/config" 2>/dev/null | sed 's/Host / - /' || echo " Aucun host configuré"
|
||||
echo ""
|
||||
fi
|
||||
} > "$SSH_INVENTORY"
|
||||
|
||||
# Sécuriser les permissions des clés privées sauvegardées
|
||||
find "$SSH_BACKUP" -type f -name "*" ! -name "*.pub" ! -name "config" ! -name "known_hosts*" ! -name "ssh-inventory.txt" -exec chmod 600 {} \; 2>/dev/null
|
||||
find "$SSH_BACKUP" -name "*.pub" -exec chmod 644 {} \; 2>/dev/null
|
||||
[ -f "$SSH_BACKUP/config" ] && chmod 600 "$SSH_BACKUP/config"
|
||||
|
||||
print_success "Configuration SSH sauvegardée"
|
||||
print_warning "Inventaire créé: $SSH_INVENTORY"
|
||||
|
||||
# Compter les éléments sauvegardés
|
||||
ssh_files_count=$(ls -1 "$SSH_BACKUP/" 2>/dev/null | wc -l)
|
||||
private_keys_count=$(find "$SSH_BACKUP" -type f -name "*" ! -name "*.pub" ! -name "config" ! -name "known_hosts*" ! -name "ssh-inventory.txt" | wc -l)
|
||||
public_keys_count=$(find "$SSH_BACKUP" -name "*.pub" | wc -l)
|
||||
|
||||
print_info "SSH sauvegardé: $ssh_files_count fichiers ($private_keys_count clés privées, $public_keys_count clés publiques)"
|
||||
else
|
||||
print_warning "Répertoire SSH non trouvé: $SSH_CONFIG_DIR"
|
||||
fi
|
||||
|
||||
# Sauvegarder les paramètres dconf liés aux comptes
|
||||
print_info "Sauvegarde des paramètres des comptes (dconf)..."
|
||||
DCONF_ACCOUNTS="$BACKUP_BASE/accounts-settings.dconf"
|
||||
@@ -353,6 +420,7 @@ backup_accounts_network() {
|
||||
echo "Éléments sauvegardés:"
|
||||
echo "- Comptes en ligne GNOME (GOA)"
|
||||
echo "- Configuration Evolution (mail)"
|
||||
echo "- Configuration SSH (clés et config)"
|
||||
echo "- Paramètres des comptes"
|
||||
echo "- Connexions réseau"
|
||||
echo "- Paramètres de partage"
|
||||
@@ -360,8 +428,9 @@ backup_accounts_network() {
|
||||
echo "- MOTS DE PASSE (trousseau de clés)"
|
||||
echo "- Mots de passe WiFi"
|
||||
echo ""
|
||||
echo "⚠️ ATTENTION: Fichiers de mots de passe inclus!"
|
||||
echo "⚠️ Protégez absolument cette sauvegarde!"
|
||||
echo "⚠ ATTENTION: Clés SSH privées incluses!"
|
||||
echo "⚠ ATTENTION: Fichiers de mots de passe inclus!"
|
||||
echo "⚠ Protégez absolument cette sauvegarde!"
|
||||
echo "Archive: $(basename "$ARCHIVE_FILE")"
|
||||
} > "$METADATA_FILE"
|
||||
|
||||
@@ -398,6 +467,7 @@ restore_accounts_network() {
|
||||
print_warning "ATTENTION: Cette opération va :"
|
||||
print_warning "- Remplacer vos comptes et paramètres actuels"
|
||||
print_warning "- Restaurer les mots de passe sauvegardés"
|
||||
print_warning "- Restaurer la configuration SSH (clés privées incluses!)"
|
||||
print_warning "- Il est recommandé de fermer Evolution et autres applications"
|
||||
echo ""
|
||||
read -p "Voulez-vous continuer avec la restauration? (y/N): " confirm
|
||||
@@ -426,6 +496,7 @@ restore_accounts_network() {
|
||||
|
||||
[ -d "$GOA_CONFIG_DIR" ] && cp -r "$GOA_CONFIG_DIR" "$SAFETY_BACKUP/goa-1.0-backup" 2>/dev/null
|
||||
[ -d "$EVOLUTION_CONFIG_DIR" ] && cp -r "$EVOLUTION_CONFIG_DIR" "$SAFETY_BACKUP/evolution-backup" 2>/dev/null
|
||||
[ -d "$SSH_CONFIG_DIR" ] && cp -r "$SSH_CONFIG_DIR" "$SAFETY_BACKUP/ssh-backup" 2>/dev/null
|
||||
print_success "Sauvegarde de sécurité créée: $SAFETY_BACKUP"
|
||||
|
||||
# Restaurer GNOME Online Accounts
|
||||
@@ -445,6 +516,63 @@ restore_accounts_network() {
|
||||
print_success "Configuration Evolution restaurée"
|
||||
fi
|
||||
|
||||
# Restaurer la configuration SSH
|
||||
if [ -d "$RESTORE_DIR/ssh" ]; then
|
||||
print_warning "ATTENTION: Restauration de la configuration SSH avec clés privées!"
|
||||
read -p "Restaurer la configuration SSH (clés privées incluses)? (y/N): " restore_ssh
|
||||
if [[ "$restore_ssh" =~ ^[Yy]$ ]]; then
|
||||
print_info "Restauration de la configuration SSH..."
|
||||
|
||||
# Créer le répertoire SSH s'il n'existe pas
|
||||
mkdir -p "$SSH_CONFIG_DIR"
|
||||
chmod 700 "$SSH_CONFIG_DIR"
|
||||
|
||||
# Copier tous les fichiers SSH
|
||||
cp -r "$RESTORE_DIR/ssh"/* "$SSH_CONFIG_DIR/" 2>/dev/null
|
||||
|
||||
# Restaurer les permissions correctes
|
||||
chmod 700 "$SSH_CONFIG_DIR"
|
||||
find "$SSH_CONFIG_DIR" -type f -name "*" ! -name "*.pub" ! -name "config" ! -name "known_hosts*" ! -name "ssh-inventory.txt" -exec chmod 600 {} \; 2>/dev/null
|
||||
find "$SSH_CONFIG_DIR" -name "*.pub" -exec chmod 644 {} \; 2>/dev/null
|
||||
[ -f "$SSH_CONFIG_DIR/config" ] && chmod 600 "$SSH_CONFIG_DIR/config"
|
||||
[ -f "$SSH_CONFIG_DIR/known_hosts" ] && chmod 644 "$SSH_CONFIG_DIR/known_hosts"
|
||||
|
||||
# Supprimer le fichier d'inventaire s'il a été copié
|
||||
[ -f "$SSH_CONFIG_DIR/ssh-inventory.txt" ] && rm -f "$SSH_CONFIG_DIR/ssh-inventory.txt"
|
||||
|
||||
print_success "Configuration SSH restaurée"
|
||||
|
||||
# Afficher les clés restaurées
|
||||
if command -v ssh-keygen &> /dev/null; then
|
||||
print_info "Clés publiques restaurées:"
|
||||
find "$SSH_CONFIG_DIR" -name "*.pub" | while read -r pubkey; do
|
||||
if [ -f "$pubkey" ]; then
|
||||
keyname=$(basename "$pubkey")
|
||||
echo " - $keyname"
|
||||
ssh-keygen -lf "$pubkey" 2>/dev/null | sed 's/^/ /'
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Démarrer ssh-agent si pas déjà fait et ajouter les clés
|
||||
if command -v ssh-add &> /dev/null; then
|
||||
print_info "Tentative d'ajout des clés à l'agent SSH..."
|
||||
if [ -z "$SSH_AUTH_SOCK" ]; then
|
||||
eval $(ssh-agent -s) 2>/dev/null
|
||||
fi
|
||||
|
||||
# Ajouter toutes les clés privées trouvées
|
||||
find "$SSH_CONFIG_DIR" -type f -name "*" ! -name "*.pub" ! -name "config" ! -name "known_hosts*" | while read -r private_key; do
|
||||
if [ -f "$private_key" ]; then
|
||||
ssh-add "$private_key" 2>/dev/null && echo " Clé ajoutée: $(basename "$private_key")" || true
|
||||
fi
|
||||
done
|
||||
fi
|
||||
else
|
||||
print_info "Restauration SSH ignorée"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Restaurer les paramètres des comptes
|
||||
if [ -f "$RESTORE_DIR/accounts-settings.dconf" ] && [ -s "$RESTORE_DIR/accounts-settings.dconf" ]; then
|
||||
print_info "Restauration des paramètres des comptes..."
|
||||
@@ -532,8 +660,10 @@ restore_accounts_network() {
|
||||
print_warning "1. Redémarrez votre session complètement (déconnexion/reconnexion)"
|
||||
print_warning "2. Vérifiez vos comptes dans Paramètres > Comptes en ligne"
|
||||
print_warning "3. Testez vos connexions WiFi"
|
||||
print_warning "4. Relancez Evolution si vous l'utilisez"
|
||||
print_warning "5. Si les mots de passe ne fonctionnent pas, vérifiez les fichiers dans keyring-passwords/"
|
||||
print_warning "4. Testez vos connexions SSH (ssh-add -l pour voir les clés chargées)"
|
||||
print_warning "5. Relancez Evolution si vous l'utilisez"
|
||||
print_warning "6. Si les mots de passe ne fonctionnent pas, vérifiez les fichiers dans keyring-passwords/"
|
||||
print_warning "7. Vérifiez les permissions de vos clés SSH (~/.ssh/)"
|
||||
}
|
||||
|
||||
# Fonction pour lister les sauvegardes
|
||||
@@ -610,6 +740,42 @@ show_accounts_info() {
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Configuration SSH
|
||||
if [ -d "$SSH_CONFIG_DIR" ]; then
|
||||
echo "🔐 Configuration SSH:"
|
||||
|
||||
# Lister les clés SSH
|
||||
echo " Clés SSH disponibles:"
|
||||
find "$SSH_CONFIG_DIR" -name "*.pub" | while read -r pubkey; do
|
||||
if [ -f "$pubkey" ]; then
|
||||
keyname=$(basename "$pubkey" .pub)
|
||||
echo " - $keyname"
|
||||
if command -v ssh-keygen &> /dev/null; then
|
||||
fingerprint=$(ssh-keygen -lf "$pubkey" 2>/dev/null | awk '{print $2}')
|
||||
[ -n "$fingerprint" ] && echo " Empreinte: $fingerprint"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# Analyser le fichier config SSH
|
||||
if [ -f "$SSH_CONFIG_DIR/config" ]; then
|
||||
echo " Hosts configurés dans ~/.ssh/config:"
|
||||
grep -E "^Host " "$SSH_CONFIG_DIR/config" 2>/dev/null | sed 's/Host / - /' || echo " Aucun host configuré"
|
||||
fi
|
||||
|
||||
# Clés chargées dans l'agent SSH
|
||||
if command -v ssh-add &> /dev/null && [ -n "$SSH_AUTH_SOCK" ]; then
|
||||
echo " Clés chargées dans l'agent SSH:"
|
||||
ssh_keys_loaded=$(ssh-add -l 2>/dev/null)
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "$ssh_keys_loaded" | sed 's/^/ /'
|
||||
else
|
||||
echo " Aucune clé chargée ou agent SSH non disponible"
|
||||
fi
|
||||
fi
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Connexions réseau
|
||||
if command -v nmcli &> /dev/null; then
|
||||
echo "🌐 Connexions réseau configurées:"
|
||||
@@ -640,6 +806,7 @@ show_help() {
|
||||
echo "Ce script sauvegarde et restaure :"
|
||||
echo " • Comptes en ligne GNOME (Google, Microsoft, Nextcloud, etc.)"
|
||||
echo " • Configuration Evolution (comptes mail)"
|
||||
echo " • Configuration SSH (clés privées, clés publiques, fichier config)"
|
||||
echo " • Connexions réseau WiFi/Ethernet"
|
||||
echo " • Paramètres de partage réseau"
|
||||
echo " • Signets de fichiers réseau"
|
||||
@@ -655,9 +822,10 @@ show_help() {
|
||||
echo " help, -h Afficher cette aide"
|
||||
echo ""
|
||||
echo "IMPORTANT:"
|
||||
echo " ⚠️ Les mots de passe SONT sauvegardés (non sécurisé)"
|
||||
echo " ⚠️ Protégez absolument vos fichiers de sauvegarde"
|
||||
echo " ⚠️ Ne partagez jamais ces sauvegardes"
|
||||
echo " ⚠ Les mots de passe SONT sauvegardés (non sécurisé)"
|
||||
echo " ⚠ Les clés SSH privées SONT sauvegardées (TRÈS sensible!)"
|
||||
echo " ⚠ Protégez absolument vos fichiers de sauvegarde"
|
||||
echo " ⚠ Ne partagez jamais ces sauvegardes"
|
||||
echo " • Sudo peut être requis pour les connexions système"
|
||||
echo ""
|
||||
echo "Répertoire de sauvegarde: $BACKUP_DIR"
|
||||
@@ -666,13 +834,13 @@ show_help() {
|
||||
# Fonction pour afficher le menu principal
|
||||
show_menu() {
|
||||
echo ""
|
||||
echo "=================================================="
|
||||
echo " Script de gestion des comptes et réseau GNOME"
|
||||
echo "=================================================="
|
||||
echo "=========================================================="
|
||||
echo " Script de gestion des comptes, réseau et SSH GNOME"
|
||||
echo "=========================================================="
|
||||
echo ""
|
||||
echo "Choisissez une action:"
|
||||
echo "1) Sauvegarder les comptes et réseau"
|
||||
echo "2) Restaurer les comptes et réseau"
|
||||
echo "1) Sauvegarder les comptes, réseau et SSH"
|
||||
echo "2) Restaurer les comptes, réseau et SSH"
|
||||
echo "3) Lister les sauvegardes"
|
||||
echo "4) Nettoyer les anciennes sauvegardes"
|
||||
echo "5) Afficher les comptes/connexions actuels"
|
||||
@@ -684,7 +852,7 @@ show_menu() {
|
||||
# Fonction pour demander de continuer
|
||||
ask_continue() {
|
||||
echo ""
|
||||
echo "=================================================="
|
||||
echo "=========================================================="
|
||||
read -p "Appuyez sur Entrée pour revenir au menu principal..."
|
||||
echo ""
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user