为 NETCONF 会话建立 SSH 连接
为 NETCONF 会话建立 SSH 连接
您可使用 SSH 协议在配置管理服务器与运行新服务的设备Junos OS。如其名称所示,配置管理服务器用于配置远程运行Junos OS设备。
在配置管理服务器和运行新设备的之间建立连接时,有两个选项Junos OS:SSH 和出站 SSH。使用 SSH,配置管理服务器会与运行 Junos OS 的设备启动 SSH 会话。当配置管理服务器因网络限制(如防火墙)而无法发起 SSH 连接时,会使用出站 SSH。在这种情况下,运行 Junos OS 配置为启动、建立和维护与预定义的配置管理服务器集的 SSH 连接。有关出站 SSH 的完整讨论,请参阅 配置出站 SSH 服务 。
为 NETCONF 会话建立 SSH 连接的先决条件
在配置管理服务器与运行 Junos OS 的设备建立 SSH 连接之前,必须满足以下各节中讨论的要求。
- 在配置管理服务器上安装 SSH 软件
- 为运行 Junos OS 的设备上配置客户端应用程序的Junos OS
- 为 Junos OS 用户帐户配置公共/私有密钥对Junos OS密码
- 使用客户端应用程序访问密钥或密码
- 在 SSH 上启用 NETCONF 服务
在配置管理服务器上安装 SSH 软件
配置管理服务器处理配置管理服务器与运行新设备的 SSH Junos OS。因此,SSH 软件必须安装在配置管理服务器上本地。有关获取和安装 SSH 软件的信息 ,请参阅 http://www.ssh.com/ 和 http://www.openssh.com/。
为运行 Junos OS 的设备上配置客户端应用程序的Junos OS
建立 NETCONF 会话时,配置管理服务器必须登录运行 Junos OS。因此,每个配置管理服务器在将建立 NETCONF 会话的每台设备上都需要一个用户帐户。以下说明介绍如何在运行 Junos OS 的设备上创建登录帐户。或者,您也可以跳过本部分并通过 RADIUS 或 TACACS+ 启用认证。
要确定正在运行的设备上是否存在登录帐户Junos OS,CLI设备进入默认配置模式并发出以下命令:
[edit system login] user@host# show user account-name
如果不存在相应的帐户,请执行以下步骤以创建一个:
另请参阅
为 Junos OS 用户帐户配置公共/私有密钥对Junos OS密码
配置管理服务器需要 SSH 公共/私钥对、基于文本的密码或两者才能通过 NETCONF 服务器进行身份验证。如果帐户仅用于通过 SSH 连接到 NETCONF 服务器,则公共/私钥对就足以满足要求。如果帐户还用于以其他方式访问设备(例如,登录控制台),则必须具有基于文本的密码。如果配置了基于密钥的身份验证但失败,则还会使用密码(SSH 服务器提示)。
如果您选择通过安全认证或 TACACS+ 启用认证,可以跳过RADIUS节。
要创建基于文本的密码,请执行以下步骤:
要创建 SSH 公共/私钥对,请执行以下步骤:
在运行客户端应用程序的配置管理服务器上,在标准
ssh-keygen
命令 shell(而非 Junos OS CLI)中发出 命令。通过提供相应的参数,您可使用 RSA(由 SSH 版本 1 和 2 支持)或数字签名算法(SSH 版本 2 支持的 DSA)对公钥进行编码。有关详细信息,请参阅 命令的手动
ssh-keygen
页面。Junos OS使用 SSH 版本 2,但也支持版本 1。% ssh-keygen options
将公钥与 Junos OS 登录帐户关联,在 层次结构级别包含
load-key-file
[edit system login user account-name authentication]
语句。[edit system login user username authentication] user@host# set load-key-file URL
Junos OS将指定文件的内容复制到运行 Junos OS。 URL是包含一个或多个公钥的文件的路径。默认情况下,命令将每个公钥存储在用户主目录的 .ssh 子目录中的文件中;文件名取决于编码
ssh-keygen
(DSA 或 RSA)和 SSH 版本。 有关指定 URL 的信息,请参阅 CLI用户指南。或者,您可以在 层次结构级别包含 一个或两个 和
ssh-dsa
ssh-rsa
ssh-dsa
[edit system login user account-name authentication]
语句。但是,建议使用 语句,因为它无需键入或粘贴命令行上的公钥load-key-file
。提交配置。
[edit] user@host# commit
使用客户端应用程序访问密钥或密码
客户端应用程序必须能够访问配置的公钥/私钥或密码,在 NETCONF 服务器提示时提供。
有几种允许应用程序访问密钥或密码的方法:
如果使用公共/私钥,ssh-agent 程序将运行在客户端应用程序运行的计算机中,并处理私钥。
用户启动应用程序时,应用程序会提示用户输入密码,并安全临时存储。
密码以加密形式存储在安全本地磁盘位置或安全数据库中。
在 SSH 上启用 NETCONF 服务
RFC 4742 使用安全 SHell (SSH) 上的 NETCONF配置协议,要求在通过专用的 IANA 分配的 TCP 端口建立 SSH 会话时,NETCONF 服务器默认为客户端设备提供对 NETCONF SSH 子系统的访问。使用专用端口可以轻松识别和过滤 NETCONF 流量。NETCONF-over-SSH 会话IANA分配的端口为 830。
您也可配置服务器以允许通过默认 SSH 端口 (22) 或通过明确配置的端口号访问 NETCONF SSH 子系统。显式配置的端口仅接受 NETCONF-over-SSH 会话,拒绝常规 SSH 会话请求。如果服务器上启用了 SSH 服务,即使配置了另一个 NETCONF-over-SSH 端口,默认 SSH 端口 (22) 也将继续接受 NETCONF 会话。为了增加安全性,您可配置利用信息的事件策略,以有效禁用默认端口或进一步限制端口 UI_LOGIN_EVENT
上的 NETCONF 服务器访问。
要针对运行 Junos OS 的设备上通过 SSH 启用 NETCONF 服务,请执行以下步骤:
-
在指示的配置层次结构级别中包括以下语句之一:
-
要使用 RFC 4742 指定的默认 NETCONF-over-SSH 端口 (830) 启用对 NETCONF SSH 子系统的访问,请包括在 层次结构级别中的
netconf ssh
[edit system services]
语句:[edit system services] user@host# set netconf ssh
-
要允许使用指定端口号访问 NETCONF SSH 子系统,请用所需端口号在
port
[ ]edit system services netconf ssh
层次结构级别配置该语句。[edit system services] user@host# set netconf ssh port port-number
范围
port-number
为 1 到 65535。配置的端口仅接受 NETCONF-over-SSH 会话,拒绝常规 SSH 会话请求。注意:虽然 NETCONF-over-SSH 可以在 1 到 65535 的任何端口上配置,但您应避免在通常分配给其他服务的端口上配置访问。这种做法可以避免潜在的资源冲突。如果在为另一项服务分配的端口(例如 FTP)上配置 NETCONF-over-SSH,并且已启用该服务,则 不会显示资源冲突或发布任何此类警告
commit check
消息。 -
要启用对使用默认 SSH 端口 (22) 的 NETCONF SSH 子系统的访问,请包含 层级
ssh
[edit system services]
的 语句。此配置使得 SSH 能够访问设备的所有用户和应用程序。除了ssh
前面列出的配置语句之外,该语句还可以包含在配置中。[edit system services] user@host# set ssh
-
- (可选)配置设备以断开无响应 NETCONF 客户端,具体方法包括指定超时间隔(以秒为单位),之后,如果未从客户端收到数据,sshd 进程会请求响应,以及触发断开的客户端活动响应丢失的阈值。
[edit system services] user@host# set netconf ssh client-alive-interval 10 user@host# set netconf ssh client-alive-count-max 10
注意:在层次结构级别配置的语句仅适用于通过默认端口 (830) 或通过在同一层级配置的用户定义端口连接的
[edit system services netconf ssh]
NETCONF 会话。 -
提交配置:
[edit] user@host# commit
-
在运行该会话的每个设备上Junos OS步骤,其中客户端应用程序将建立 NETCONF 会话。
为 NETCONF 会话建立出站 SSH 连接的先决条件
要启用配置管理服务器与 NETCONF 服务器建立出站 SSH 连接,必须满足以下各节中讨论的要求:
为出站 SSH Junos OS运行设备
要配置运行用于Junos OS SSH 的设备:
在客户端安装 SSH 软件
设备与配置管理服务器建立 SSH 连接后,配置管理服务器将控制 SSH 会话。因此,SSH 客户端软件必须安装在配置管理服务器上本地。有关获取和安装 SSH 软件的信息 ,请参阅 http://www.ssh.com/ 和 http://www.openssh.com/ 。
在客户端接收和管理出站 SSH 初始化顺序
为出站 SSH 配置时,运行 Junos OS将尝试与配置管理服务器保持恒定连接。只要未建立出站 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
在 SSH 上启用 NETCONF 服务
RFC 4742 使用安全 SHell (SSH) 上的 NETCONF配置协议,要求在通过专用的 IANA 分配的 TCP 端口建立 SSH 会话时,NETCONF 服务器默认为客户端设备提供对 NETCONF SSH 子系统的访问。使用专用端口可以轻松识别和过滤 NETCONF 流量。NETCONF-over-SSH 会话IANA分配的端口为 830。
您也可配置服务器以允许通过默认 SSH 端口 (22) 或通过明确配置的端口号访问 NETCONF SSH 子系统。显式配置的端口仅接受 NETCONF-over-SSH 会话,拒绝常规 SSH 会话请求。如果服务器上启用了 SSH 服务,即使配置了另一个 NETCONF-over-SSH 端口,默认 SSH 端口 (22) 也将继续接受 NETCONF 会话。为了增加安全性,您可配置利用信息的事件策略,以有效禁用默认端口或进一步限制端口 UI_LOGIN_EVENT
上的 NETCONF 服务器访问。
要针对运行 Junos OS 的设备上通过 SSH 启用 NETCONF 服务,请执行以下步骤:
-
在指示的配置层次结构级别中包括以下语句之一:
-
要使用 RFC 4742 指定的默认 NETCONF-over-SSH 端口 (830) 启用对 NETCONF SSH 子系统的访问,请包括在 层次结构级别中的
netconf ssh
[edit system services]
语句:[edit system services] user@host# set netconf ssh
-
要允许使用指定端口号访问 NETCONF SSH 子系统,请用所需端口号在
port
[ ]edit system services netconf ssh
层次结构级别配置该语句。[edit system services] user@host# set netconf ssh port port-number
范围
port-number
为 1 到 65535。配置的端口仅接受 NETCONF-over-SSH 会话,拒绝常规 SSH 会话请求。注意:虽然 NETCONF-over-SSH 可以在 1 到 65535 的任何端口上配置,但您应避免在通常分配给其他服务的端口上配置访问。这种做法可以避免潜在的资源冲突。如果在为另一项服务分配的端口(例如 FTP)上配置 NETCONF-over-SSH,并且已启用该服务,则 不会显示资源冲突或发布任何此类警告
commit check
消息。 -
要启用对使用默认 SSH 端口 (22) 的 NETCONF SSH 子系统的访问,请包含 层级
ssh
[edit system services]
的 语句。此配置使得 SSH 能够访问设备的所有用户和应用程序。除了ssh
前面列出的配置语句之外,该语句还可以包含在配置中。[edit system services] user@host# set ssh
-
-
提交配置:
[edit] user@host# commit
-
在运行该会话的每个设备上Junos OS步骤,其中客户端应用程序将建立 NETCONF 会话。