Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

如何对 Junos OS 用户的 Salt 进行身份验证

Salt for Junos OS 用户身份验证概述

当您使用 Salt 管理运行 Junos OS 的设备时,Junos 代理工作节点将使用 ZeroMQ 事件总线连接到 Salt 主服务器,并使用瞻博网络 Junos PyEZ 库通过 SSH 与运行 Junos OS 的设备建立 NETCONF 会话。受管设备必须能够使用密码或其他标准 SSH 身份验证机制对 Salt 用户进行身份验证,具体取决于连接方法。使用 Salt 管理运行 Junos OS 的设备时,最方便、最安全的访问方式是配置 SSH 密钥,这样远程设备就可以识别受信任的用户。或者,您可以在给定设备的代理配置文件中提供用户名和密码身份验证凭据。

要使用 Salt 连接和管理运行 Junos OS 的设备,请在 Salt 主机上的支柱文件中的 proxy 密钥下为设备定义必要的连接和身份验证信息。指定 proxytype: junos时,可以在支柱数据中定义许多可以在 Junos PyEZ Device() 构造函数中指定的连接和身份验证参数。

以下示例支柱文件显示了在指定 proxytype: junos时可以在密钥下proxy定义的常规连接和身份验证参数。参数概述如表 1 所示。

表 1:Junos 代理参数

参数

描述

host: hostname

运行 Junos OS 的设备的主机名或 IP 地址。

password: secret

用户的密码或用户的 SSH 私钥文件,用于向运行 Junos OS 的设备进行身份验证。

port: port

要在其端口上与运行 Junos OS 的设备建立连接。

proxytype: junos

指定 Salt 应使用 Junos 代理模块与运行 Junos OS 的设备进行连接。

ssh_config: file-path

代理工作节点服务器上 Salt 用户的 SSH 配置文件的路径。如果SSH配置文件在默认路径中,则可以省略该参数。

ssh_private_key_file: file-path

代理工作节点服务器上 Salt 用户的 SSH 私钥文件的路径,Junos 代理使用该文件向运行 Junos OS 的设备进行身份验证。如果用户的 SSH 密钥文件在默认路径中,或者该路径已在 SSH 配置文件中定义,则可以省略该参数。

username: user

用于向运行 Junos OS 的设备进行身份验证的用户名,并在其 Junos OS 帐户权限下执行 Salt作。

Salt 可以使用有权访问运行 Junos OS 的托管设备的任何用户帐户执行设备作。您可以通过在运行 Junos OS 的给定设备的代理配置中包含 username 参数来显式指定用户。您还可以在 SSH 配置文件中指定用户。如果未指定用户,则默认为当前用户。

通过 Junos PyEZ 的 Salt 连接会自动查询用户的默认 SSH 配置文件(如果存在),除非该设备的代理配置包含ssh_config用于指定其他配置文件的参数。Salt 在给定连接的 SSH 配置文件中使用任何相关设置,这些设置不会被该设备的代理配置中定义的参数(如用户或身份文件)覆盖。

Junos 代理会先尝试使用基于 SSH 公钥的身份验证,然后再尝试基于密码的身份验证。Junos 代理检查在 SSH 密钥代理中主动加载的 SSH 密钥,然后检查默认位置的 SSH 密钥。使用 SSH 密钥时,提供的密码将用作解锁私钥的密码。使用基于密码的身份验证时,提供的密码将用作设备密码。如果正在使用基于 SSH 公钥的身份验证,并且 SSH 私钥的密码短语为空,则不需要密码。但是,我们不建议使用密码短语为空的 SSH 私钥。

在 Salt 主服务器上,支柱顶部文件将代理 ID 映射到包含设备代理配置的支柱文件。

为运行 Junos OS 的设备启动 Junos 代理工作节点进程并授权 Salt 主机上的密钥时,它将使用配置的身份验证方法进行连接。

