Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

远程访问概述

您(网络管理员)可以使用 DHCP、Finger、FTP、rlogin、SSH 和 Telnet 服务等服务远程访问路由器、交换机或安全设备。本主题介绍如何使用 Telnet、SSH、FTP 和 Finger 服务配置远程访问。

系统服务概述

出于安全原因,默认情况下禁用对路由器的远程访问。您必须显式配置路由器,以便远程系统上的用户可以访问它。用户可以通过 DHCP、finger、FTP、rlogin、SSH 和 Telnet 服务从远程系统访问路由器。此外,Junos XML 协议客户端应用程序可以使用安全套接字层 (SSL) 或特定于 Junos XML 协议的明文服务等服务。

注意:

若要保护系统资源,可以限制服务接受的同时连接数和单个用户拥有的进程数。如果超出任一限制,连接尝试将失败。

配置 Telnet 服务以远程访问路由器或交换机

要将路由器或交换机配置为接受 Telnet 作为接入服务,请在层次结构级别包含 telnet 以下语句 [edit system services]

默认情况下,路由器或交换机每分钟支持有限数量的同步 Telnet 会话和连接尝试。

(可选)可以包含以下一个或两个语句来更改默认值:

  • connection-limit limit— 每个协议(IPV4 和 IPv6)的最大同时连接数。范围为 1 到 250。默认值为 75。配置连接限制时,该限制适用于每个协议(IPv4 和 IPv6)的 telnet 会话数。例如,连接限制为 10 允许 10 个 IPv6 telnet 会话和 10 个 IPv4 telnet 会话。

  • rate-limit limit- 每分钟接受的最大连接尝试次数(从 1 到 250)。默认值为 150。配置速率限制时,该限制适用于每个协议(IPv4 和 IPv6)的连接尝试次数。例如,速率限制 10 允许每分钟 10 次 IPv6 远程登录会话连接尝试和每分钟 10 次 IPv4 telnet 会话连接尝试。

配置 FTP 服务以远程访问路由器或交换机

要将设备配置为接受 FTP 作为接入服务,请在层次结构级别包含 ftp 语句 [edit system services]

您可以使用被动 FTP 访问仅接受被动 FTP 服务的设备。所有使用 FTP 的命令和语句也接受被动 FTP。 ftp[edit system services] 层次结构级别包含语句以使用主动 FTP 或被动 FTP。

