Exécution d’un script Shell sur une Machine Distante Via SSH

By Corentin BURTIN

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.

A lire également :  Comment résoudre l'erreur "Too Many Open Files" sous Linux ?

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éthodeAvantage principalLimitation
Script déjà sur le serveurSimple et rapideDépend du déploiement préalable
Script local via redirectionPas besoin de copier le fichierComplexité en cas d’erreurs
Utilisation de scp + sshContrôle total sur le fichierNécessite deux étapes
Commande unique avec logsPermet la supervisionNe 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 :

A lire également :  Comment activer ou désactiver le son de démarrage sur Mac ?

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 !