有关配置 Salt 服务器的详细信息,请参阅 如何安装适用于 Junos OS 的 Salt

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

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

  1. 在运行 Junos OS 的设备上,使用将用于连接到设备的密码配置用户帐户,然后提交配置。例如:
  2. 在 Salt 主机上,在包含设备代理配置的支柱文件中,将和 password 参数设置为username该设备的 Junos OS 登录凭据。
    注意:

    有关在 Salt 中安全存储敏感数据的信息,请参阅 https://docs.saltproject.io/en/latest/topics/best_practices.html#storing-secure-data

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

要使用 SSH 密钥对 Salt 用户进行身份验证,必须先在 Salt 代理工作节点服务器上生成密钥,并在运行 Junos OS 的每台设备上配置公钥。要使用这些密钥,您必须在 Salt 主设备上的代理配置中包含相应的参数。通过 Junos PyEZ 进行的 Salt 连接可以使用主动加载到 SSH 密钥代理中的 SSH 密钥、在默认位置或用户定义位置生成的 SSH 密钥,以及使用或放弃密码保护的密钥。Junos 代理首先检查在 SSH 密钥代理中主动加载的 SSH 密钥,然后检查用户 .ssh 目录下默认位置的 SSH 密钥。

以下章节概述了以下步骤:生成 SSH 密钥,在运行 Junos OS 的设备上配置密钥,以及使用密钥连接到受管设备。

生成和配置 SSH 密钥

要在 Salt 代理工作节点服务器上生成 SSH 密钥并在运行 Junos OS 的设备上配置公钥:

  1. 在 Salt 代理工作节点服务器上,为所需用户生成公钥和私钥 SSH 密钥对,并提供任何必需或所需的选项,例如:
  2. (可选)使用特定于您的作系统和代理的命令将密钥加载到本机 SSH 密钥代理中。例如:
  3. 在 Salt 将连接的每台运行 Junos OS 的设备上,以相应的用户帐户配置公钥。

    在运行 Junos OS 的设备上配置公钥的最简单方法是加载包含公钥的文件。

  4. 使用密钥登录设备,验证密钥是否正常工作。

在 salt 代理配置文件中引用 SSH 密钥

在运行 Junos OS 的受管设备上生成 SSH 密钥对并配置公钥后,Junos 代理可以使用密钥连接到设备。要使用密钥,必须在 Salt 主设备上的代理配置中包含相应的参数。除了必需 proxytype 的参数和 host 参数外,使用 SSH 密钥所需的参数还取决于密钥的位置、密钥是否受密码保护、密钥是否主动加载到 SSH 密钥代理中,以及用户的 SSH 配置文件是否已定义该主机的设置。

Junos 代理会查询代理工作节点服务器上的 ~/.ssh/config 中的默认 SSH 配置文件(如果存在),除非该设备的代理配置包含 ssh_config 用于指定其他配置文件的参数。Salt 在给定连接的 SSH 配置文件中使用任何相关设置,这些设置不会被该设备的代理配置中定义的参数覆盖。连接到设备时,Junos 代理首先检查在 SSH 密钥代理中主动加载的 SSH 密钥,然后检查用户 .ssh 目录下默认位置的 SSH 密钥。

要使用主动加载到本机 SSH 密钥代理中的 SSH 密钥,请执行以下作:

  • 在包含设备代理配置的支柱文件中,必须定义 username 参数。

要使用位于默认位置且没有密码保护的 SSH 密钥,请执行以下作:

  • 在包含设备代理配置的支柱文件中,仅当参数不默认提供给使用其密钥向设备进行身份验证的用户时, username 才需要提供该参数。

要使用不在默认位置或使用密码保护的 SSH 密钥,请执行以下作:

  • 在包含设备代理配置的支柱文件中,将参数设置为 ssh_private_key_file 代理工作节点服务器上 SSH 私钥的路径,如果密钥受密码保护,则将参数设置为 password SSH 密钥文件密码。

    注意:

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