Authentifier les utilisateurs de Junos PyEZ

Les applications Junos PyEZ peuvent authentifier les utilisateurs à l’aide d’un mot de passe ou d’autres mécanismes d’authentification SSH standard.

Présentation de l’authentification utilisateur Junos PyEZ

Junos PyEZ vous permet de vous connecter directement aux équipements Junos et de les gérer à l’aide d’une connexion de console série, de Telnet ou d’une session NETCONF sur SSH. Junos PyEZ prend également en charge la connexion à un appareil via une connexion telnet ou SSH à un serveur de console connecté au port de CONSOLE l’équipement. De plus, Junos PyEZ peut se connecter à un équipement par le biais d’un équipement intermédiaire, tel qu’un bastion ou un hôte de saut.

Les appareils distants doivent être en mesure d’authentifier l’utilisateur à l’aide d’un mot de passe ou d’autres mécanismes d’authentification SSH standard, selon la méthode de connexion. Lorsque vous gérez des équipements Junos via une connexion SSH, le moyen le plus pratique et le plus sûr d’accéder à un équipement consiste à configurer les clés SSH. Les clés SSH permettent à l’appareil distant d’identifier les utilisateurs de confiance.

Vous pouvez effectuer des opérations sur l’appareil à l’aide de n’importe quel compte utilisateur ayant accès à l’équipement Junos géré. Vous pouvez définir explicitement l’utilisateur lors de la création d’une nouvelle instance de la jnpr.junos.device.Device classe. Si vous ne spécifiez pas d’utilisateur, l’utilisateur utilise par défaut la valeur de la $USER variable d’environnement.

Pour les connexions SSH, Junos PyEZ interroge automatiquement le fichier de configuration SSH par défaut à l’adresse ~/.ssh/config, s’il en existe un. Vous pouvez également inclure ssh_config dans la liste des Device arguments pour spécifier un fichier de configuration différent. Junos PyEZ utilise tous les paramètres pertinents du fichier de configuration SSH qui ne sont pas remplacés par les arguments de la Device liste d’arguments, tels que l’utilisateur ou le fichier d’identité.

Lorsque SSH est utilisé pour se connecter à un équipement, Junos PyEZ tente d’abord l’authentification SSH basée sur la clé publique, puis tente l’authentification par mot de passe. Lorsque l’authentification par mot de passe est utilisée, le mot de passe fourni est utilisé comme mot de passe de l’appareil. Lorsque des clés SSH sont utilisées, le mot de passe fourni est la phrase de passe pour déverrouiller la clé privée. Vous n’avez pas besoin de fournir de mot de passe si vous chargez la clé dans un agent de clé SSH ou si la clé privée SSH contient une phrase de passe vide. Cependant, nous ne recommandons pas d’utiliser des clés privées SSH avec des phrases de passe vides.

Remarque :

Obtenez vos identifiants de manière sécurisée et adaptée à votre environnement. Il est recommandé de demander des informations d’identification chaque fois que vous exécutez le script au lieu de les stocker dans un format non chiffré.

Les sections suivantes présentent les différentes méthodes d’authentification.

Authentifier les utilisateurs de Junos PyEZ à l’aide d’un mot de passe