要启动被动 FTP 会话,请使用 pasvftp (而不是 ftp )标准 FTP 格式 (ftp://destination)。例如:

配置 Finger 服务以远程访问路由器

要将路由器配置为接受 finger 作为接入服务,请在层次结构级别包含 finger 以下语句 [edit system services]

配置 SSH 服务以远程访问路由器或交换机

要将路由器或交换机配置为接受 SSH 作为接入服务,请在层次结构级别包含 ssh 以下语句 [edit system services]

默认情况下,路由器或交换机支持每分钟同时进行的 SSH 会话和连接尝试次数有限。使用以下语句更改默认值:

  • connection-limit limit— 每个协议(IPv4 和 IPv6)的最大同时连接数。范围是 1 到 250 之间的值。默认值为 75。配置连接限制时,该限制适用于每个协议(IPv4 和 IPv6)的 SSH 会话数。例如,连接限制为 10 允许 10 个 IPv6 SSH 会话和 10 个 IPv4 SSH 会话。

  • max-sessions-per-connection number— 包括此语句以指定每个 SSH 连接允许的最大 SSH 会话数。这允许您限制在单个 SSH 连接中通过隧道传输的克隆会话数。默认值为 10。

  • rate-limit limit- 每分钟接受的最大连接尝试次数(1 到 250 之间的值)。默认值为 150。配置速率限制时,该限制适用于每个协议(IPv4 和 IPv6)的连接尝试次数。例如,速率限制 10 允许每分钟 10 次 IPv6 SSH 会话连接尝试和每分钟 10 次 IPv4 SSH 会话连接尝试。

  • data-limit- 重新协商会话密钥(字节)之前的数据限制

  • time-limit- 重新协商会话密钥之前的时间限制(分钟)

默认情况下,用户可以通过 CLI 会话创建到 SSH 运行 Junos OS 的路由器的 SSH 隧道。这种类型的隧道可用于转发 TCP 流量,绕过任何防火墙过滤器或访问控制列表。通过绕过防火墙过滤器或访问控制列表,这种类型的隧道允许访问路由器以外的资源。使用该 no-tcp-forwarding 选项可防止用户通过 SSH 创建到路由器的 SSH 隧道。

有关其他配置设置的信息,请参阅以下主题:

通过 SSH 配置 root 登录

默认情况下,当身份验证方法不需要密码时,允许用户通过 SSH 登录到路由器或交换机 root 。要通过 SSH 控制用户访问,请在层次结构级别包含 root-login 语句 [edit systems services ssh]

allow— 允许用户通过 SSH 以 root 用户身份登录到路由器或交换机。

deny— 禁止用户通过 SSH 以 root 身份登录到路由器或交换机。

deny-—password 当身份验证方法(例如 RSA)不需要密码时,允许用户通过 SSH 以 root 身份登录到路由器或交换机。

默认值为 deny-password

配置传入 SFTP 连接

SSH 文件传输协议 (SFTP) 是一种网络协议,可通过任何可靠的数据流提供文件访问、文件传输和文件管理。默认情况下,传入的 SFTP 连接处于禁用状态。如果需要,您可以通过在层次结构级别配置[edit system services ssh]语句sftp-server来全局启用传入 SFTP 连接。

注意:

默认情况下,仅禁用传入的 SFTP 连接。例如,给定设备 A 和 B,默认情况下无法通过 SFTP 从 B 连接到 A。但是,如果在设备 A 上进行配置 sftp-server ,则可以通过 SFTP 从设备 B 连接到设备 A。

默认情况下,传入的 SFTP 连接处于禁用状态。要启用传入的 SFTP 连接,请执行以下操作:

  1. sftp-server[edit system services ssh]层次结构级别配置语句:
  2. 提交配置。

    语句 sftp-server 现在处于活动状态。因此,将启用传入的 SFTP 连接。

配置 SSH 协议版本

默认情况下,仅启用 SSH 协议的版本 2。

要将路由器或交换机配置为使用 SSH 协议版本 2,请包含protocol-version语句并在层次结构级别指定v2[edit system services ssh]

配置客户端活动机制

当客户端或服务器依赖于了解连接何时变为非活动状态时,客户端活动机制很有价值。它不同于标准的激活机制,因为客户端激活消息是通过加密通道发送的。默认情况下不启用客户端活动机制。要启用它,请配置 and client-alive-count-max client-alive-interval 语句。此选项仅适用于 SSH 协议版本 2。

在以下示例中,无响应的 SSH 客户端将在大约 100 秒 (20 x 5) 后断开连接:

配置 SSH 指纹哈希算法

要配置 SSH 服务器在显示密钥指纹时使用的哈希算法,请包含fingerprint-hash语句并在层次结构级别指定 md5 [edit system services ssh] ORsha2-256

SSH 基于证书的身份验证概述

从 Junos OS 和 Junos OS 演化版 22.4R1 开始,您可以为用户和主机配置 SSH 基于证书的身份验证。此功能允许您为用户和信任主机建立无密码 SSH 访问,而无需验证密钥指纹。

基于 SSH 证书的身份验证的优势

  • 基于 SSH 证书的身份验证使用户无需记住和输入密码,从而简化了登录过程。

  • 与传统的基于密码的方法相比,SSH 证书提供更强的安全性。如果没有密码猜测或破解,它们更难被破坏。

  • SSH 证书简化了身份验证密钥的管理。管理员无需管理每个用户和主机的单个密钥,而是可以从集中式证书颁发机构颁发和吊销证书。

生成签名密钥

签名密钥是基于 SSH 证书的身份验证中使用的专用加密密钥。配置基于 SSH 证书的身份验证的第一步是生成签名密钥。您可以在任何 Linux/FreeBSD 系统上生成签名密钥。请按照以下步骤为基于 SSH 证书的身份验证生成签名密钥:

  1. 运行以下命令: ssh-keygen -f <filename_ca>。这将创建一个名为的 <filename_ca> 私钥和一个名为 <filename_ca.pub>的相应公钥。

  2. 登录到您的瞻博网络设备,通过执行以下命令配置 SSH 可信用户证书颁发机构 (CA) 密钥文件: set system services ssh trusted-user-ca-key-file <path-to-public-key> 然后提交配置。

  3. 每个用户都可以使用以下 CLI 命令生成自己的用户密钥: ssh-keygen -t <rsa|ecdsa|ed25519>

  4. 将用户创建的公钥复制到具有用户证书 <filename_ca><filename_ca.pub>的计算机上。

  5. 对文件中的用户 <filename_ca.pub> 公钥进行签名。

配置

要配置基于 SSH 证书的身份验证,请使用以下 CLI 配置语句:

  • [system services ssh trusted-user-ca-key-file filename]—在 /etc/ssh/sshd_config 中配置文件TrustedUserCAKey,其中包含 SSH 证书的公钥。

  • [system services ssh host-certificate-file filename]—在 /etc/ssh/sshd_config 中配置文件HostCertificate,其中包含已签名的主机证书。

  • [system services ssh authorized-principals-file filename]—在 /var/etc 处配置文件AuthorizedPrincipals,其中包含一个名称列表,其中一个名称必须出现在证书中才能接受它进行身份验证。

  • [system services ssh authorized-principals-command program-path]- 指定要用于生成在文件中找到 AuthorizedPrincipals 的允许的证书主体列表的程序。

telnet 命令

您可以使用 CLI telnet 命令打开到远程设备的 Telnet 会话:

要退出 Telnet 会话并返回到 Telnet 命令提示符,请按 Ctrl-]。

