Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Autenticar usuários do Junos PyEZ

Os aplicativos Junos PyEZ podem autenticar usuários usando uma senha ou outros mecanismos de autenticação SSH padrão.

Visão geral da autenticação de usuário do Junos PyEZ

O Junos PyEZ permite que você se conecte diretamente e gerencie dispositivos Junos usando uma conexão de console serial, telnet ou uma sessão NETCONF sobre SSH. O Junos PyEZ também oferece suporte à conexão a um dispositivo por meio de uma conexão telnet ou SSH a um servidor de CONSOLE console conectado à porta do dispositivo. Além disso, o Junos PyEZ pode se conectar a um dispositivo por meio de um dispositivo intermediário, como um bastião ou host de salto.

Os dispositivos remotos devem ser capazes de autenticar o usuário usando uma senha ou outros mecanismos de autenticação SSH padrão, dependendo do método de conexão. Quando você gerencia dispositivos Junos por meio de uma conexão SSH, a maneira mais conveniente e segura de acessar um dispositivo é configurar chaves SSH. As chaves SSH permitem que o dispositivo remoto identifique usuários confiáveis.

Você pode realizar operações de dispositivo usando qualquer conta de usuário que tenha acesso ao dispositivo Junos gerenciado. Você pode definir explicitamente o usuário ao criar uma nova instância da jnpr.junos.device.Device classe. Se você não especificar um usuário, o usuário usará como padrão o $USER valor da variável de ambiente.

Para conexões SSH, o Junos PyEZ consulta automaticamente o arquivo de configuração SSH padrão em ~/.ssh/config, se houver. Você também pode incluir ssh_config na lista de Device argumentos para especificar um arquivo de configuração diferente. O Junos PyEZ usa todas as configurações relevantes no arquivo de configuração SSH que não são substituídas pelos argumentos na Device lista de argumentos, como o usuário ou o arquivo de identidade.

Ao usar o SSH para se conectar a um dispositivo, o Junos PyEZ primeiro tenta a autenticação baseada em chave pública SSH e, em seguida, tenta a autenticação baseada em senha. Quando a autenticação baseada em senha é usada, a senha fornecida é usada como a senha do dispositivo. Quando as chaves SSH estão em uso, a senha fornecida é a senha para desbloquear a chave privada. Você não precisará fornecer uma senha se carregar a chave em um agente de chave SSH ou se a chave privada SSH tiver uma senha vazia. No entanto, não recomendamos o uso de chaves privadas SSH com senhas vazias.

Observação:

Obtenha credenciais de maneira segura e apropriada para o seu ambiente. Como prática recomendada, solicite credenciais sempre que executar o script em vez de armazená-las em um formato não criptografado.

As seções a seguir discutem os diferentes métodos de autenticação.

Autentique usuários do Junos PyEZ usando uma senha

Para autenticar um usuário do Junos PyEZ usando uma senha:

  1. Em seu editor favorito, crie um novo arquivo que use a extensão de arquivo .py .

    Este exemplo usa o nome do arquivo junos-pyez-pw.py.

  2. Inclua um código que solicite o nome de host ou o endereço IP ao qual se conectar e o nome de usuário e a senha do dispositivo Junos.
  3. Se o cliente Junos PyEZ se conectar ao dispositivo por meio de uma conexão SSH com um servidor de console, solicite o nome de usuário e a senha do servidor de console.
  4. Se o cliente Junos PyEZ se conectar a uma porta diferente do padrão, solicite o número da porta.
  5. Na lista de argumentos do Device construtor:
    • Defina o host argumento como a variável que contém o nome do host ou o endereço IP do dispositivo remoto.

    • Defina os user argumentos and passwd para as variáveis que contêm as credenciais de login do Junos OS.

    • Se o cliente Junos PyEZ se conectar através de uma conexão SSH a um servidor de console, defina os cs_user argumentos and cs_passwd para as variáveis que contêm as credenciais de login do servidor de console.

    • Se o cliente Junos PyEZ se conectar a uma porta não padrão, defina o port argumento para a variável que contém a porta, quando apropriado.

    • Inclua todos os argumentos adicionais necessários para o método de conexão.

    O exemplo a seguir fornece código de exemplo para cada um dos diferentes métodos de conexão:

    Observação:

    Todas as plataformas que executam o Junos OS têm apenas o usuário raiz configurado por padrão, sem nenhuma senha. Ao usar o Junos PyEZ para configurar inicialmente um dispositivo novo ou zerado por meio de uma conexão de console, use user='root'e omita o passwd parâmetro.

  6. Execute o código do Junos PyEZ.

    O programa solicita o nome do host, o nome de usuário e a senha do Junos OS, o nome de usuário e a senha do servidor do console (quando solicitado) e a porta (quando solicitado). O programa não ecoa a senha na linha de comando.

Autentique usuários do Junos PyEZ usando chaves SSH