Pour authentifier un utilisateur Junos PyEZ à l’aide d’un mot de passe :

  1. Dans votre éditeur préféré, créez un fichier qui utilise l’extension de fichier .py .

    Cet exemple utilise le nom de fichier junos-pyez-pw.py.

  2. Incluez le code qui demande le nom d’hôte ou l’adresse IP à laquelle vous connecter, ainsi que le nom d’utilisateur et le mot de passe de l’équipement Junos.
  3. Si le client Junos PyEZ se connecte à l’équipement via une connexion SSH à un serveur de console, demandez le nom d’utilisateur et le mot de passe du serveur de console.
  4. Si le client Junos PyEZ se connecte à un port différent du port par défaut, demandez le numéro de port.
  5. Dans la liste des arguments constructeur Device :
    • Définissez l’argument host sur la variable contenant le nom d’hôte ou l’adresse IP du périphérique distant.

    • Définissez les user arguments et passwd sur les variables contenant les identifiants de connexion de Junos OS.

    • Si le client Junos PyEZ se connecte via une connexion SSH à un serveur de console, définissez les cs_user arguments et cs_passwd sur les variables contenant les identifiants de connexion du serveur de console.

    • Si le client Junos PyEZ se connecte à un port autre que celui par défaut, définissez l’argument port sur la variable contenant le port, le cas échéant.

    • Incluez tous les arguments supplémentaires requis pour la méthode de connexion.

    L’exemple suivant fournit un exemple de code pour chacune des différentes méthodes de connexion :

    Remarque :

    Toutes les plates-formes exécutant Junos OS n’ont que l’utilisateur root configuré par défaut, sans mot de passe. Lorsque vous utilisez Junos PyEZ pour configurer initialement un nouvel équipement ou un équipement mis à zéro via une connexion de console, utilisez user='root', et omettez le passwd paramètre.

  6. Exécutez le code Junos PyEZ.

    Le programme vous invite à saisir le nom d’hôte, le nom d’utilisateur et le mot de passe de Junos OS, le nom d’utilisateur et le mot de passe du serveur de console (le cas échéant) et le port (le cas échéant). Le programme ne fait pas écho au mot de passe sur la ligne de commande.

Authentifier les utilisateurs de Junos PyEZ à l’aide de clés SSH

Pour utiliser des clés SSH dans une application Junos PyEZ, vous devez d’abord générer les clés sur le serveur de gestion de la configuration. Configurez ensuite la clé publique sur chaque équipement auquel le client Junos PyEZ se connectera. Les équipements peuvent inclure un périphérique Junos, un serveur de console, un bastion ou un hôte de saut. Pour utiliser les clés, vous devez inclure les arguments appropriés dans la liste des Device arguments.

Junos PyEZ peut utiliser des clés SSH qui sont activement chargées dans un agent de clé SSH, des clés générées à l’emplacement par défaut ou à un emplacement défini par l’utilisateur, et des clés qui utilisent ou renoncent à la protection par mot de passe. Si les Device arguments ne spécifient pas de mot de passe ou ne font pas référence à un fichier de clé SSH, Junos PyEZ vérifie d’abord les clés SSH qui sont activement chargées dans l’agent de clé SSH, puis recherche les clés SSH à l’emplacement par défaut. Lors de la connexion à un serveur de console, les clés SSH doivent être protégées par un mot de passe.

Les sections suivantes décrivent les étapes de génération des clés SSH, de configuration des clés sur les appareils distants et d’utilisation des clés pour se connecter à l’équipement géré :

Générer et configurer des clés SSH

Pour générer des clés SSH sur le serveur de gestion de la configuration et configurer la clé publique sur des appareils distants :

  1. Sur le serveur, générez la paire de clés SSH publique et privée pour l’utilisateur requis et fournissez les options requises ou souhaitées. Par exemple :
  2. (Facultatif) Chargez la clé dans l’agent de clé SSH natif.
  3. Configurez la clé publique sous le compte d’utilisateur approprié sur chaque équipement auquel l’application Junos PyEZ se connectera, ce qui peut inclure des appareils Junos, un serveur de console, un bastion ou un jumphost.
    • Pour configurer la clé publique sur un équipement Junos, une méthode consiste à charger la clé à partir d’un fichier.

    • Pour configurer la clé publique sur un serveur ou un jumphost, vous pouvez utiliser la ssh-copy commande.

  4. Vérifiez que la clé fonctionne en utilisant la clé pour vous connecter à l’appareil.

Clés SSH de référence dans les applications Junos PyEZ

Une fois que vous avez généré la paire de clés SSH et configuré la clé publique sur l’équipement distant, les applications Junos PyEZ peuvent utiliser la clé pour se connecter à l’équipement. Pour utiliser la clé, incluez les arguments appropriés dans le Device constructeur. Les Device arguments sont déterminés par :

  • L’emplacement de la clé

  • Si la clé est activement chargée dans un agent de clé SSH, tel que ssh-agent

  • Si la clé est protégée par un mot de passe

  • Si le fichier de configuration SSH de l’utilisateur définit déjà les paramètres de cet hôte

