为 NETCONF 会话建立 SSH 连接
了解通过 SSH 的 NETCONF 会话
您可以使用 SSH 协议在 配置管理服务器 (CMS) 与 Junos 设备之间建立连接。您可以使用配置管理服务器远程管理 Junos 设备。
您可以使用以下选项在配置管理服务器与 Junos 设备之间建立 SSH 连接。
-
SSH — 配置管理服务器启动与 Junos 设备的 SSH 会话。
-
出站 SSH — Junos 设备启动、建立和维护与一组预定义的配置管理服务器的 SSH 连接。当配置管理服务器由于网络限制(如防火墙)而无法启动 SSH 连接时,请使用此选项。
Junos OS 包括用于设备管理的 OpenSSH 自定义实现。安全修补程序会根据需要向后移植,与 OpenSSH 版本号无关。CLI 输出中显示的版本(例如 show version)可能无法反映所有应用的修补程序。请务必参考瞻博网络安全公告 (JSA) 进行漏洞影响评估。
通过 SSH 或出站 SSH 进行 NETCONF 会话的常见先决条件
对于使用 SSH 或出站 SSH 的 NETCONF 会话,必须在配置管理服务器上安装 SSH 软件,并在 Junos 设备上启用 NETCONF 服务。有关详细说明,请参阅以下部分:
在配置管理服务器上安装 SSH 软件
对于 SSH 连接,配置管理服务器 (CMS) 处理与 Junos 设备的 SSH 连接。对于出站 SSH 连接,Junos 设备会与配置管理服务器建立 SSH 连接,然后配置管理服务器控制 SSH 会话。
要与设备建立 SSH 或出站 SSH 连接,配置管理服务器必须在本地安装 SSH 软件。有关获取和安装 SSH 软件的信息,请参阅:
通过 SSH 启用 NETCONF 服务
要在 Junos 设备上建立 NETCONF 会话,必须启用 NETCONF 服务。您可以将 NETCONF 服务器配置为接受以下端口上的 NETCONF 会话:
-
默认 NETCONF 端口 (830) 或用户定义的端口
-
默认 SSH 端口 (22)
我们建议您使用默认的 NETCONF 端口,因为它可以使设备更有效地识别和过滤 NETCONF 流量。或者,您可以将设备配置为您选择的端口号(而不是默认的 NETCONF 端口)上接受 NETCONF 会话。定义的端口仅接受 NETCONF-over-SSH 会话,并拒绝常规 SSH 会话请求。
如果启用 NETCONF 并在设备上启用 SSH 服务,则设备会接受默认 SSH 端口和配置的 NETCONF 端口(默认或用户定义端口)上的 NETCONF 会话。为了提高安全性,您可以配置事件策略,利用 UI_LOGIN_EVENT 这些信息来有效地禁止 SSH 端口接受 NETCONF 会话或进一步限制端口上的 NETCONF 服务器访问。
要在 Junos 设备上通过 SSH 启用 NETCONF 服务:
-
在默认 NETCONF 端口 (830) 或用户定义的端口上启用 NETCONF 服务:
-
要使用默认的 NETCONF 端口 (830),请在
[edit system services]层次结构级别包含语netconf ssh句:[edit system services] user@host# set netconf ssh
-
要使用特定端口,请在
[edit system services netconf ssh]层次结构级别使用端口号配置port语句。[edit system services] user@host# set netconf ssh port port-number
范围
port-number可以从 1 到 65535。配置的端口仅接受 NETCONF-over-SSH 会话,并拒绝常规 SSH 会话请求。注意:虽然您可以在 1 到 65535 之间的任意端口上配置 NETCONF,但不应在通常为其他服务分配的端口上配置访问权限。这种做法可避免潜在的资源冲突。如果配置为其他服务(如 FTP)分配的端口,并且该服务已启用,则 不会
commit check显示资源冲突或发出任何警告消息。
-
-
(选答)要同时启用使用默认 SSH 端口 (22) 对 NETCONF SSH 子系统的访问,请在
[edit system services]层次结构级别包含语ssh句。[edit system services] user@host# set ssh
此配置允许所有用户和应用程序对设备进行 SSH 访问。
注意:在默认行为是限制 root 用户使用 SSH 服务的版本中,必须在层次结构级别配置
root-login allow语句[edit system services ssh],以使 root 用户能够通过 SSH 打开 NETCONF 会话。 (选答)配置设备以断开无响应的 NETCONF 客户端。
指定超时间隔(以秒为单位),在此间隔之后,如果未从客户端收到任何数据,则 sshd 进程将请求响应。此外,指定触发断开连接的错过客户端活动响应的阈值。
[edit system services] user@host# set netconf ssh client-alive-interval 10 user@host# set netconf ssh client-alive-count-max 10
注意:在
[edit system services netconf ssh]层次结构级别上配置的语句仅适用于通过默认端口 (830) 或通过在同一层次结构级别上配置的用户定义端口进行连接的 NETCONF 会话。-
提交配置:
[edit] user@host# commit
-
在客户端应用程序建立 NETCONF 会话的每个 Junos 设备上重复上述步骤。
为 NETCONF 会话建立 SSH 连接的先决条件
为 Junos 设备上的客户端应用程序配置用户帐户
配置管理服务器必须登录到 Junos 设备才能建立 NETCONF 会话。因此,配置管理服务器在建立 NETCONF 会话的每台设备上都需要一个用户帐户。以下说明如何在 Junos 设备上创建本地用户帐户。或者,您可以跳过此部分,通过 RADIUS 或 TACACS+ 启用身份验证。
要创建本地用户帐户,请执行以下作:
为 Junos OS 用户帐户配置公钥/私钥对或密码
配置管理服务器需要 SSH 公钥/私钥对和/或基于文本的密码才能向 NETCONF 服务器进行身份验证。如果帐户仅用于通过 SSH 连接到 NETCONF 服务器,则密钥对就足够了。如果帐户还用于以其他方式访问设备(例如,用于在控制台上登录),则该帐户必须具有基于文本的密码。如果配置了基于密钥的身份验证但失败,也会使用密码(SSH 服务器会提示输入密码)。
如果您已选择通过 RADIUS 或 TACACS+ 启用身份验证,则可以跳过此部分。
要创建基于文本的密码:
要创建 SSH 公钥/私钥对,请执行以下步骤:
在运行客户端应用程序的配置管理服务器上,在标准命令行界面中发出
ssh-keygen命令并提供相应的参数。user@cms:~$ ssh-keygen options
例如:
netconf-user@cms:~$ ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/home/netconf-user/.ssh/id_rsa): Created directory '/home/netconf-user/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/netconf-user/.ssh/id_rsa Your public key has been saved in /home/netconf-user/.ssh/id_rsa.pub ...
有关
ssh-keygen选项的更多信息,请参阅命令的手册页ssh-keygen。将公钥与 Junos OS 登录帐户相关联。
[edit system login user username authentication] user@host# set load-key-file URL
Junos OS 会将指定文件的内容复制到设备上。 URL 是包含一个或多个公钥的文件的路径。默认情况下,
ssh-keygen命令将每个公钥存储在用户主目录的 .ssh 子目录中的文件中;文件名取决于编码和 SSH 版本。有关指定 URL 的信息,请参阅 CLI 用户指南。注意:或者,您可以在层次结构级别包含
ssh-rsa语句[edit system login user account-name authentication]。但是,我们建议使用语load-key-file句,因为它无需在命令行上键入或剪切并粘贴公钥。提交配置。
[edit] user@host# commit
使用客户端应用程序访问密钥或密码
客户端应用程序必须能够访问配置的密钥对或密码,并在 NETCONF 服务器提示时提供。
有几种方法可以使应用程序能够访问密钥或密码:
-
如果使用公钥/私钥,则 ssh-agent 程序在运行客户端应用程序的设备上运行,并处理私钥。
-
当用户启动应用程序时,应用程序会提示用户输入密码,并以安全的方式临时存储密码。
-
密码以加密形式存储在安全的本地磁盘位置或安全的数据库中。
为 NETCONF 会话建立出站 SSH 连接的先决条件
要使配置管理服务器能够与 NETCONF 服务器建立出站 SSH 连接,必须满足中讨论的常见要求:
您还必须满足以下部分中讨论的要求:
为出站 SSH 配置 Junos 设备
要为出站 SSH 配置 Junos 设备,请执行以下作:
在客户端上接收和管理出站 SSH 初始序列
为出站 SSH 配置 Junos 设备时,设备会尝试与配置管理服务器保持持续连接。每当未建立出站 SSH 会话时,设备都会将出站 SSH 初始序列发送到设备的配置管理服务器列表中列出的配置管理服务器。在与设备建立连接之前,必须将每个配置管理服务器设置为接收此初始化序列,与设备建立 TCP 连接,然后将设备标识传输回设备。
启动顺序采用两种形式之一,具体取决于您选择如何处理 Junos OS 服务器的公钥。
如果在配置管理服务器上手动安装公钥,则初始顺序采用以下形式:
MSG-ID: DEVICE-CONN-INFO\r\n MSG-VER: V1\r\n DEVICE-ID: <device-id>\r\n
如果设备在初始化序列期间将公共密钥转发给配置管理服务器,则序列将采用以下形式:
MSG-ID: DEVICE-CONN-INFO\r\n MSG-VER: V1\r\n DEVICE-ID: : <device-id>\r\n HOST-KEY: <pub-host-key>\r\n HMAC: <HMAC(pub-SSH-host-key,<secret>)>\r\n
变更历史表
是否支持某项功能取决于您使用的平台和版本。使用 功能浏览器 查看您使用的平台是否支持某项功能。