Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

验证 Junos PyEZ 用户

总结 Junos PyEZ 应用程序可以使用标准 SSH 身份验证机制(包括密码和 SSH 密钥)对用户进行身份验证。

Junos PyEZ 用户身份验证概述

Junos PyEZ 使您能够使用串行控制台连接、telnet 或通过 SSH 的 NETCONF 会话直接连接到和管理 Junos 设备。此外,Junos PyEZ 还支持通过 telnet 或 SSH 连接到连接到设备 CONSOLE 端口的控制台服务器。设备必须能够使用密码或其他标准 SSH 身份验证机制对用户进行身份验证,具体取决于连接方法。通过 SSH 连接管理 Junos 设备时,访问设备的最方便、最安全的方式是配置 SSH 密钥。SSH 密钥使远程设备能够识别受信任的用户。

您可以使用有权访问托管 Junos 设备的任何用户帐户执行设备操作。可以在创建类的新 jnpr.junos.device.Device 实例时显式定义用户,或者如果未在参数列表中指定用户,则用户默认为 $USER

对于 SSH 连接,Junos PyEZ 会自动在 ~/.ssh/config 查询默认 SSH 配置文件(如果存在),除非 Device 参数列表包含用于指定其他配置文件的 ssh_config 参数。Junos PyEZ 使用给定连接的 SSH 配置文件中未被参数列表中的参数 Device (如用户或标识文件)覆盖的任何相关设置。

当 Junos PyEZ 客户端使用 SSH 连接到 Junos 设备或连接到设备的控制台服务器时,Junos PyEZ 首先尝试基于 SSH 公钥的身份验证,然后再尝试基于密码的身份验证。使用 SSH 密钥时,提供的密码将用作解锁私钥的密码。使用基于密码的身份验证时,提供的密码将用作设备密码。如果使用基于 SSH 公钥的身份验证,并且 SSH 私钥的密码为空,则不需要密码。但是,不建议使用具有空密码短语的 SSH 私钥。

用户有责任以适合其环境的安全方式获取用户名和密码身份验证凭据。最佳做法是在每次调用脚本期间提示输入这些身份验证凭据,而不是以未加密的格式存储凭据。

使用密码对 Junos PyEZ 用户进行身份验证

要使用密码对 Junos PyEZ 用户进行身份验证,请执行以下操作:

  1. 在您喜欢的编辑器中,创建一个使用 .py 文件扩展名的新文件。

    此示例使用文件名 junos-pyez-pw.py

  2. 包括提示输入要连接的主机名以及 Junos 设备的用户名和密码的代码,并将每个值存储在变量中。
  3. 如果 Junos PyEZ 客户端通过与控制台服务器的 SSH 连接连接到设备,请包含提示输入控制台服务器用户名和密码的代码,并将每个值存储在变量中。
  4. Device 构造函数参数列表中:
    • host 参数设置为包含主机名的变量

    • 将 和 passwd 参数user设置为包含 Junos OS 登录凭据的变量

    • 如果 Junos PyEZ 客户端使用 SSH 通过控制台服务器进行连接,请将 和 cs_user cs_passwd 参数设置为包含控制台服务器登录凭据的变量。

    • 包括连接方法所需的任何其他参数

    下面的示例提供了每种不同连接方法的示例代码:

    注意:

    默认情况下,运行 Junos OS 的所有平台仅配置 root 用户,没有任何密码。使用 Junos PyEZ 通过控制台连接初始配置新设备或零化设备时,请使用 user='root'并省略该 passwd 参数。

  5. 执行 Junos PyEZ 代码,该代码会提示输入主机名、Junos OS 用户名和密码以及控制台服务器用户名和密码(如果请求),并且不会在命令行上回显密码。

使用 SSH 密钥对 Junos PyEZ 用户进行身份验证

要在 Junos PyEZ 应用程序中使用 SSH 密钥,必须先在配置管理服务器上生成密钥,并在 Junos PyEZ 客户端将连接到的每台设备上配置公钥。要直接连接到 Junos 设备,请在该设备上配置密钥。要通过控制台服务器连接到 Junos 设备,请在控制台服务器上配置密钥。若要使用这些键,必须在参数列表中包含相应的参数 Device

Junos PyEZ 可以利用主动加载到 SSH 密钥代理中的 SSH 密钥、在默认位置或用户定义位置生成的密钥,以及使用或放弃密码保护的密钥。直接连接到 Junos 设备时,如果参数未指定密码或 SSH 密钥文件,Junos Device PyEZ 将首先检查 SSH 密钥代理中主动加载的 SSH 密钥,然后在默认位置检查 SSH 密钥。连接到控制台服务器时,仅支持受密码保护的密钥。