Les sections suivantes présentent les différents scénarios :

Utilisation d’un agent de clé SSH avec des clés chargées activement

Vous pouvez utiliser un agent de clé SSH ou un agent d’authentification pour stocker les clés privées en toute sécurité et éviter de retaper à plusieurs reprises la phrase secrète des clés protégées par mot de passe. Un client Junos PyEZ peut se connecter à un appareil à l’aide de clés SSH qui sont activement chargées dans l’agent SSH. Par défaut, si les Device arguments ne spécifient pas de mot de passe ou ne font pas référence à un fichier de clé SSH, Junos PyEZ vérifie d’abord les clés SSH qui sont activement chargées dans l’agent de clé SSH, puis recherche les clés SSH à l’emplacement par défaut. Notez que Device peut définir le fichier de clé SSH explicitement dans la liste d’arguments ou via les paramètres du fichier de configuration SSH.

Pour vous connecter à un appareil à l’aide de clés SSH activement chargées dans l’agent de clé SSH natif :

  • Pour vous connecter directement à un équipement Junos, il vous suffit de renseigner le nom d’hôte ou l’adresse IP requis dans la liste d’arguments Device .

  • Pour vous connecter à un équipement Junos par le biais d’un bastion ou d’un hôte de saut, définissez host le nom d’hôte ou l’adresse IP du périphérique Junos et incluez l’argument proxy_command définissant la connexion via l’hôte de saut.

Le Device constructeur prend également en charge l’argument allow_agent pour fournir un contrôle plus précis sur le moment d’utiliser l’agent de clé SSH. Le Tableau 1 présente les paramètres.

Tableau 1 : Device allow_agent Argumentation
allow_agent valeurs Comportement

None(Par défaut)

La connexion SSH utilise des clés dans l’agent SSH uniquement si les Device arguments ne spécifient pas de mot de passe ou ne font pas référence à un fichier de clé privée (soit explicitement en tant qu’argument, soit via le fichier de configuration SSH).

True

La connexion SSH utilise des clés chargées dans l’agent SSH.

False

La connexion SSH n’utilise pas les clés de l’agent SSH.

Par exemple, supposons que vous chargez des clés SSH pour un hôte dans l’agent de clé SSH. De plus, votre fichier de configuration SSH contient une entrée d’hôte qui définit l’option IdentityFile avec le fichier de clé privée pour cet hôte. Dans votre application Junos PyEZ, vous créez une instance de Device et définissez uniquement l’argument host . Par défaut, Device utilise le fichier de clé privée défini par IdentityFile. Étant donné que les Device arguments font référence à un fichier de clé privée, Junos PyEZ ne vérifie pas l’agent de clé SSH. Si le fichier de clé privée contient une phrase secrète, la connexion échoue car aucun mot de passe n’est fourni. Ainsi, pour utiliser l’agent SSH tout en conservant l’option IdentityFile dans le fichier de configuration SSH, vous pouvez définir allow_agent=True.

Utiliser des clés SSH sans protection par mot de passe

Junos PyEZ permet à un client de se connecter directement à un équipement Junos à l’aide de clés privées SSH qui ne sont pas protégées par mot de passe. Cependant, nous vous déconseillons d’utiliser des clés privées SSH avec une phrase de passe vide. Junos PyEZ ne prend pas en charge la connexion à un serveur de console à l’aide de clés privées SSH avec une phrase de passe vide.

Pour vous connecter à un équipement Junos à l’aide de clés SSH qui se trouvent à l’emplacement par défaut et qui ne sont pas protégées par mot de passe :

  • Dans la liste des Device arguments, vous devez uniquement fournir le nom d’hôte ou l’adresse IP requis.

    Junos PyEZ vérifie d’abord les clés SSH chargées dans l’agent de clé SSH actif, puis vérifie les clés SSH à l’emplacement par défaut.