要退出 Telnet 会话并返回到 CLI 命令提示符,请输入 quit

表 1:CLI telnet 命令选项

选择

描述

8bit

使用 8 位数据路径。

host

打开到指定主机名或 IP 地址的 Telnet 会话。

inet

强制将 Telnet 会话发送到 IPv4 目标。

inet6

强制将 Telnet 会话发送到 IPv6 目标。

port port

指定主机上的端口号或服务名称。

routing-instance routing-instance-name

对 Telnet 会话使用指定的路由实例。

ssh 命令

您可以使用 CLI ssh 命令使用安全外壳 (SSH) 程序打开与远程设备的连接:

表 2 介绍了 ssh 命令选项。

表 2:CLI ssh 命令选项

选择

描述

bypass-routing

绕过路由表,仅打开与直接连接接口上的主机的 SSH 连接。如果主机不在直接连接的接口上,则会返回错误消息。

host

打开与指定主机名或 IP 地址的 SSH 连接。

inet

强制将 SSH 连接到 IPv4 目标。

inet6

强制将 SSH 连接到 IPv6 目标。

interface source-interface

打开与指定接口上的主机的 SSH 连接。如果不包括此选项,则使用所有接口。

routing-instance routing-instance-name

将指定的路由实例用于 SSH 连接。

logical-system

将指定的逻辑系统用于 SSH 连接。

source address

使用 SSH 连接的指定源地址。

v2

强制 SSH 使用版本 2 进行连接。

配置 SSH 已知主机密钥以安全复制数据

