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 作为接入服务,请在[edit system services]层次结构级别包含以下telnet语句:

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

或者,您可以包含以下一个或两个语句来更改默认值:

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

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

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

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

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

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

配置 Finger Service,以便远程访问路由器

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

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

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

默认情况下,路由器或交换机每分钟支持有限数量的同时 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 控制用户访问,请在[edit systems services ssh]层次结构级别包含语root-login句:

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. [edit system services ssh]层次结构级别配置sftp-server语句:
  2. 提交配置。

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

配置 SSH 协议版本

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

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

配置客户端活动机制

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

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

配置 SSH 指纹散列算法

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

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 允许的证书主体列表的程序。

禁用 SSH

如果启用了 SSH 并希望禁用它,只需从[edit system services]层次结构级别中删除该ssh语句。

如果只想禁用外部 SSH,请在[edit system services ssh]层级使用access-disable-external语句。

从 Junos OS 21.4R1 版开始,安装了 VM 主机的 Junos 平台默认启用 SSH。默认启用 SSH 时,您无法像往常一样通过 [edit system services] 层次结构禁用它。相反,您可以配置防火墙过滤器以拒绝 SSH 访问:

分步过程

按照以下步骤配置防火墙过滤器以拒绝 SSH 访问:

  1. 定义筛选器术语 1。此术语拒绝来自 SSH 的 TCP 流量:

  2. 定义筛选器术语 2。该术语允许未被过滤器术语 1拒绝的任何流量:

有关使用防火墙过滤器禁用 SSH 的详细信息,请参阅 配置过滤器以阻止 Telnet 和 SSH 访问

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- Base64 编码ED25519密钥。

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

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

配置对 SCP 文件传输的支持

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

注意:

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

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

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

更新 SSH 主机密钥信息

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

手动检索主机密钥信息

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

从文件导入主机密钥信息

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

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

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

注意:

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

默认情况下,Junos OS Evolved 支持以下密码集:

  • 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 Evolved 支持以下一组密钥交换方法:

  • 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 连接配置设备,请在[edit system services]层次结构级别包含语outbound-ssh句:

[edit system services outbound-ssh]

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

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

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

要配置路由器或交换机的设备标识符,请在[edit system services outbound-ssh client client-id]层次结构级别包含语device-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 主机密钥,请在[edit system services outbound-ssh client client-id]层次结构级别包含以下secret语句:

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

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

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

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

配置新的出站 SSH 连接

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

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

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

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

配置出站 SSH 客户端

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

注意:

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

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

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

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

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

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

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

您可以按照 RFC 4742 使用通过安全外壳 (SSH 的 NETCONF 配置协议)中的规定,通过 SSH 进行 NETCONF 连接配置默认端口 830,也可以配置从 1 到 65535 的任意端口。

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

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