Paramiko – Client SSH pour Python

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction

Dans le cadre des pratiques modernes DevOps et SecOps, l'accès programmatique aux serveurs distants est devenu une nécessité. L'une des méthodes les plus fiables et puissantes pour interagir avec des hôtes distants via Python est la bibliothèque Paramiko. Elle implémente le protocole SSH2, permettant de se connecter à des serveurs, d'exécuter des commandes, de transférer des fichiers et de construire des systèmes automatisés de gestion d'infrastructure.

Dans cet article, nous explorerons tous les aspects du travail avec Paramiko : des concepts de base aux implémentations concrètes. Nous détaillerons les classes, méthodes, fonctions et cas d'usage pratiques dans des projets réels.

Qu'est-ce que Paramiko ?

Paramiko est une implémentation Python du protocole SSH2, créée par Robby Walker. Le nom vient de la combinaison de « parallel » et « miko » (prêtresse dans la culture japonaise). L'objectif principal de la bibliothèque est de fournir un canal de transmission sécurisé entre des hôtes, avec une authentification par mot de passe ou par clé.

Écrite en Python pur, elle est multiplateforme et facile à intégrer dans n'importe quel projet. Paramiko est largement utilisée dans des outils comme Ansible, Fabric et d'autres systèmes d'automatisation.

Fonctionnalités clés et avantages

Implémentation complète du protocole SSH2

Paramiko prend en charge toutes les fonctionnalités principales de SSH2, notamment :

  • Authentification par mot de passe et par clé
  • Exécution de commandes sur des serveurs distants
  • Transfert de fichiers via SFTP
  • Création de tunnels sécurisés

Prise en charge des algorithmes de chiffrement modernes

  • Clés RSA, DSS, ECDSA, Ed25519
  • Chiffrement AES, 3DES, Blowfish
  • Hachage SHA-1, SHA-256, SHA-512

Fonctionnalités supplémentaires

  • Compatibilité avec Python 3.6+
  • Prise en charge des serveurs de rebond (bastion hosts)
  • Possibilité de créer vos propres serveurs SSH
  • Intégration avec les agents SSH
  • Haut niveau de fiabilité et de sécurité

Installation et configuration

Installation standard

pip install paramiko

Installation avec dépendances supplémentaires

pip install paramiko[gssapi]  # Pour Kerberos/GSSAPI
pip install paramiko[invoke]  # Pour l'intégration avec Invoke

Vérification de l'installation

import paramiko
print(paramiko.__version__)

Architecture de la bibliothèque

Paramiko repose sur une architecture modulaire avec une séparation claire des responsabilités entre les composants :

Composants principaux

  • Transport : Couche de transport SSH de bas niveau
  • Channel : Abstraction pour les canaux de transmission de données
  • SSHClient : Interface haut niveau pour les connexions SSH
  • SFTPClient : Client pour la gestion de fichiers via SFTP
  • ServerInterface : Interface pour la création de serveurs SSH

Classes principales et leurs méthodes

SSHClient - l'interface principale

SSHClient est la classe principale pour travailler avec les connexions SSH. Elle fournit une interface haut niveau pour se connecter aux serveurs et exécuter des commandes.

Méthodes principales de SSHClient

Recommendations

Méthode Description Paramètres
connect() Connexion au serveur hostname, port, username, password, pkey, timeout
exec_command() Exécution d'une commande command, bufsize, timeout, get_pty
invoke_shell() Création d'un shell interactif term, width, height, width_pixels, height_pixels
open_sftp() Initialisation d'une session SFTP