Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Autenticar a los usuarios de Junos PyEZ

Las aplicaciones de Junos PyEZ pueden autenticar a los usuarios mediante una contraseña u otros mecanismos de autenticación SSH estándar.

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 de NETCONF a través de SSH. Junos PyEZ también admite la conexión a un dispositivo a través de una conexión Telnet o SSH a un servidor de consola que está conectado al puerto del CONSOLE dispositivo. Además, Junos PyEZ puede conectarse a un dispositivo a través de un dispositivo intermedio, como un bastión o un host de salto.

Los dispositivos remotos deben ser capaces de 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 conveniente 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 de Junos administrado. Puede definir explícitamente el usuario al crear una nueva instancia de la jnpr.junos.device.Device clase. Si no especifica un usuario, el valor predeterminado del usuario es el valor de la $USER variable de entorno.

Para conexiones SSH, Junos PyEZ consulta automáticamente el archivo de configuración SSH predeterminado en ~/.ssh/config, si existe. También puede incluir ssh_config en la lista de Device argumentos para especificar un archivo de configuración diferente. Junos PyEZ utiliza cualquier configuración relevante en el archivo de configuración SSH que no se anula por los argumentos en la lista de Device argumentos, como el usuario o el archivo de identidad.

Cuando usa SSH para conectarse a un dispositivo, Junos PyEZ primero prueba la autenticación basada en clave pública SSH y, luego, prueba la autenticación basada en contraseña. Cuando se utiliza la autenticación basada en contraseña, la contraseña proporcionada se utiliza como contraseña del dispositivo. Cuando se utilizan claves SSH, la contraseña proporcionada es la frase de contraseña para desbloquear la clave privada. No es necesario proporcionar una contraseña si carga la clave en un agente de claves SSH o si la clave privada SSH tiene una frase de contraseña vacía. Sin embargo, no recomendamos usar claves privadas SSH con frases de contraseña vacías.

Nota:

Obtenga credenciales de una manera segura y adecuada para su entorno. Como práctica recomendada, solicite credenciales cada vez que ejecute el script en lugar de almacenarlas en un formato sin cifrar.

En las siguientes secciones se describen los distintos métodos de autenticación.

Autenticar a los usuarios de Junos PyEZ mediante una contraseña

Para autenticar a un usuario de Junos PyEZ con una contraseña:

  1. En su editor favorito, cree un nuevo archivo que use la extensión de archivo .py .

    En este ejemplo se utiliza el nombre de archivo junos-pyez-pw.py.

  2. Incluya un código que solicite el nombre de host o la dirección IP a los que conectarse, y el nombre de usuario y la contraseña del dispositivo Junos.
  3. Si el cliente de Junos PyEZ se conecta al dispositivo a través de una conexión SSH a un servidor de consola, solicite el nombre de usuario y la contraseña del servidor de consola.
  4. Si el cliente de Junos PyEZ se conecta a un puerto diferente del predeterminado, solicite el número de puerto.
  5. En la lista de argumentos del Device constructor:
    • Establezca el host argumento en la variable que contiene el nombre de host o la dirección IP del dispositivo remoto.

    • Establezca los user argumentos y passwd en las variables que contienen las credenciales de inicio de sesión de Junos OS.

    • Si el cliente de Junos PyEZ se conecta a través de una conexión SSH a un servidor de consola, establezca los cs_user argumentos y cs_passwd en las variables que contienen las credenciales de inicio de sesión del servidor de consola.

    • Si el cliente de Junos PyEZ se conecta a un puerto no predeterminado, establezca el port argumento en la variable que contiene el puerto, cuando corresponda.

    • Incluya los argumentos adicionales necesarios para el método de conexión.

    En el siguiente ejemplo, se proporciona código de ejemplo para cada uno de los distintos métodos de conexión:

    Nota:

    Todas las plataformas que ejecutan Junos OS tienen configurado solo el usuario raíz de forma predeterminada, sin ninguna contraseña. Cuando utilice Junos PyEZ para configurar inicialmente un dispositivo nuevo o puesto a cero a través de una conexión de consola, use user='root'y omita el passwd parámetro.

  6. Ejecute el código de Junos PyEZ.

    El programa solicita el nombre de host, el nombre de usuario y la contraseña de Junos OS, el nombre de usuario y la contraseña del servidor de la consola (cuando se soliciten) y el puerto (cuando se solicite). El programa no se hace eco de la contraseña en la línea de comandos.

Autenticar a usuarios de Junos PyEZ mediante claves SSH