以下各节概述了生成 SSH 密钥、在 Junos 设备上配置密钥以及使用这些密钥连接到受管设备的步骤:

生成和配置 SSH 密钥

要在配置管理服务器上生成 SSH 密钥并在 Junos 设备上配置公钥,请执行以下操作:

  1. 在服务器上,为所需用户生成公有和私有 SSH 密钥对,并提供任何必需或所需的选项,例如:
  2. (可选)将密钥加载到本机 SSH 密钥代理中。
  3. 在 Junos PyEZ 应用程序将连接到的每台设备上配置公钥,其中可能包括 Junos 设备或连接到 Junos 设备的控制台服务器。

    在 Junos 设备上的相应用户帐户下配置公钥的一种方法是从文件加载公钥。

  4. 通过使用密钥登录设备来验证密钥是否有效。

在 Junos PyEZ 应用程序中引用 SSH 密钥

在远程设备上生成 SSH 密钥对并配置公钥后,可以通过在构造函数代码中包含 Device 适当的参数来使用该密钥连接到设备。参数 Device 由密钥的位置、密钥是否受密码保护、密钥是否主动加载到 SSH 密钥代理(如 ssh-agent)以及用户的 SSH 配置文件是否已定义该主机的设置来确定。以下各节概述了各种方案:

使用具有主动加载密钥的 SSH 密钥代理对用户进行身份验证

您可以使用 SSH 密钥代理来安全地存储私钥,并避免重复重新键入受密码保护的密钥的密码短语。Junos PyEZ 使客户端能够使用主动加载到 SSH 密钥代理中的 SSH 密钥直接连接到 Junos 设备。连接到 Junos 设备时,如果参数未指定密码或 SSH 密钥文件,Junos Device PyEZ 将首先检查 SSH 密钥代理中主动加载的 SSH 密钥,然后在默认位置检查 SSH 密钥。

要使用主动加载到本机 SSH 密钥代理中的 SSH 密钥直接连接到 Junos 设备,请执行以下操作:

  • Device 参数列表中,您只需提供所需的主机名和任何所需的变量。

使用没有密码保护的 SSH 密钥对用户进行身份验证

Junos PyEZ 使客户端能够使用没有密码保护的 SSH 私钥直接连接到 Junos 设备,但我们不建议使用带有空密码短语的 SSH 私钥。Junos PyEZ 不支持使用带有空密码的 SSH 私钥连接到控制台服务器。

要使用默认位置且没有密码保护的 SSH 密钥连接到 Junos 设备:

  • Device 参数列表中,您只需提供所需的主机名和任何所需的变量。

Junos PyEZ 首先检查加载到任何活动 SSH 密钥代理中的 SSH 密钥,然后检查默认位置中的 SSH 密钥。

要使用不在默认位置且没有密码保护的 SSH 密钥连接到 Junos 设备:

  • Device 参数列表中,将 ssh_private_key_file 参数设置为 SSH 私钥的路径。

    注意:

    如果用户的 SSH 配置文件已指定给定主机的本地 SSH 私钥文件路径,则可以省略 ssh_private_key_file 参数列表中的参数 Device 。包含该 ssh_private_key_file 参数将覆盖在用户的 SSH 配置文件中为主机定义的任何现有 IdentityFile 值。

使用受密码保护的 SSH 密钥文件对用户进行身份验证

Junos PyEZ 客户端可以使用受密码保护的 SSH 密钥文件直接连接到 Junos 设备或连接到连接到该设备的控制台服务器。

要使用受密码保护的 SSH 密钥文件直接连接到 Junos 设备:

  1. 包括提示输入 SSH 私钥密码并将值存储在变量中的代码。
  2. Device 参数列表中,将参数设置为 passwd 引用包含 SSH 密钥文件密码的变量。

    如果密钥不在默认位置,并且文件路径尚未在用户的 SSH 配置文件中定义,请将参数设置为 ssh_private_key_file 私钥的路径。

要使用受密码保护的 SSH 密钥文件通过控制台服务器连接到 Junos 设备:

  1. 包括提示输入 Junos 设备登录凭据的代码,并将每个值存储在变量中。

  2. 包括提示输入控制台服务器用户名和 SSH 私钥密码的代码,并将每个值存储在变量中。

  3. Device 构造函数参数列表中:

    • host 参数设置为控制台服务器主机名或 IP 地址

    • 将 和 passwd 参数user设置为包含 Junos OS 登录凭据的变量

    • cs_user 参数设置为包含控制台服务器用户名的变量

    • cs_passwd 参数设置为包含 SSH 密钥文件密码的变量

    • ssh_private_key_file如果密钥不在默认位置,并且文件路径尚未在用户的 SSH 配置文件中定义,请将参数设置为私钥的路径