Pour vous connecter à un équipement Junos à l’aide de clés SSH qui ne se trouvent pas à l’emplacement par défaut et qui ne sont pas protégées par mot de passe :

  • Dans la liste d’arguments Device , définissez l’argument ssh_private_key_file sur le chemin de la clé privée SSH.

    Remarque :

    Si le fichier de configuration SSH de l’utilisateur spécifie déjà le chemin d’accès au fichier de clé privée SSH local pour un hôte donné, vous pouvez omettre l’argument ssh_private_key_file dans la liste des Device arguments. L’inclusion de l’argument ssh_private_key_file remplace toute valeur existante IdentityFile définie pour un hôte dans le fichier de configuration SSH de l’utilisateur.

Utilisez des clés SSH protégées par mot de passe

Les clients Junos PyEZ peuvent utiliser des clés SSH protégées par mot de passe pour se connecter directement à un équipement Junos, à un équipement Junos par le biais d’un bastion ou d’un hôte de saut, ou à un serveur de console connecté à l’équipement. Les sections suivantes expliquent comment définir explicitement les Device arguments en faveur des clés SSH protégées par mot de passe. Pour utiliser à la place des clés protégées par mot de passe chargées dans un agent de clé SSH actif, consultez Utiliser un agent de clé SSH avec des clés chargées activement.

Connectez-vous directement à un équipement Junos

Pour vous connecter directement à un équipement Junos à l’aide d’une clé SSH protégée par mot de passe :

  1. Incluez du code qui demande le mot de passe de la clé privée SSH et stocke la valeur dans une variable.

  2. Dans la liste des Device arguments :

    • Définissez l’argument passwd pour référencer la variable contenant la phrase secrète du fichier de clé SSH.

    • Définissez l’argument ssh_private_key_file sur le chemin de la clé privée, si la clé n’est pas à l’emplacement par défaut et que le fichier de configuration SSH ne définit pas déjà le chemin du fichier de clé privée.

Se connecter via un hôte de Jump

Pour vous connecter à un équipement Junos par le biais d’un bastion ou d’un jump host à l’aide de clés SSH protégées par mot de passe pour les deux équipements :

  1. Incluez le code qui demande le mot de passe de la clé privée SSH pour le périphérique réseau et stocke la valeur dans une variable.

  2. Dans la liste des Device arguments :

    • Définissez l’argument host sur le nom d’hôte ou l’adresse IP de l’appareil Junos.

    • Définissez l’argument passwd pour référencer la variable contenant la phrase de passe du fichier de clé SSH pour le périphérique Junos.

    • Définissez l’argument ssh_private_key_file sur le chemin de la clé privée de l’équipement Junos, si la clé ne se trouve pas à l’emplacement par défaut et si le fichier de configuration SSH ne définit pas déjà le chemin d’accès au fichier de clé privée.

    • Incluez l’argument proxy_command et définissez la connexion pour l’hôte de saut, y compris le fichier d’utilisateur et d’identité, si nécessaire.

Lorsque vous exécutez le script, il vous invite à saisir les phrases de passe des clés privées.

Connectez-vous via un serveur de console

Pour vous connecter à un équipement Junos via un serveur de console qui utilise un fichier de clé SSH protégé par mot de passe :

  1. Incluez du code qui demande les identifiants de connexion pour l’équipement Junos et stocke chaque valeur dans une variable.

  2. Inclut le code qui demande le nom d’utilisateur et le mot de passe de la clé privée du serveur de console et stocke chaque valeur dans une variable.

  3. Dans la liste des Device arguments :

    • Définissez l’argument host sur le nom d’hôte ou l’adresse IP du serveur de console.

    • Définissez les user arguments et passwd sur les variables contenant les identifiants de connexion de Junos OS.

    • Définissez l’argument cs_user sur la variable contenant le nom d’utilisateur du serveur de console.

    • Définissez l’argument cs_passwd sur la variable contenant la phrase secrète du fichier de clé SSH.

    • Définissez l’argument ssh_private_key_file sur le chemin de la clé privée, si la clé n’est pas à l’emplacement par défaut et que le fichier de configuration SSH ne définit pas déjà le chemin du fichier de clé privée.

    • Définissez l’argument port sur le port TCP qui correspond au périphérique TTY sur le serveur de console.