Para usar claves SSH en una aplicación Junos PyEZ, primero debe generar las claves en el servidor de administración de configuración. Luego, configure la clave pública en cada dispositivo al que se conectará el cliente de Junos PyEZ. Los dispositivos pueden incluir un dispositivo de Junos, un servidor de consola o un bastión o un host de salto. 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. Si los Device argumentos no especifican una contraseña ni hacen referencia a un archivo de clave SSH, Junos PyEZ comprueba primero las claves SSH que se cargan activamente en el agente de claves SSH y, luego, comprueba si hay claves SSH en la ubicación predeterminada. Cuando se conecte a un servidor de consola, las claves SSH deben estar protegidas con contraseña.

En las siguientes secciones, se describen los pasos para generar las claves SSH, configurar las claves en dispositivos remotos y usar las claves para conectarse al dispositivo administrado:

Genere y configure claves SSH

Para generar claves SSH en el servidor de administración de configuración y configurar la clave pública en dispositivos remotos:

  1. En el servidor, genere el par de claves SSH público y privado para el usuario requerido y proporcione las opciones requeridas o deseadas. Por ejemplo:
  2. (Opcional) Cargue la clave en el agente de claves SSH nativo.
  3. Configure la clave pública con la cuenta de usuario adecuada en cada dispositivo al que se conectará la aplicación Junos PyEZ, lo que podría incluir dispositivos Junos, un servidor de consola o un bastión o jumphost.
    • Para configurar la clave pública en un dispositivo Junos, un método es cargar la clave desde un archivo.

    • Para configurar la clave pública en un servidor o jumphost, puede utilizar el ssh-copy comando.

  4. Compruebe que la clave funciona con la clave para iniciar sesión en el dispositivo.

Claves SSH de referencia en aplicaciones PyEZ de Junos

Después de generar el par de claves SSH y configurar la clave pública en el dispositivo remoto, las aplicaciones de Junos PyEZ pueden usar la clave para conectarse al dispositivo. Para usar la clave, incluya los argumentos adecuados en el Device constructor. Los Device argumentos vienen determinados por:

  • La ubicación de la llave

  • Si la clave está cargada activamente en un agente de claves SSH, como ssh-agent

  • Si la clave está protegida por contraseña

  • Si el archivo de configuración SSH del usuario ya define la configuración para ese host

En las siguientes secciones se describen los distintos escenarios:

Uso de un agente de claves SSH con claves cargadas activamente

Puede usar un agente de claves SSH, o un agente de autenticación, para almacenar de forma segura las claves privadas y evitar volver a escribir repetidamente la frase de contraseña para las claves protegidas con contraseña. Un cliente de Junos PyEZ puede conectarse a un dispositivo mediante claves SSH que se cargan activamente en el agente SSH. De forma predeterminada, si los Device argumentos no especifican una contraseña o hacen referencia a un archivo de clave SSH, Junos PyEZ comprueba primero las claves SSH que están cargadas activamente en el agente de claves SSH y, luego, comprueba si hay claves SSH en la ubicación predeterminada. Tenga en cuenta que Device puede establecer el archivo de clave SSH explícitamente en la lista de argumentos o a través de la configuración en el archivo de configuración SSH.

Para conectarse a un dispositivo mediante claves SSH que se cargan activamente en el agente de claves SSH nativo:

  • Para conectarse directamente a un dispositivo Junos, solo debe proporcionar el nombre de host o la dirección IP necesarios en la lista de Device argumentos.

  • Para conectarse a un dispositivo Junos mediante un bastión o un host de salto, establezca host el nombre de host o la dirección IP del dispositivo Junos e incluya el proxy_command argumento que define la conexión mediante el host de salto.

El Device constructor también admite el argumento para proporcionar un allow_agent control más preciso sobre cuándo usar el agente de claves SSH. En la Tabla 1 se describen los ajustes.

Tabla 1: Device allow_agent Argumento
Valores allow_agent Comportamiento

None(Predeterminado)

La conexión SSH utiliza claves en el agente SSH solo si los Device argumentos no especifican una contraseña o hacen referencia a un archivo de clave privada (ya sea explícitamente como argumento o a través del archivo de configuración SSH).

True

La conexión SSH utiliza claves cargadas en el agente SSH.

False

La conexión SSH no utiliza claves del agente SSH.

