Authentifier les utilisateurs Junos PyEZ
RÉSUMÉ Les applications Junos PyEZ peuvent authentifier les utilisateurs à l’aide des mécanismes d’authentification SSH standard, notamment les mots de passe et les clés SSH.
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, telnet ou d’une session NETCONF via SSH. En outre, Junos PyEZ prend également en charge la connexion à l’équipement via une connexion telnet ou SSH à un serveur de console connecté au port de CONSOLE
l’appareil. L’appareil doit pouvoir 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 périphériques Junos via une connexion SSH, le moyen le plus pratique et le plus sûr d’accéder à un périphérique consiste à configurer des clés SSH. Les clés SSH permettent à l’appareil distant d’identifier les utilisateurs de confiance.
Vous pouvez effectuer des opérations sur les périphériques à l’aide de n’importe quel compte d’utilisateur ayant accès au périphérique 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 ou, si vous ne spécifiez pas d’utilisateur dans la liste des paramètres, l’utilisateur utilise $USER
par défaut .
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, sauf si la liste d’arguments Device
inclut l’argument ssh_config
permettant de spécifier un autre fichier de configuration. Junos PyEZ utilise tous les paramètres pertinents dans le fichier de configuration SSH pour la connexion donnée 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 le client Junos PyEZ utilise SSH pour se connecter au périphérique Junos ou à un serveur de console connecté au périphérique, Junos PyEZ tente d’abord l’authentification SSH basée sur une clé publique, puis tente l’authentification par mot de passe. Lorsque des clés SSH sont utilisées, le mot de passe fourni est utilisé comme mot de passe pour déverrouiller la clé privée. Lorsque l’authentification par mot de passe est utilisée, le mot de passe fourni est utilisé comme mot de passe de l’appareil. Si l’authentification par clé publique SSH est utilisée et que la clé privée SSH a une phrase secrète vide, un mot de passe n’est pas nécessaire. Toutefois, les clés privées SSH avec des phrases de passe vides ne sont pas recommandées.
Il est de la responsabilité de l'utilisateur d'obtenir les identifiants d'authentification du nom d'utilisateur et du mot de passe d'une manière sécurisée et adaptée à son environnement. Il est recommandé de demander ces informations d’identification d’authentification lors de chaque appel du script plutôt que de stocker les informations d’identification dans un format non chiffré.
Authentifier les utilisateurs Junos PyEZ à l’aide d’un mot de passe
Pour authentifier un utilisateur Junos PyEZ à l’aide d’un mot de passe :
Authentifier les utilisateurs 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 et configurer la clé publique sur chaque périphérique auquel le client Junos PyEZ se connectera. Pour vous connecter directement au périphérique Junos, configurez la clé sur ce périphérique. Pour vous connecter à un périphérique Junos via un serveur de console, configurez la clé sur le serveur de console. Pour utiliser les clés, vous devez inclure les arguments appropriés dans la Device
liste des arguments.
Junos PyEZ peut utiliser des clés SSH chargées activement dans un agent de clés SSH, des clés générées à l’emplacement par défaut ou défini par l’utilisateur, ainsi que des clés qui utilisent ou renoncent à la protection par mot de passe. Lors d’une connexion directe à un périphérique Junos, si les Device
arguments ne spécifient pas de mot de passe ou de fichier de clé SSH, Junos PyEZ vérifie d’abord les clés SSH qui sont activement chargées dans l’agent de clés SSH, puis recherche les clés SSH à l’emplacement par défaut. Lors de la connexion à un serveur de console, seules les clés protégées par mot de passe sont prises en charge.
Les sections suivantes décrivent les étapes de génération des clés SSH, de configuration des clés sur les équipements Junos et d’utilisation des clés pour se connecter au périphérique 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 les équipements Junos :
Référencer les clés SSH dans les applications Junos PyEZ
Après avoir généré la paire de clés SSH et configuré la clé publique sur le périphérique distant, vous pouvez utiliser la clé pour vous connecter au périphérique en incluant les arguments appropriés dans le Device
code du constructeur. Les Device
arguments sont déterminés par l’emplacement de la clé, si la clé est protégée par un mot de passe, si la clé est activement chargée dans un agent de clé SSH, tel que ssh-agent, et si le fichier de configuration SSH de l’utilisateur définit déjà les paramètres pour cet hôte. Les sections suivantes décrivent les différents scénarios :
- Authentifier l’utilisateur à l’aide d’un agent de clé SSH avec des clés chargées activement
- Authentifier l’utilisateur à l’aide de clés SSH sans protection par mot de passe
- Authentifier l’utilisateur à l’aide de fichiers de clés SSH protégés par mot de passe
Authentifier l’utilisateur à l’aide d’un agent de clé SSH avec des clés chargées activement
Vous pouvez utiliser un agent de clé SSH 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. Junos PyEZ permet à un client de se connecter directement à un équipement Junos à l’aide de clés SSH chargées activement dans un agent de clés SSH. Lors de la connexion à un périphérique Junos, si les Device
arguments ne spécifient pas de mot de passe ou de fichier de clé SSH, Junos PyEZ vérifie d’abord les clés SSH qui sont activement chargées dans l’agent de clés SSH, puis recherche les clés SSH à l’emplacement par défaut.
Pour utiliser des clés SSH chargées activement dans l’agent de clés SSH natif afin de vous connecter directement à un périphérique Junos :
Dans la liste d’arguments
Device
, vous n’avez qu’à fournir le nom d’hôte requis et les variables souhaitées.dev = Device(host='router.example.com')
Authentifier l’utilisateur à l’aide de clés SSH sans protection par mot de passe
Junos PyEZ permet à un client de se connecter directement à un périphérique Junos à l’aide de clés privées SSH sans protection par mot de passe, bien que nous vous déconseillions d’utiliser des clés privées SSH avec une phrase secrète 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 secrète 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 d’arguments
Device
, vous n’avez qu’à fournir le nom d’hôte requis et les variables souhaitées.dev = Device(host='router.example.com')
Junos PyEZ vérifie d’abord les clés SSH chargées dans un 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 des
Device
arguments, définissez l’argumentssh_private_key_file
sur le chemin d’accès de la clé privée SSH.dev = Device(host='router.example.com', ssh_private_key_file='/home/user/.ssh/id_rsa_dc')
Note: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 laDevice
liste des arguments. L’inclusion de l’argumentssh_private_key_file
remplace toute valeur existanteIdentityFile
définie pour un hôte dans le fichier de configuration SSH de l’utilisateur.
Authentifier l’utilisateur à l’aide de fichiers de clés SSH protégés par mot de passe
Les clients Junos PyEZ peuvent utiliser des fichiers de clés SSH protégés par mot de passe pour se connecter directement à un équipement Junos ou à un serveur de console connecté au périphérique.
Pour vous connecter directement à un équipement Junos à l’aide d’un fichier de clé SSH protégé par mot de passe :
Pour vous connecter à un périphérique Junos via un serveur de consoles à l’aide d’un fichier de clé SSH protégé par mot de passe :
-
Incluez du code qui demande les informations d’identification de connexion pour le périphérique Junos et stocke chaque valeur dans une variable.
from jnpr.junos import Device from getpass import getpass junos_username = input('Junos OS username: ') junos_password = getpass('Junos OS password: ')
Incluez du code qui invite à entrer le nom d’utilisateur du serveur de console et le mot de passe de la clé privée SSH et stocke chaque valeur dans une variable.
from jnpr.junos import Device from getpass import getpass junos_username = input('Junos OS username: ') junos_password = getpass('Junos OS password: ') cs_username = input('Console server username: ') key_password = getpass('Password for SSH private key file: ')
Dans la liste des arguments du
Device
constructeur :Définissez l’argument
host
sur le nom d’hôte ou l’adresse IP du serveur de consolesDéfinissez les
user
arguments etpasswd
sur les variables contenant les identifiants de connexion Junos OSDéfinissez l’argument
cs_user
sur la variable contenant le nom d’utilisateur du serveur de consoleDéfinissez l’argument
cs_passwd
sur la variable contenant le mot de passe du fichier de clé SSHDé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 chemin d’accès au fichier n’est pas déjà défini dans le fichier de configuration SSH de l’utilisateur
from jnpr.junos import Device from getpass import getpass junos_username = input('Junos OS username: ') junos_password = getpass('Junos OS password: ') cs_username = input('Console server username: ') key_password = getpass('Password for SSH private key file: ') with Device(host='router.example.com', user=junos_username, passwd=junos_password, cs_user=cs_username, cs_passwd=key_password, ssh_private_key_file='/home/user/.ssh/id_rsa_dc') as dev: print (dev.facts) # ...