đ Guide dâutilisation de xsshend
đ Guide dâutilisation de xsshend
Guide complet pour maßtriser xsshend - Téléversement SSH simple et efficace via CLI
đŻ Vue dâensemble
xsshend est un outil Rust moderne pour le téléversement de fichiers vers multiples serveurs SSH. Interface en ligne de commande simple avec filtrage avancé et suivi en temps réel des transferts.
đ Installation et configuration
Installation via Cargo
cargo install xsshend
Configuration initiale
# Initialisation assistée avec création du fichier hosts.json
xsshend init
# Forcer la réinitialisation si nécessaire
xsshend init --force
PremiĂšre utilisation
# Lister les serveurs disponibles
xsshend list
# Aide générale
xsshend --help
# Aide sur une commande spécifique
xsshend upload --help
âïž Configuration des serveurs
Structure hiérarchique
xsshend organise les serveurs selon une structure Ă 3 niveaux :
Environment/
âââ Region/
â âââ Type/
â â âââ SERVER_NAME_1
â â âââ SERVER_NAME_2
â âââ Type/
âââ Region/
Fichier hosts.json
Le fichier ~/.ssh/hosts.json
contient la configuration :
{
"Production": {
"Region-A": {
"Public": {
"WEB_SERVER_01": {
"alias": "web01@prod-web-01.example.com",
"env": "PROD"
},
"API_SERVER_01": {
"alias": "api01@prod-api-01.example.com",
"env": "PROD"
}
},
"Private": {
"DATABASE_01": {
"alias": "db01@prod-db-01.example.com",
"env": "PROD"
}
}
}
},
"Staging": {
"Region-A": {
"Public": {
"STAGE_WEB_01": {
"alias": "web01@stage-web-01.example.com",
"env": "STAGE"
}
}
}
},
"Development": {
"Local": {
"Services": {
"DEV_DATABASE": {
"alias": "dev@dev-db.local.example.com",
"env": "DEV"
}
}
}
}
}
đź Utilisation CLI
Commandes principales
Initialisation
xsshend init # Configuration assistée
xsshend init --force # Réinitialisation complÚte
Liste des serveurs
xsshend list # Affichage hiérarchique avec filtres CLI
xsshend --list # Forme courte
Téléversement de fichiers
xsshend upload <FILES>... [OPTIONS]
Options de filtrage
Par environnement
xsshend upload config.json --env Production
xsshend upload app.jar --env Staging
xsshend upload debug.log --env Development
Par région
xsshend upload regional-config.json --region Region-A
xsshend upload backup.tar --region Region-B
Par type de serveur
xsshend upload public-config.json --type Public
xsshend upload db-script.sql --type Private
Filtrage combiné
# Environnement + Région
xsshend upload config.json --env Production --region Region-A
# Environnement + Type
xsshend upload app.war --env Production --type Public
# Région + Type
xsshend upload local-config.json --region Region-A --type Private
# Tous les filtres
xsshend upload deploy.sh --env Production --region Region-A --type Public
Gestion des destinations
# Destination par défaut (/tmp/)
xsshend upload file.txt --env Production
# Destination personnalisée
xsshend upload app.war --env Production --dest /opt/tomcat/webapps/
xsshend upload config.json --env Staging --dest /etc/myapp/
xsshend upload logs/ --env Development --dest /var/log/myapp/
Mode simulation (dry-run)
# Simulation complÚte sans transfert réel
xsshend upload deploy.sh --env Production --dry-run
# Vérification des serveurs ciblés
xsshend upload app.jar --env Production --region Region-A --dry-run
# Test avec filtrage complexe
xsshend upload config.json --env Production --type Public --dry-run
đ Interface de progression
Affichage en temps réel
Les transferts montrent une progression détaillée :
đ DĂ©but du tĂ©lĂ©versement: 1 fichier(s) vers 3 serveur(s)
đ Destination: /opt/uploads/
đŻ Serveurs ciblĂ©s:
âą Production:Region-A:Public:WEB_SERVER_01 â web01@prod-web-01.example.com (PROD)
âą Production:Region-A:Public:API_SERVER_01 â api01@prod-api-01.example.com (PROD)
âą Production:Region-A:Private:DATABASE_01 â db01@prod-db-01.example.com (PROD)
đ€ TĂ©lĂ©versement de ./myapp.jar en cours...
web01@prod-web-01... [ââââââââââââââââââââââââââââââââ] 2.3MB/2.3MB â
api01@prod-api-01... [ââââââââââââââââââ ] 1.5MB/2.3MB âł
db01@prod-db-01..... [ââââââââââââââââââââââââââââ ] 2.1MB/2.3MB âł
â
Téléversement terminé avec succÚs!
đ 3 serveur(s) - 0 Ă©chec(s)
Gestion des erreurs
En cas dâerreur, xsshend affiche des dĂ©tails prĂ©cis :
â Ăchec de connexion: WEB_SERVER_02
Erreur: Connection refused (port 22)
Conseil: Vérifier que le serveur est accessible
â
Téléversement partiel terminé
đ 2/3 serveur(s) rĂ©ussis - 1 Ă©chec(s)
đ Gestion des clĂ©s SSH
Découverte automatique
xsshend détecte automatiquement les clés SSH :
- Ed25519 :
~/.ssh/id_ed25519
(priorité 1) - RSA :
~/.ssh/id_rsa
(priorité 2) - ECDSA :
~/.ssh/id_ecdsa
(priorité 3) - DSA :
~/.ssh/id_dsa
(priorité 4)
Intégration ssh-agent
Si aucune clĂ© nâest trouvĂ©e ou accessible, xsshend utilise ssh-agent :
# Vérifier les clés chargées
ssh-add -l
# Ajouter une clé
ssh-add ~/.ssh/id_ed25519
# Démarrer ssh-agent si nécessaire
eval $(ssh-agent)
đ Exemples dâutilisation
DĂ©ploiement dâapplication
# Déploiement complet en production
xsshend upload myapp.war --env Production --dest /opt/tomcat/webapps/
# Mise Ă jour de configuration
xsshend upload application.properties --env Production --dest /etc/myapp/
# Déploiement sur serveurs publics seulement
xsshend upload static-files/ --env Production --type Public --dest /var/www/
Gestion par environnement
# Configuration de développement
xsshend upload dev-config.json --env Development
# Test en staging
xsshend upload app-v2.jar --env Staging --dry-run
# Déploiement production avec validation
xsshend upload production-app.war --env Production --dry-run
xsshend upload production-app.war --env Production # Si OK
Maintenance et logs
# Copie de logs pour analyse
xsshend upload analyze-script.py --env Production --type Private
# Sauvegarde de configuration
xsshend upload backup-script.sh --env Production --region Region-A
# Mise à jour de sécurité
xsshend upload security-patch.sh --env Production --dry-run # Test
xsshend upload security-patch.sh --env Production # Application
Multi-fichiers et répertoires
# Plusieurs fichiers
xsshend upload config.json app.jar deploy.sh --env Production
# Contenu d'un répertoire
xsshend upload static-files/ --env Production --type Public
# Mix fichiers et répertoires
xsshend upload app.war config/ scripts/ --env Staging
đ Commandes de diagnostic
Liste détaillée des serveurs
# Vue complĂšte avec filtres CLI
xsshend list
Sortie exemple :
đ Liste des cibles SSH disponibles:
đ Production (--env Production)
đ Region-A (--region Region-A)
đ Public (--type Public)
đ„ïž WEB_SERVER_01 â web01@prod-web-01.example.com (PROD)
đ„ïž API_SERVER_01 â api01@prod-api-01.example.com (PROD)
đ Private (--type Private)
đïž DATABASE_01 â db01@prod-db-01.example.com (PROD)
đ Staging (--env Staging)
đ Region-A (--region Region-A)
đ Public (--type Public)
đ„ïž STAGE_WEB_01 â web01@stage-web-01.example.com (STAGE)
đ Total: 4 cibles disponibles
đĄ Exemples d'utilisation:
xsshend upload --env Production file.txt
xsshend upload --env Staging --region Region-A file.txt
xsshend upload --region Region-A --type Public file.txt
Validation de configuration
# Test avec dry-run pour valider la configuration
xsshend upload test.txt --env Production --dry-run
# Test sur un serveur spécifique avec SSH manuel
ssh web01@prod-web-01.example.com "echo 'Test connection OK'"
đ ïž Conseils et bonnes pratiques
Organisation des serveurs
- Environnements : Production, Staging, Development, Testing
- RĂ©gions : Region-A, Region-B, US-East, EU-WestâŠ
- Types : Public, Private, Database, Cache, Load-Balancer
Workflow recommandé
- Test : Toujours utiliser
--dry-run
dâabord - Staging : Tester sur environnement de staging
- Production : Déployer par étapes (région par région)
Sécurité
- Utiliser des clés SSH Ed25519 de préférence
- Ăviter les mots de passe, privilĂ©gier ssh-agent
- Valider les permissions des fichiers de configuration
Performance
- Grouper les fichiers pour réduire les connexions SSH
- Utiliser le mode dry-run pour valider avant transfert
- Organiser la configuration pour un filtrage efficace
đ« DĂ©pannage
ProblĂšmes de connexion SSH
# Test manuel de connexion
ssh -v web01@prod-web-01.example.com
# Vérification des clés
ssh-add -l
# Ajout de clé si nécessaire
ssh-add ~/.ssh/id_ed25519
Configuration
# Réinitialiser la configuration
xsshend init --force
# Vérifier les permissions .ssh
ls -la ~/.ssh/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_*
Logs et debug
# Mode verbeux
RUST_LOG=debug xsshend upload file.txt --env Production
# Logs trÚs détaillés
RUST_LOG=trace xsshend upload file.txt --env Production