Por ejemplo, suponga que carga claves SSH para un host en el agente de claves SSH. Además, el archivo de configuración SSH contiene una entrada de host que define la opción con el IdentityFile archivo de clave privada para ese host. En su aplicación Junos PyEZ, puede crear una instancia de Device y definir solo el host argumento. De forma predeterminada, Device utiliza el archivo de clave privada definido por IdentityFile. Dado que los argumentos hacen referencia a un archivo de Device clave privada, Junos PyEZ no comprueba el agente de clave SSH. Si el archivo de clave privada tiene una frase de contraseña, se produce un error en la conexión porque no se proporciona ninguna contraseña. Por lo tanto, para utilizar el agente SSH pero conservar la IdentityFile opción en el archivo de configuración SSH, puede establecer allow_agent=True.

Usar claves SSH sin protección de contraseña

Junos PyEZ permite que un cliente se conecte directamente a un dispositivo Junos mediante claves privadas SSH que no tienen protección con contraseña. Sin embargo, 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 con contraseña:

  • En la lista de Device argumentos, solo debe proporcionar el nombre de host o la dirección IP necesarios.

    Junos PyEZ comprueba primero las claves SSH que se cargan en el agente de claves SSH activo y, luego, 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 con contraseña:

  • En la Device lista de argumentos, establezca el ssh_private_key_file argumento en la ruta de acceso de la clave privada SSH.

    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 de Device argumentos. Incluir el ssh_private_key_file argumento anula cualquier valor existente IdentityFile definido para un host en el archivo de configuración SSH del usuario.

Utilice claves SSH protegidas por contraseña

Los clientes de Junos PyEZ pueden usar claves SSH protegidas con contraseña para conectarse directamente a un dispositivo Junos, a un dispositivo Junos a través de un bastión o un host de salto, o a un servidor de consola conectado al dispositivo. En las siguientes secciones se describe cómo definir explícitamente los argumentos para las Device claves SSH protegidas con contraseña. Para usar en su lugar claves protegidas por contraseña cargadas en un agente de claves SSH activo, consulte Uso de un agente de claves SSH con claves cargadas activamente.

Conectarse directamente a un dispositivo de Junos

Para conectarse directamente a un dispositivo Junos con una clave SSH protegida con contraseña:

  1. Incluye código que solicita la contraseña de clave privada SSH y almacena el valor en una variable.

  2. En la lista de Device argumentos:

    • Establezca el passwd argumento para hacer referencia a la variable que contiene la frase de contraseña del archivo de clave SSH.

    • Establezca 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 el archivo de configuración SSH aún no define la ruta del archivo de clave privada.

Conéctese a través de un host de Jump

Para conectarse a un dispositivo Junos a través de un bastión o un host de salto con claves SSH protegidas por contraseña para ambos dispositivos:

  1. Incluye un código que solicite la contraseña de clave privada SSH para el dispositivo de red y almacene el valor en una variable.

  2. En la lista de Device argumentos:

    • Establezca el host argumento en el nombre de host o la dirección IP del dispositivo de Junos.

    • Establezca el passwd argumento para hacer referencia a la variable que contiene la frase de contraseña del archivo de clave SSH para el dispositivo Junos.

    • Establezca el ssh_private_key_file argumento en la ruta de la clave privada para el dispositivo Junos si la clave no está en la ubicación predeterminada y el archivo de configuración SSH aún no define la ruta del archivo de clave privada.

    • Incluya el proxy_command argumento y defina la conexión para el host de salto, incluido el usuario y el archivo de identidad, si es necesario.

Cuando ejecute el script, el script solicitará las frases de contraseña de las claves privadas.

Conexión a través de un servidor de consola

Para conectarse a un dispositivo Junos a través de un servidor de consola que utilice un archivo de clave SSH protegido con contraseña:

  1. Incluye un código que solicite las credenciales de inicio de sesión para el dispositivo Junos y almacene cada valor en una variable.

  2. Incluye código que solicite el nombre de usuario del servidor de la consola y la contraseña de la clave privada y almacene cada valor en una variable.

  3. En la lista de Device argumentos:

    • Establezca el host argumento en el nombre de host o la dirección IP del servidor de consola.

    • Establezca los user argumentos y passwd en las variables que contienen las credenciales de inicio de sesión de Junos OS.

    • Establezca el cs_user argumento en la variable que contiene el nombre de usuario del servidor de consola.

    • Establezca el cs_passwd argumento en la variable que contiene la frase de contraseña del archivo de clave SSH.

    • Establezca 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 el archivo de configuración SSH aún no define la ruta del archivo de clave privada.

    • Establezca el port argumento en el puerto TCP que se asigna al dispositivo TTY en el servidor de la consola.