安全外壳 (SSH) 使用 加密 算法生成主机、服务器和会话密钥系统,以确保数据传输的安全。您可以将 SSH 主机密钥配置为支持安全复制 (SCP),作为 FTP 的替代方法,用于后台传输数据,例如配置存档和事件日志。要为 SCP 配置 SSH 支持,必须完成以下任务:

  • 通过在路由引擎配置层次结构中包含主机名和主机密钥信息来指定 SSH 已知主机。

  • 设置 SCP URL 以指定从中接收数据的主机。设置此属性会自动从 SCP 服务器检索 SSH 主机密钥信息。

  • 验证主机密钥是否真实。

  • 接受安全连接。接受此连接会自动将主机密钥信息存储在本地主机密钥数据库中。将主机密钥信息存储在配置层次结构中可自动执行安全握手,并允许使用 SCP 传输后台数据。

配置 SSH 主机密钥以安全复制数据的任务包括:

配置 SSH 已知主机

要配置 SSH 已知主机,请包含 host 该语句,并在层次结构级别为 [edit security ssh-known-hosts] 受信任的服务器指定主机名和主机密钥选项:

主机密钥为下列项之一:

  • dsa-key key- SSH 版本 2 的 Base64 编码数字签名算法 (DSA) 密钥。

  • ecdsa-sha2-nistp256-keykey- Base64 编码的 ECDSA-SHA2-NIST256 密钥。

  • ecdsa-sha2-nistp384-keykey- Base64 编码的 ECDSA-SHA2-NIST384 密钥。

  • ecdsa-sha2-nistp521-keykey- Base64 编码的 ECDSA-SHA2-NIST521 密钥。

  • ed25519-keykey- ED25519密钥进行 Base64 编码。

  • rsa-key key- Base64 编码公钥算法,支持 SSH 版本 1 和 SSH 版本 2 的加密和数字签名。

  • rsa1-key key- Base64 编码的 RSA 公钥算法,支持 SSH 版本 1 的加密和数字签名。

配置对 SCP 文件传输的支持

要将已知主机配置为支持后台 SCP 文件传输,请在层次结构级别包含archive-sites[edit system archival configuration]该语句。

注意:

使用 IPv6 主机地址在 Junos OS 演化 语句中指定 URL 时,必须用引号 (“ ”) 将整个 URL 括起来,并将 IPv6 主机地址括在方括号 ([ ]) 中。例如, “scp://username<:password>@[host]<:port>/url-path”;

archive-sites 语句设置为指向 SCP URL 会触发自动主机密钥检索。此时, Junos OS 演化版连接到 SCP 主机以获取 SSH 公钥,将主机密钥消息摘要或指纹作为输出显示到控制台,并终止与服务器的连接。

要验证主机密钥是否真实,请将此指纹与您使用受信任源从同一主机获取的指纹进行比较。如果指纹相同,请在提示符下输入 yes 以接受主机密钥。然后,主机密钥信息存储在路由引擎配置中,并支持使用 SCP 的后台数据传输。

更新 SSH 主机密钥信息

通常,当您在层次结构级别使用该[edit system]语句为 archival configuration archive-sites SCP 设置 URL 属性时,会自动检索 SSH 主机密钥信息。但是,如果需要手动更新主机密钥数据库,请使用下列方法之一。

手动检索主机密钥信息

要手动检索 SSH 公共主机密钥信息,请在层次结构级别配置该 fetch-from-server 选项 [edit security ssh-known-hosts] 。您必须指定要从中检索 SSH 公钥的主机。

从文件导入主机密钥信息

要从 known_hosts 文件手动导入 SSH 主机密钥信息,请在层次结构级别包含该 load-key-file 选项 [edit security ssh-known-hosts] 。必须指定要从中导入主机密钥信息的文件的路径。

配置 SSH 服务以支持旧版加密

Junos OS 演化版中的 SSH 服务器基于 OpenSSH 7,默认使用一组更安全的密码和密钥交换算法。OpenSSH 7省略了一些遗留的加密技术。

注意:

有关这些扩展的更多信息,请参阅 https://www.openssh.com/ 的 OpenSSH 7 文档。

