Autenticar usuarios de Junos PyEZ
RESUMEN Las aplicaciones Junos PyEZ pueden autenticar a los usuarios mediante mecanismos de autenticación SSH estándar, incluidas contraseñas y claves SSH.
Descripción general de la autenticación de usuario de Junos PyEZ
Junos PyEZ le permite conectarse directamente y administrar dispositivos Junos mediante una conexión de consola serie, telnet o una sesión NETCONF a través de SSH. Además, Junos PyEZ también admite la conexión al dispositivo a través de una conexión Telnet o SSH a un servidor de consola conectado al puerto del CONSOLE
dispositivo. El dispositivo debe poder autenticar al usuario mediante una contraseña u otros mecanismos de autenticación SSH estándar, según el método de conexión. Cuando administra dispositivos Junos a través de una conexión SSH, la forma más cómoda y segura de acceder a un dispositivo es configurar claves SSH. Las claves SSH permiten que el dispositivo remoto identifique a los usuarios de confianza.
Puede realizar operaciones de dispositivo con cualquier cuenta de usuario que tenga acceso al dispositivo Junos administrado. Puede definir explícitamente el usuario al crear una nueva instancia de la jnpr.junos.device.Device
clase o, si no especifica un usuario en la lista de parámetros, el usuario predeterminado es $USER
.
Para las conexiones SSH, Junos PyEZ consulta automáticamente el archivo de configuración SSH predeterminado en ~/.ssh/config, si existe, a menos que la lista de Device
argumentos incluya el ssh_config
argumento para especificar un archivo de configuración diferente. Junos PyEZ utiliza cualquier configuración relevante en el archivo de configuración SSH para la conexión dada que no se invalida por los argumentos de la lista de Device
argumentos, como el usuario o el archivo de identidad.
Cuando el cliente de Junos PyEZ utiliza SSH para conectarse al dispositivo Junos o a un servidor de consola conectado al dispositivo, Junos PyEZ primero intenta la autenticación basada en clave pública SSH y, a continuación, intenta la autenticación basada en contraseña. Cuando las claves SSH están en uso, la contraseña proporcionada se utiliza como frase de contraseña para desbloquear la clave privada. Cuando se utiliza la autenticación basada en contraseña, la contraseña proporcionada se utiliza como contraseña del dispositivo. Si se usa la autenticación basada en clave pública SSH y la clave privada SSH tiene una frase de contraseña vacía, no se requiere una contraseña. Sin embargo, no se recomiendan las claves privadas SSH con frases de contraseña vacías.
Es responsabilidad del usuario obtener las credenciales de autenticación de nombre de usuario y contraseña de una manera segura y adecuada para su entorno. Se recomienda solicitar estas credenciales de autenticación durante cada invocación de la secuencia de comandos en lugar de almacenarlas en un formato sin cifrar.
Autenticar usuarios de Junos PyEZ con una contraseña
Para autenticar a un usuario de Junos PyEZ con una contraseña:
Autenticar usuarios de Junos PyEZ mediante claves SSH
Para utilizar claves SSH en una aplicación de Junos PyEZ, primero debe generar las claves en el servidor de administración de configuración y configurar la clave pública en cada dispositivo al que se conectará el cliente de Junos PyEZ. Para conectarse directamente al dispositivo Junos, configure la clave en ese dispositivo. Para conectarse a un dispositivo Junos a través de un servidor de consola, configure la clave en el servidor de consola. Para utilizar las claves, debe incluir los argumentos adecuados en la lista de Device
argumentos.
Junos PyEZ puede utilizar claves SSH que se cargan activamente en un agente de claves SSH, claves que se generan en la ubicación predeterminada o en una ubicación definida por el usuario, y claves que usan o renuncian a la protección con contraseña. Cuando se conecta directamente a un dispositivo Junos, si los argumentos no especifican una contraseña o un archivo de Device
clave SSH, Junos PyEZ comprueba primero las claves SSH que se cargan activamente en el agente de claves SSH y, a continuación, comprueba las claves SSH en la ubicación predeterminada. Cuando se conecta a un servidor de consola, solo se admiten claves protegidas por contraseña.
En las siguientes secciones se describen los pasos para generar las claves SSH, configurar las claves en dispositivos Junos y usar las claves para conectarse al dispositivo administrado:
Generar y configurar claves SSH
Para generar claves SSH en el servidor de administración de configuración y configurar la clave pública en dispositivos Junos:
Claves SSH de referencia en aplicaciones Junos PyEZ
Después de generar el par de claves SSH y configurar la clave pública en el dispositivo remoto, puede utilizar la clave para conectarse al dispositivo incluyendo los argumentos adecuados en el Device
código constructor. Los Device
argumentos vienen determinados por la ubicación de la clave, si la clave está protegida por contraseña, si la clave se carga activamente en un agente de clave SSH, como ssh-agent, y si el archivo de configuración SSH del usuario ya define la configuración para ese host. En las secciones siguientes se describen los distintos escenarios:
- Autenticar al usuario mediante un agente de claves SSH con claves cargadas activamente
- Autenticar al usuario mediante claves SSH sin protección por contraseña
- Autenticar al usuario mediante archivos de clave SSH protegidos por contraseña
Autenticar al usuario mediante un agente de claves SSH con claves cargadas activamente
Puede usar un agente de claves SSH para almacenar de forma segura las claves privadas y evitar volver a escribir repetidamente la frase de contraseña para las claves protegidas por contraseña. Junos PyEZ permite que un cliente se conecte directamente a un dispositivo Junos mediante claves SSH que se cargan activamente en un agente de claves SSH. Al conectarse a un dispositivo Junos, si los argumentos no especifican una contraseña o un archivo de Device
clave SSH, Junos PyEZ comprueba primero las claves SSH que se cargan activamente en el agente de claves SSH y, a continuación, comprueba las claves SSH en la ubicación predeterminada.
Para usar claves SSH que se cargan activamente en el agente de clave SSH nativo para conectarse directamente a un dispositivo Junos:
En la lista de
Device
argumentos, solo necesita proporcionar el nombre de host requerido y las variables deseadas.dev = Device(host='router.example.com')
Autenticar al usuario mediante claves SSH sin protección por contraseña
Junos PyEZ permite que un cliente se conecte directamente a un dispositivo Junos mediante claves privadas SSH que no tienen protección por contraseña, aunque no recomendamos usar claves privadas SSH con una frase de contraseña vacía. Junos PyEZ no admite la conexión a un servidor de consola mediante claves privadas SSH con una frase de contraseña vacía.
Para conectarse a un dispositivo Junos con claves SSH que se encuentran en la ubicación predeterminada y no tienen protección por contraseña:
En la lista de
Device
argumentos, solo necesita proporcionar el nombre de host requerido y las variables deseadas.dev = Device(host='router.example.com')
Junos PyEZ comprueba primero las claves SSH cargadas en cualquier agente de claves SSH activo y, a continuación, comprueba las claves SSH en la ubicación predeterminada.
Para conectarse a un dispositivo Junos con claves SSH que no están en la ubicación predeterminada y no tienen protección por contraseña:
En la
Device
lista de argumentos, establezca elssh_private_key_file
argumento en la ruta de acceso de la clave privada SSH.dev = Device(host='router.example.com', ssh_private_key_file='/home/user/.ssh/id_rsa_dc')
Nota:Si el archivo de configuración SSH del usuario ya especifica la ruta del archivo de clave privada SSH local para un host determinado, puede omitir el
ssh_private_key_file
argumento en la lista deDevice
argumentos. La inclusión delssh_private_key_file
argumento invalida cualquier valor existenteIdentityFile
definido para un host en el archivo de configuración SSH del usuario.
Autenticar al usuario mediante archivos de clave SSH protegidos por contraseña
Los clientes de Junos PyEZ pueden usar archivos de clave SSH protegidos por contraseña para conectarse directamente a un dispositivo Junos o para conectarse a un servidor de consola conectado al dispositivo.
Para conectarse directamente a un dispositivo Junos mediante un archivo de clave SSH protegido por contraseña:
Para conectarse a un dispositivo Junos a través de un servidor de consola mediante un archivo de clave SSH protegido por contraseña:
-
Incluye código que solicite las credenciales de inicio de sesión del dispositivo Junos y almacene cada valor en una variable.
from jnpr.junos import Device from getpass import getpass junos_username = input('Junos OS username: ') junos_password = getpass('Junos OS password: ')
Incluya código que solicite el nombre de usuario del servidor de consola y la contraseña de clave privada SSH y almacene cada valor en una 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: ')
En la lista de argumentos del
Device
constructor:Establezca el
host
argumento en el nombre de host o la dirección IP del servidor de consolaEstablezca los
user
argumentos ypasswd
en las variables que contienen las credenciales de inicio de sesión de Junos OSEstablezca el
cs_user
argumento en la variable que contiene el nombre de usuario del servidor de consolaEstablezca el
cs_passwd
argumento en la variable que contiene la contraseña del archivo de clave SSHEstablezca el
ssh_private_key_file
argumento en la ruta de acceso de la clave privada, si la clave no está en la ubicación predeterminada y la ruta del archivo no está ya definida en el archivo de configuración SSH del usuario
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) # ...