Para usar chaves SSH em um aplicativo Junos PyEZ, você deve primeiro gerar as chaves no servidor de gerenciamento de configuração. Em seguida, configure a chave pública em cada dispositivo ao qual o cliente Junos PyEZ se conectará. Os dispositivos podem incluir um dispositivo Junos, um servidor de console ou um bastião ou host de salto. Para usar as chaves, você deve incluir os argumentos apropriados na lista de Device argumentos.

O Junos PyEZ pode utilizar chaves SSH que são carregadas ativamente em um agente de chave SSH, chaves que são geradas no local padrão ou em um local definido pelo usuário e chaves que usam ou renunciam à proteção por senha. Se os Device argumentos não especificarem uma senha ou fizerem referência a um arquivo de chave SSH, o Junos PyEZ primeiro verifica as chaves SSH que estão ativamente carregadas no agente de chaves SSH e, em seguida, verifica as chaves SSH no local padrão. Ao se conectar a um servidor de console, as chaves SSH devem ser protegidas por senha.

As seções a seguir descrevem as etapas para gerar as chaves SSH, configurar as chaves em dispositivos remotos e usar as chaves para se conectar ao dispositivo gerenciado:

Gerar e configurar chaves SSH

Para gerar chaves SSH no servidor de gerenciamento de configuração e configurar a chave pública em dispositivos remotos:

  1. No servidor, gere o par de chaves SSH público e privado para o usuário necessário e forneça as opções necessárias ou desejadas. Por exemplo:
  2. (Opcional) Carregue a chave no agente de chave SSH nativo.
  3. Configure a chave pública sob a conta de usuário apropriada em cada dispositivo ao qual o aplicativo Junos PyEZ se conectará, o que pode incluir dispositivos Junos, um servidor de console ou um bastion ou jumphost.
    • Para configurar a chave pública em um dispositivo Junos, um método é carregar a chave de um arquivo.

    • Para configurar a chave pública em um servidor ou jumphost, você pode usar o ssh-copy comando.

  4. Verifique se a chave funciona usando-a para fazer login no dispositivo.

Chaves SSH de referência em aplicativos Junos PyEZ

Depois de gerar o par de chaves SSH e configurar a chave pública no dispositivo remoto, os aplicativos Junos PyEZ podem usar a chave para se conectar ao dispositivo. Para usar a chave, inclua os argumentos apropriados no Device construtor. Os Device argumentos são determinados por:

  • A localização da chave

  • Se a chave está ativamente carregada em um agente de chave SSH, como ssh-agent

  • Se a chave é protegida por senha

  • Se o arquivo de configuração SSH do usuário já define as configurações para esse host

As seções a seguir descrevem os vários cenários:

Usar um agente de chave SSH com chaves carregadas ativamente

Você pode usar um agente de chave SSH ou agente de autenticação para armazenar chaves privadas com segurança e evitar redigitar repetidamente a senha para chaves protegidas por senha. Um cliente Junos PyEZ pode se conectar a um dispositivo usando chaves SSH que são carregadas ativamente no agente SSH. Por padrão, se os Device argumentos não especificarem uma senha ou fizerem referência a um arquivo de chave SSH, o Junos PyEZ primeiro verifica as chaves SSH que estão ativamente carregadas no agente de chaves SSH e, em seguida, verifica se há chaves SSH no local padrão. Observe que Device pode definir o arquivo de chave SSH explicitamente na lista de argumentos ou por meio de configurações no arquivo de configuração SSH.

Para se conectar a um dispositivo usando chaves SSH que são carregadas ativamente no agente de chave SSH nativo:

  • Para se conectar diretamente a um dispositivo Junos, você precisa fornecer apenas o nome de host ou endereço IP necessário na lista de Device argumentos.

  • Para se conectar a um dispositivo Junos por meio de um bastião ou host de salto, defina host como o nome de host ou endereço IP do dispositivo Junos e inclua o proxy_command argumento que define a conexão por meio do host de salto.

O Device construtor também dá suporte allow_agent ao argumento para fornecer um controle mais preciso sobre quando usar o agente de chave SSH. A Tabela 1 descreve as configurações.

Tabela 1: Device allow_agent Argumento
allow_agent valores Comportamento

None(Padrão)

A conexão SSH usa chaves no agente SSH somente se os Device argumentos não especificarem uma senha ou fizerem referência a um arquivo de chave privada (explicitamente como um argumento ou por meio do arquivo de configuração SSH).

True

A conexão SSH usa chaves carregadas no agente SSH.

False

A conexão SSH não usa chaves do agente SSH.

Por exemplo, suponha que você carregue chaves SSH para um host no agente de chave SSH. Além disso, seu arquivo de configuração SSH contém uma entrada de host que define a IdentityFile opção com o arquivo de chave privada para esse host. Em sua aplicação Junos PyEZ, você cria uma instância e Device define apenas o host argumento. Por padrão, Device usa o arquivo de chave privada definido por IdentityFile. Como os argumentos fazem referência a um arquivo de chave privada, o Device Junos PyEZ não verifica o agente de chave SSH. Se o arquivo de chave privada tiver uma senha, a conexão falhará porque nenhuma senha foi fornecida. Assim, para usar o agente SSH, mas manter a IdentityFile opção no arquivo de configuração SSH, você pode definir allow_agent=True.