默认情况下,Junos OS 演化版支持以下一组密码:

  • chacha20-poly1305@openssh.com

  • aes128-ctr

  • aes192-ctr

  • aes256-ctr

  • aes128-gcm@openssh.com

  • aes256-gcm@openssh.com

Junos OS 演化版中,默认情况下不支持以下密码,但您可以配置设备以支持这些密码。它们按从最安全到最不安全的顺序列出:

  • aes256-cbc

  • aes192-cbc

  • aes128-cbc

默认情况下,Junos OS 演化 版支持以下一组密钥交换方法:

  • curve25519-sha256

  • ecdh-sha2-nistp256

  • ecdh-sha2-nistp384

  • ecdh-sha2-nistp521

  • group-exchange-sha2

  • dh-group14-sha1

Junos OS 演化版中,默认情况下不支持以下密钥交换方法,但您可以将设备配置为支持这些方法:

  • group-exchange-sha1

  • dh-group1-sha1

要将 SSH 服务配置为支持旧版加密,请执行以下操作:

注意:

通过配置一组有序的密码、密钥交换方法或消息认证代码 (MAC),可以将新定义的密码集同时应用于服务器命令和客户端命令。使用安全复制协议 (SCP) 时,对默认值的更改会影响 file copy 命令。

  1. 使用set system services ssh ciphers [ cipher 1 cipher 2 ... ]命令添加对密码的支持。我们建议您将密码添加到配置列表的末尾,以便它们是最后使用的选项之一。在以下示例中,arcfourblowfish-cbc密码将添加到默认设置中:
  2. 使用 set system services ssh key-exchange [ method 1 method 2 ... ] 命令添加对密钥交换方法的支持。我们建议您将密钥交换方法添加到配置列表的末尾,以便它们是最后使用的选项之一。在以下示例中, dh-group1-sha1 密钥交换方法已添加到默认设置中:
  3. 提交配置:

配置出站 SSH 服务

您可以将运行 Junos OS 演化版 的设备配置为启动与客户端管理应用程序的 TCP/IP 连接。例如,如果管理应用程序无法访问瞻博网络设备,则该设备是防火墙设备。在这种情况下, outbound-ssh 可以在瞻博网络设备上进行配置。 outbound-ssh 配置启动从服务器到客户端再到管理应用程序的反向 SSH 连接。只有在从设备中删除配置后,才会关闭此出站 SSH 连接。

注意:

出站 SSH 没有启动命令。配置并提交出站 SSH 后,设备将开始根据提交的配置启动出站 SSH 连接。设备会反复尝试创建此连接,直到成功。如果设备与客户端管理应用程序之间的连接断开,设备将再次尝试创建新的出站 SSH 连接,直到成功。此连接将一直保持,直到从配置中删除出站 SSH 节。

要为出站 SSH 连接配置设备,请在层次结构级别包含 outbound-ssh 语句 [edit system services]

[edit system services outbound-ssh]

以下主题介绍配置出站 SSH 服务的任务。

将公共 SSH 主机密钥发送到出站 SSH 客户端

路由器或交换机每次建立出站 SSH 连接时,都会首先向管理客户端发送一个启动序列。此序列标识管理客户端的路由器或交换机。在此传输中是 的值 device-id

要配置路由器或交换机的设备标识符,请在层次结构级别包含 device-id 以下语句 [edit system services outbound-ssh client client-id]

未配置时的 secret 启动顺序:

在初始化 SSH 连接期间,客户端使用设备的公共 SSH 主机密钥验证设备的身份。因此,在客户端可以启动 SSH 序列之前,客户端需要设备的公有 SSH 密钥。配置语句 secret 时,设备会将其公有 SSH 密钥作为出站 SSH 连接启动序列的一部分传递。

