L’exécution d’un script shell sur une machine distante via SSH est une compétence clé pour les administrateurs, DevOps et développeurs. Elle permet l’automatisation des tâches, le déploiement d’applications et la supervision à distance de serveurs.
Ce guide structuré vous explique comment procéder de façon fiable et sécurisée.
À retenir :
- Le protocole SSH est essentiel pour exécuter des commandes ou scripts à distance de manière chiffrée et sécurisée.
- Plusieurs méthodes existent pour exécuter un script : direct sur le serveur, redirection depuis la machine locale ou via un pipeline.
- La sécurité doit être renforcée avec des clés SSH, une gestion des accès précise et un audit des actions à distance.
Les fondamentaux de l’exécution distante via SSH
“Maîtriser SSH, c’est poser les fondations d’une administration système moderne.”
Antoine Renaud, architecte systèmes
Comprendre le fonctionnement du protocole SSH
Le protocole SSH établit une connexion sécurisée entre deux machines, en chiffrant les échanges avec des algorithmes comme RSA et AES. Cela permet d’exécuter des scripts shell sur une machine distante via SSH tout en garantissant l’intégrité des données.
Exemple de commande pour une exécution simple :
ssh utilisateur@serveur « bash /chemin/script.sh »
Authentification et sécurisation de la session
Pour renforcer la sécurité, utilisez une clé privée SSH à la place d’un mot de passe :
ssh -i ~/.ssh/id_rsa utilisateur@serveur « commande »
Cela évite les fuites de mots de passe en clair et protège contre les attaques par force brute.
Méthodes pratiques d’exécution de scripts shell
“Le bon script au bon moment sur la bonne machine : voilà l’art du DevOps.” — Laure Meunier, ingénieure cloud
Lancer un script présent sur le serveur distant
Si le script est déjà installé sur la machine distante :
ssh utilisateur@serveur « /chemin/vers/script.sh »
Cette méthode reste la plus directe pour l’exécution d’un script shell sur une machine distante via SSH.
Exécuter un script local sur une machine distante
Utilisez une redirection pour transmettre le script sans le copier :
ssh utilisateur@serveur ‘bash -s’ < script_local.sh
Exécution avancée avec journalisation
Pour capturer les résultats :
ssh utilisateur@serveur « df -h » >> logs.txt
Tableau des méthodes d’exécution de scripts shell via SSH
| Méthode | Avantage principal | Limitation |
|---|---|---|
| Script déjà sur le serveur | Simple et rapide | Dépend du déploiement préalable |
| Script local via redirection | Pas besoin de copier le fichier | Complexité en cas d’erreurs |
Utilisation de scp + ssh | Contrôle total sur le fichier | Nécessite deux étapes |
| Commande unique avec logs | Permet la supervision | Ne gère pas les scripts longs |
Sécuriser l’exécution de script shell à distance
“Une mauvaise configuration SSH est une invitation ouverte.” — Julie Bernard, consultante cybersécurité
Limiter les privilèges
Utilisez sudo de manière contrôlée :
ssh -t utilisateur@serveur « sudo /chemin/commande.sh »
Activez uniquement les privilèges nécessaires pour réduire la surface d’attaque.
Protéger les accès avec les clés et le contrôle d’hôte
Configurez ~/.ssh/authorized_keys avec soin et vérifiez les empreintes de serveur.
Cas d’usages avancés pour les professionnels
“Automatiser, c’est industrialiser l’intelligence d’un système.”
Karim B., DevOps freelance
Automatisation système
Un script shell sur une machine distante via SSH permet :
- Le déploiement de configurations
- Les sauvegardes nocturnes
- Le monitoring système
Déploiement logiciel
Utilisé dans les pipelines CI/CD :
- Test d’intégration continue
- Publication automatique
- Synchronisation inter-serveurs
Supervision de parc machine
Grâce à des scripts lancés en parallèle :
- Vous surveillez des dizaines de serveurs
- Vous centralisez les résultats
- Vous automatisez la maintenance
Et vous, comment exécutez-vous vos scripts shell sur des machines distantes ? Partagez vos pratiques et vos astuces dans les commentaires !