Use chaves SSH sem proteção por senha

O Junos PyEZ permite que um cliente se conecte diretamente a um dispositivo Junos usando chaves privadas SSH que não têm proteção por senha. No entanto, não recomendamos o uso de chaves privadas SSH com uma senha vazia. O Junos PyEZ não oferece suporte à conexão com um servidor de console usando chaves privadas SSH com uma senha vazia.

Para se conectar a um dispositivo Junos usando chaves SSH que estão no local padrão e não têm proteção por senha:

  • Na lista de Device argumentos, você precisa fornecer apenas o nome de host ou endereço IP necessário.

    O Junos PyEZ primeiro verifica as chaves SSH que estão carregadas no agente de chaves SSH ativo e, em seguida, verifica as chaves SSH no local padrão.

Para se conectar a um dispositivo Junos usando chaves SSH que não estão no local padrão e não têm proteção por senha:

  • Device Na lista de argumentos, defina o ssh_private_key_file argumento como o caminho da chave privada SSH.

    Observação:

    Se o arquivo de configuração SSH do usuário já especificar o caminho do arquivo de chave privada SSH local para um determinado host, você poderá omitir o ssh_private_key_file argumento na Device lista de argumentos. A inclusão do ssh_private_key_file argumento substitui qualquer valor existente IdentityFile definido para um host no arquivo de configuração SSH do usuário.

Use chaves SSH protegidas por senha

Os clientes Junos PyEZ podem usar chaves SSH protegidas por senha para se conectar diretamente a um dispositivo Junos, a um dispositivo Junos por meio de um bastion ou host de salto ou a um servidor de console conectado ao dispositivo. As seções a seguir descrevem como definir explicitamente os Device argumentos para chaves SSH protegidas por senha. Para usar chaves protegidas por senha carregadas em um agente de chave SSH ativo, consulte Usar um agente de chave SSH com chaves carregadas ativamente.

Conecte-se diretamente a um dispositivo Junos

Para se conectar diretamente a um dispositivo Junos usando uma chave SSH protegida por senha:

  1. Inclua um código que solicite a senha da chave privada SSH e armazene o valor em uma variável.

  2. Na lista de Device argumentos:

    • Defina o passwd argumento para fazer referência à variável que contém a senha do arquivo de chave SSH.

    • Defina o ssh_private_key_file argumento como o caminho da chave privada, se a chave não estiver no local padrão e o arquivo de configuração SSH ainda não definir o caminho do arquivo de chave privada.

Conectar-se por meio de um host de salto

Para se conectar a um dispositivo Junos por meio de um bastion ou jump host usando chaves SSH protegidas por senha para ambos os dispositivos:

  1. Inclua um código que solicite a senha da chave privada SSH para o dispositivo de rede e armazene o valor em uma variável.

  2. Na lista de Device argumentos:

    • Defina o host argumento para o nome de host ou endereço IP do dispositivo Junos.

    • Defina o passwd argumento para fazer referência à variável que contém a senha do arquivo de chave SSH para o dispositivo Junos.

    • Defina o ssh_private_key_file argumento como o caminho da chave privada para o dispositivo Junos, se a chave não estiver no local padrão e o arquivo de configuração SSH ainda não definir o caminho do arquivo de chave privada.

    • Inclua o proxy_command argumento e defina a conexão para o host de salto, incluindo o usuário e o arquivo de identidade, se necessário.

Quando você executa o script, ele solicita as senhas das chaves privadas.

Conectar-se por meio de um servidor de console

Para se conectar a um dispositivo Junos por meio de um servidor de console que usa um arquivo de chave SSH protegido por senha:

  1. Inclua um código que solicite as credenciais de login para o dispositivo Junos e armazene cada valor em uma variável.

  2. Inclua um código que solicite o nome de usuário do servidor de console e a senha da chave privada e armazene cada valor em uma variável.

  3. Na lista de Device argumentos:

    • Defina o host argumento como o nome do host ou endereço IP do servidor de console.

    • Defina os user argumentos and passwd para as variáveis que contêm as credenciais de login do Junos OS.

    • Defina o cs_user argumento como a variável que contém o nome de usuário do servidor de console.

    • Defina o cs_passwd argumento para a variável que contém a senha do arquivo de chave SSH.

    • Defina o ssh_private_key_file argumento como o caminho da chave privada, se a chave não estiver no local padrão e o arquivo de configuração SSH ainda não definir o caminho do arquivo de chave privada.

    • Defina o port argumento como a porta TCP que mapeia para o dispositivo TTY no servidor de console.