secret设置语句且设备建立出站 SSH 连接时,设备将通信其设备 ID、公共 SSH 密钥以及部分派生自secret语句的 SHA1 哈希。语句的值secret在设备和管理客户端之间共享。客户端使用共享密钥对其接收的公有 SSH 主机密钥进行身份验证,以确定公有密钥是否来自语句标识device-id的设备。

secret使用该语句传输公共 SSH 主机密钥是可选的。您可以手动传输公钥并将其安装到客户端系统上。

注意:

包含该 secret 语句意味着设备在每次与客户端建立连接时都会发送其公共 SSH 主机密钥。然后,如果客户端已有该设备的 SSH 密钥,则由客户端决定如何处理 SSH 主机密钥。我们建议您将客户端的 SSH 主机密钥副本替换为新密钥。主机密钥可能会因各种原因而更改。通过每次建立连接时替换密钥,可以确保客户端具有最新的密钥。

要在设备连接到客户端时发送路由器或交换机的公有 SSH 主机密钥,请在层次结构级别包含 secret 以下语句 [edit system services outbound-ssh client client-id]

配置属性时 secret ,设备将发送以下消息:

为出站 SSH 连接配置激活消息

客户端应用程序获得路由器或交换机的公共 SSH 主机密钥后,可以启动 SSH 序列,就像创建了 TCP/IP 连接一样。然后,客户端可以使用路由器或交换机的公共主机 SSH 密钥副本(作为该序列的一部分)对设备进行身份验证。设备通过 Junos OS 演化 版中支持的机制(RSA/DSA 公共字符串或密码认证)对客户端用户进行身份验证。

要使设备能够向客户端应用程序发送 SSH 协议激活消息,请在层次结构级别配置 keep-alive 语句 [edit system services outbound-ssh client client-id]

配置新的出站 SSH 连接

断开连接后,设备开始启动新的出站 SSH 连接。要指定设备在断开连接后如何重新连接到服务器,请在层次结构级别包含 reconnect-strategy 语句 [edit system services outbound-ssh client client-id]

您还可以指定重试次数,并设置重新连接尝试停止之前的时间量。请参阅 为出站 SSH 连接配置激活消息

将出站 SSH 客户端配置为接受 NETCONF 作为可用服务

要将应用程序配置为接受 NETCONF 作为可用服务,请在层次结构级别包含 services netconf 语句 [edit system services outbound-ssh client client-id]

配置出站 SSH 客户端

要配置可用于此出站 SSH 连接的客户端,请在层次结构级别使用 [edit system services outbound-ssh client client-id] 单独的地址语句列出每个客户端:

注意:

出站 SSH 连接支持 IPv4 和 IPv6 地址格式。

为出站 SSH 客户端配置路由实例

要使用管理路由实例,请先使用命令启用mgmt_junosset system management-instance路由实例。

要使用任何其他路由实例,请先在层次结构中 [edit routing-instances] 配置路由实例。

如果未指定路由实例,设备将使用默认路由表建立出站 SSH 连接。

在指定的 TCP 端口上配置 NETCONF-over-SSH 连接

Junos OS 演化版 允许您将传入的 NETCONF 连接限制为指定的 TCP 端口,而无需配置防火墙。要配置用于 NETCONF-over-SSH 连接的 TCP 端口,请在层次结构级别包含 port 该语句 [edit system services netconf ssh] 。配置的端口仅接受 NETCONF-over-SSH 会话。此端口的常规 SSH 会话请求将被拒绝。

您可以按照 RFC 4742 中使用安全 外壳上的 NETCONF 配置协议 (SSH) 中指定的默认端口 SSH 进行 NETCONF 连接,也可以配置 1 到 65535 之间的任何端口。

注意:
  • 默认 SSH 端口 (22) 继续接受 NETCONF 会话,即使配置了 NETCONF 服务器端口也是如此。要禁止 SSH 端口接受 NETCONF 会话,请在登录事件脚本中指定此项。

  • 我们不建议为 FTP (21) 和 Telnet (23) 服务配置默认端口来配置 NETCONF-over-SSH 连接。