13-SSH2.0配置
本章节下载: 13-SSH2.0配置 (605.6 KB)
目 录
· 设备运行于FIPS模式时,本特性的部分配置相对于非FIPS模式有所变化,具体差异请见本文相关描述。有关FIPS模式的详细介绍请参见“安全配置指导”中的“FIPS”。
· 本章中典型配置举例中的配置,如无特殊说明,均以设备运行在非FIPS模式下的命令行为准。
SSH是Secure Shell(安全外壳)的简称。用户通过一个不能保证安全的网络环境远程登录到设备时,SSH可以利用加密和强大的认证功能提供安全保障,保护设备不受诸如IP地址欺诈、明文密码截取等攻击。
设备支持SSH服务器功能,可以接受多个SSH客户端的连接。同时,设备还支持SSH客户端功能,允许用户与支持SSH服务器功能的设备建立SSH连接,从而实现从本地设备通过SSH登录到远程设备上。
· 目前,设备作为SSH服务器时,非FIPS模式下,支持SSH2和SSH1两个版本;FIPS模式下,仅支持SSH2版本;设备作为SSH客户端时,只支持SSH2版本。
· 如无特殊说明,文中的SSH均指SSH2。
在整个通讯过程中,为实现SSH的安全连接,服务器端与客户端要经历如下五个阶段:
表1-1 SSH服务器端与客户端建立连接的五个阶段
阶段 |
说明 |
详细内容 |
版本号协商阶段 |
SSH目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本 |
|
密钥和算法协商阶段 |
SSH支持多种算法,双方根据本端和对端支持的算法,协商出最终使用的算法,并通过DH交换,生成相同的会话密钥和会话ID |
|
认证阶段 |
SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证 |
|
会话请求阶段 |
认证通过后,SSH客户端向服务器端发送会话请求 |
|
交互会话阶段 |
会话请求通过后,SSH服务器端和客户端进行信息的交互 |
具体步骤如下:
(1) 服务器打开端口22,等待客户端连接。
(2) 客户端向服务器端发起TCP初始连接请求。
(3) TCP连接建立后,服务器向客户端发送第一个报文,包括版本标志字符串,格式为“SSH-<主协议版本号>.<次协议版本号>-<软件版本号>”,协议版本号由主版本号和次版本号组成,软件版本号主要是为调试使用。
(4) 客户端收到报文后,首先解析该数据包,通过与服务器端的协议版本号进行对比,决定要使用的协议版本号。如果服务器端的协议版本号比自己的低,且客户端能支持服务器端的低版本,就使用服务器端的低版本协议号,否则使用自己的协议版本号。然后,客户端回应服务器一个报文,包含了客户端决定使用的协议版本号。
(5) 服务器比较客户端发来的版本号,如果服务器支持该版本,则使用该版本,并进入密钥和算法协商阶段,否则,版本协商失败,服务器端断开TCP连接。
上述报文都是采用明文方式传输的。
具体步骤如下:
(1) 服务器端和客户端分别发送算法协商报文给对端,报文中包含自己支持的公钥算法列表、加密算法列表、MAC(Message Authentication Code,消息验证码)算法列表、压缩算法列表等。
(2) 服务器端和客户端根据对端和本端支持的算法列表得出最终使用的算法。任何一种算法协商失败,都会导致服务器端和客户端的算法协商过程失败,服务器将断开与客户端的连接。
(3) 服务器端和客户端利用DH交换(Diffie-Hellman Exchange)算法、主机密钥对等参数,生成会话密钥和会话ID,并完成客户端对服务器身份的验证。
通过以上步骤,服务器端和客户端就取得了相同的会话密钥和会话ID。对于后续传输的数据,两端都会使用会话密钥进行加密和解密,保证了数据传送的安全。会话ID用来标识一个SSH连接,在认证阶段,会话ID还会用于两端的认证过程。
在密钥和算法协商阶段之前,服务器端需要生成DSA或RSA密钥对,他们不仅用于生成会话密钥和会话ID,还用于客户端验证服务器身份。DSA和RSA密钥对的详细介绍请参见“安全配置指导”中的“公钥管理”。
SSH提供两种认证方法:
· password认证:利用AAA(Authentication、Authorization、Accounting,认证、授权和计费)对客户端身份进行认证。客户端向服务器发出password认证请求,将用户名和密码加密后发送给服务器;服务器将该信息解密后得到用户名和密码的明文,通过本地认证或远程认证验证用户名和密码的合法性,并返回认证成功或失败的消息。如果远程认证服务器要求用户进行二次密码认证,则会在发送给服务器端的认证回应消息中携带一个提示信息,该提示信息被服务器端透传给客户端,由客户端输出并要求用户再次输入一个指定类型的密码,当用户提交正确的密码并成功通过认证服务器的验证后,服务器端才会返回认证成功的消息。
· publickey认证:采用数字签名的方法来认证客户端。目前,设备上可以利用DSA和RSA两种公钥算法实现数字签名。客户端发送包含用户名、公钥和公钥算法的publickey认证请求给服务器端。服务器对公钥进行合法性检查,如果不合法,则直接发送失败消息;否则,服务器利用数字签名对客户端进行认证,并返回认证成功或失败的消息。
对于SSH2,除了上述两种认证方法外,还提供了password-publickey认证和any认证:
· password-publickey认证:指定客户端版本为SSH2的用户认证方式为必须同时进行password和publickey两种认证;客户端版本为SSH1的用户认证方式为只要进行其中一种认证即可。
· any认证:不指定用户的认证方式,用户既可以采用password认证,也可以采用publickey认证。
认证阶段的具体步骤如下:
· 客户端向服务器端发送认证请求,认证请求中包含用户名、认证方法(password认证或publickey认证)、与该认证方法相关的内容(如:password认证时,内容为密码)。
· 服务器端对客户端进行认证,如果认证失败,则向客户端发送认证失败消息,其中包含可以再次认证的方法列表。
· 客户端从认证方法列表中选取一种认证方法再次进行认证。
· 该过程反复进行,直到认证成功或者认证次数达到上限,服务器关闭连接为止。
设备作为SSH服务器发起的二次密码认证,仅SSH2及以后版本的SSH客户端才能支持。
认证通过后,客户端向服务器发送会话请求。服务器等待并处理客户端的请求。请求被成功处理后,服务器会向客户端回应SSH_SMSG_SUCCESS包,SSH进入交互会话阶段;否则回应SSH_SMSG_FAILURE包,表示服务器处理请求失败或者不能识别请求。
会话请求成功后,连接进入交互会话阶段。在这个阶段,数据被双向传送。客户端将要执行的命令加密后传给服务器,服务器接收到报文,解密后执行该命令,将执行的结果加密发送给客户端,客户端将接收到的结果解密后显示到终端上。
· 交互会话阶段,用户在客户端可以通过粘贴文本会话的方式执行命令,但文本会话不能超过2000字节,且粘贴的命令最好是同一视图下的命令,否则服务器可能无法正确执行该命令。
· 如果粘贴的文本会话超过2000字节,可以采用将配置文件通过SFTP(Secure FTP,安全的FTP)方式上传到服务器,利用新的配置文件重新启动的方式执行这些命令。
通过SSH连接支持VPN多实例功能,可实现设备作为SSH客户端时,与位于MPLS VPN中的SSH服务器之间建立连接。
如下图所示,私网VPN 1和VPN 2中的用户通过PE接入MPLS骨干网,各VPN之间的业务相互隔离。在PE设备上开启SSH客户端功能后,通过MPLS VPN功能和SSH连接支持VPN多实例功能,可以对各VPN中开启SSH服务器功能的CE设备进行访问,实现从PE设备到CE设备的安全登录和日志文件传输等功能。
图1-1 SSH支持VPN多实例组网应用图
表1-2 SSH服务器配置任务简介
配置任务 |
说明 |
详细配置 |
生成DSA或RSA密钥 |
可选 |
|
使能SSH服务器功能 |
必选 |
|
配置SSH客户端登录时的用户界面 |
必选 |
|
配置客户端的公钥 |
对于采用publickey认证的SSH用户为必选 对于采用password认证的SSH用户为可选 |
|
配置SSH用户并指定服务类型和认证方式 |
可选 |
|
配置服务器上的SSH管理功能 |
可选 |
|
配置SSH服务器发送报文的DSCP优先级 |
可选 |
服务器端的DSA或RSA密钥对,用于在密钥和算法协商阶段生成会话密钥和会话ID,以及客户端认证服务器。
表1-3 生成DSA或RSA密钥
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
生成本地DSA或RSA密钥对 |
public-key local create { dsa | rsa } |
必选 缺省情况下,不存在任何DSA和RSA密钥对 |
· public-key local create命令的详细介绍请参见“安全命令参考”中的“公钥管理”。
· SSH用户登录设备时,若设备未配置本地DSA或RSA密钥,可以自动生成RSA密钥对。
· 虽然一个客户端只会采用DSA和RSA公钥算法中的一种来认证服务器,但是由于不同客户端支持的公钥算法不同,为了确保客户端能够成功登录服务器,建议在服务器上生成DSA和RSA两种密钥对。
· 通过public-key local create rsa命令生成RSA密钥对时,将同时生成两个密钥对——服务器密钥对和主机密钥对,二者都包括一个公钥和一个私钥。SSH1中利用SSH服务器端的服务器公钥加密会话密钥,以保证会话密钥传输的安全;SSH2中通过DH算法在SSH服务器和SSH客户端上生成会话密钥,不需要传输会话密钥,因此SSH2中没有利用服务器密钥对。
· 通过public-key local create dsa命令生成DSA密钥对时,只生成一个主机密钥对。SSH1中不支持DSA算法。
表1-4 使能SSH服务器功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能SSH服务器功能 |
ssh server enable |
必选 缺省情况下,SSH服务器功能处于关闭状态 |
设备作为SCP服务器时,同一时间只允许有一个SCP用户访问SCP服务器。
SSH客户端通过VTY用户界面访问设备。因此,需要配置SSH客户端登录时采用的VTY用户界面,使其支持SSH远程登录协议。配置结果在客户端下次请求登录时生效。
表1-5 配置SSH客户端登录时的用户界面
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入一个或多个VTY用户界面视图 |
user-interface vty number [ ending-number ] |
- |
配置登录用户界面的认证方式为scheme方式 |
authentication-mode scheme |
必选 缺省情况下,用户界面认证为password方式 |
配置所在用户界面支持SSH协议 |
protocol inbound { all | ssh } |
可选 缺省情况下,系统支持所有的协议,即支持Telnet和SSH |
· authentication-mode命令和protocol inbound命令的详细介绍,请参见“基础配置命令参考”中的“登录设备”。
· 如果在该用户界面上配置支持的协议是SSH,为确保配置成功,请务必配置登录用户界面的认证方式为authentication-mode scheme(采用AAA认证)。
· 如果某用户界面已经配置成支持SSH协议,则无法更改用户界面的认证方式,除非先取消用户界面支持SSH协议。
本配置适用于采用publickey认证的SSH用户,采用password认证的SSH用户,不必进行本配置。
如果SSH用户采用publickey认证方式登录服务器,则需要在服务器端配置客户端的DSA或RSA主机公钥,并在客户端为该SSH用户指定与主机公钥对应的DSA或RSA主机私钥,以便服务器端采用数字签名对客户端进行验证。
服务器端可以通过手工配置和从公钥文件中导入两种方式来配置客户端的公钥:
· 手工配置客户端的公钥:采用手工输入或拷贝粘贴的方式将客户端的公钥配置到服务器上。这种方式要求手工输入或拷贝粘贴的主机公钥必须是未经转换的DER(Distinguished Encoding Rules,特异编码规则)公钥编码格式。
· 从公钥文件中导入客户端的公钥:自动将客户端公钥文件中的客户端公钥转换为PKCS(Public Key Cryptography Standards,公共密钥加密标准)编码的形式导入到服务器上。这种方式需要事先将客户端的公钥文件通过FTP/TFTP以二进制(binary)方式传输到服务器上。
建议选用从公钥文件导入的方式配置客户端公钥。
表1-6 手工配置客户端的公钥
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入公钥视图 |
public-key peer keyname |
- |
进入公钥编辑视图 |
public-key-code begin |
- |
配置客户端的公钥 |
直接输入公钥内容 |
必选 在输入公钥内容时,字符之间可以有空格,也可以按回车键继续输入数据 |
退回公钥视图,并保存配置的主机公钥 |
public-key-code end |
- 退出公钥编辑视图时,系统自动保存配置的公钥密钥 |
退回系统视图 |
peer-public-key end |
- |
表1-7 从公钥文件中导入客户端的公钥
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
从公钥文件中导入SSH用户的公钥 |
public-key peer keyname import sshkey filename |
必选 |
关于客户端的公钥的配置介绍,请参见“安全配置指导”中的“公钥管理”。
· 对于使用publickey认证方式登录设备的用户,必须在设备上创建相应的SSH用户、并指定服务器类型、认证方式以及客户端的公钥。
· 对于使用password认证方式登录设备的用户,用户的账号信息配置在设备或者远程认证服务器(如RADIUS服务器)上(前者适用于本地认证,后者适用于远程认证),并不要求在设备上通过本配置创建相应的SSH用户。如果创建了相应的SSH用户,则必须保证该服务类型以及认证方式正确。关于本地及远程认证的相关配置请参见“安全配置指导”中的“AAA”。
通过本配置,可以在创建SSH用户的同时,指定SSH用户的服务类型和认证方式:
· 服务类型:Stelnet、SFTP和SCP。Stelnet即Secure Telnet,安全的Telnet服务,详细内容请参见“2.1 SFTP简介”;SCP详细内容请参见“3.1 SCP简介”。
· 认证方式:password认证、publickey认证、password-publickey认证、any认证。
表1-8 配置SSH用户并指定服务类型和认证方式
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
创建SSH用户,并指定SSH用户的服务类型和认证方式 |
SSH用户的服务类型为stelnet |
非FIPS模式下: ssh user username service-type stelnet authentication-type { password | { any | password-publickey | publickey } assign publickey keyname&<1-6> } FIPS模式下: ssh user username service-type stelnet authentication-type { password | password-publickey assign publickey keyname&<1-6> } |
二者必选其一 |
SSH用户的服务类型为all、scp或sftp |
非FIPS模式下: ssh user username service-type { all | scp | sftp } authentication-type { password | { any | password-publickey | publickey } assign publickey keyname&<1-6> work-directory directory-name } FIPS模式下: ssh user username service-type { all | scp | sftp } authentication-type { password | password-publickey assign publickey keyname&<1-6> work-directory directory-name } |
· 对于AAA用户,即使没有创建对应的SSH用户,只要能够通过AAA认证,且设置的服务类型为SSH,则该用户仍然可以通过password认证方式登录服务器。
· SSH1不支持服务类型scp与sftp。如果客户端采用SSH1版本登录服务器,则必须在服务器上配置服务类型为stelnet或者all。否则,客户端无法登录服务器。
· SCP与SFTP用户登录时使用的工作目录与用户使用的认证方式有关。只采用publickey认证方式的用户,使用的工作目录为通过ssh user命令为该用户设置的工作目录;只采用password认证方式的用户,使用的工作目录为通过AAA授权的工作目录;同时采用publickey和password两种认证方式的用户,使用的工作目录为通过ssh user命令为该用户设置的工作目录。
· 配置的认证方式和用户公钥,对于已经登录的SSH用户不会生效,只在SSH用户下次登录时生效。
· FIPS模式下,SSH服务器不支持any认证或publickey认证方式。
· 仅使用publickey认证方式的用户登录服务器后,可以访问的命令级别为在用户界面上通过user privilege level命令配置的级别。
· 使用password认证方式的用户登录服务器后,用户可以访问的命令级别由AAA来授权。
SSH的管理功能包括:
· 设置SSH服务器是否兼容SSH1版本的客户端
· 设置RSA服务器密钥对的更新时间,此配置仅对SSH客户端版本为SSH1的用户有效
· 设置SSH用户认证的超时时间
· 设置SSH用户请求连接的认证尝试次数
通过定时更新服务器密钥以及对用户认证时间、认证次数的限制,可以防止恶意地对密钥和用户名的猜测和破解,从而提高了SSH连接的安全性。
表1-9 配置服务器上的SSH管理功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
设置SSH服务器兼容SSH1版本的客户端 |
ssh server compatible-ssh1x [ enable ] |
可选 缺省情况下,SSH服务器兼容SSH1版本的客户端 FIPS模式下,不支持本命令 |
设置RSA服务器密钥对的更新时间 |
ssh server rekey-interval hours |
可选 缺省情况下,系统不更新RSA服务器密钥对 FIPS模式下,不支持本命令 |
设置SSH用户的认证超时时间 |
ssh server authentication-timeout time-out-value |
可选 缺省情况下,SSH用户的认证超时时间为60秒 |
设置SSH认证尝试的最大次数 |
ssh server authentication-retries times |
可选 缺省情况下,SSH连接认证尝试的最大次数为3次 |
SSH客户端通过publickey和password两种方式进行认证尝试的次数总和,不能超过ssh server authentication-retries命令配置的SSH连接认证尝试次数,否则,客户端认证失败,无法登录SSH服务器。
在IPv4和IPv6报文头中,包含一个8bit的字段,用于标识IP报文的服务类型。在IPv4报文中,这个字段称为ToS字段;在IPv6报文中,称为Traffic class字段。RFC 2474对这8个bit进行了定义,将前6个bit定义为DSCP优先级,最后2个bit作为保留位。在报文传输的过程中,DSCP优先级可以被网络设备识别,并作为报文传输优先程度的参考。
用户可以对SSH服务器发送报文的DSCP优先级进行配置。
表1-10 配置SSH服务器发送报文的DSCP优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置ISSH服务器发送Pv4报文的DSCP优先级 |
ssh server dscp dscp-value |
可选 缺省情况下,SSH服务器发送Pv4报文的DSCP优先级为16 |
配置SSH服务器发送IPv6报文的DSCP优先级 |
ssh server ipv6 dscp dscp-value |
可选 缺省情况下,SSH服务器发送IPv6报文的DSCP优先级为0 |
表1-11 SSH客户端配置任务简介
配置任务 |
说明 |
详细配置 |
为SSH客户端指定源IP地址或源接口 |
可选 |
|
配置SSH客户端是否支持首次认证 |
可选 |
|
建立SSH客户端和服务器端的连接 |
必选 |
|
配置SSH客户端发送报文的DSCP优先级 |
可选 |
用户可以通过以下配置,为SSH客户端指定源IP地址或者源接口,这样客户端可以用指定的IP地址或接口地址访问SSH服务器,增加了业务的可管理性。
表1-12 为SSH客户端指定源IP地址或源接口
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
为SSH客户端指定源IP地址或源接口 |
为SSH客户端指定源IPv4地址或源接口 |
ssh client source { ip ip-address | interface interface-type interface-number } |
二者必选其一 缺省情况下,客户端用设备路由指定的接口地址访问SSH服务器 |
为SSH客户端指定源IPv6地址或源接口 |
ssh client ipv6 source { ipv6 ipv6-address | interface interface-type interface-number } |
当设备作为SSH客户端和服务器端连接时,可以设置SSH客户端对访问的SSH服务器是否进行首次认证。
· 如果支持首次认证,则当SSH客户端首次访问服务器,而客户端没有配置服务器端的主机公钥时,用户可以选择继续访问该服务器,并在客户端保存该主机公钥;当用户下次访问该服务器时,就以保存的主机公钥来认证该服务器。
· 如果不支持首次认证,则当客户端没有配置服务器端的主机公钥时,客户端将拒绝访问该服务器。用户必须事先将要访问的服务器端的主机公钥配置在本地,同时指定要连接的服务器端的主机公钥名称,以便客户端对连接的服务器进行认证。
表1-13 配置SSH客户端支持首次认证
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
设置SSH客户端对访问的SSH服务器进行首次认证 |
ssh client first-time [ enable ] |
可选 缺省情况下,客户端进行首次认证 |
如果配置SSH客户端不支持首次认证,则需要在客户端配置服务器端的主机公钥,并为要连接的服务器指定主机公钥名称,
表1-14 配置SSH客户端不支持首次认证
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
设置SSH客户端对访问的SSH服务器不进行首次认证 |
undo ssh client first-time |
必选 缺省情况下,客户端进行首次认证 |
配置服务器端的主机公钥 |
必选 在客户端配置服务器端主机公钥的方法,与在服务器端配置客户端公钥的方法相同 |
|
在客户端上指定要连接的服务器端的主机公钥名称 |
ssh client authentication server server assign publickey keyname |
必选 |
表1-15 建立SSH客户端和服务器端的连接
操作 |
命令 |
说明 |
|
建立SSH客户端和服务器端的连接,并指定公钥算法、客户端和服务器的首选加密算法、首选HMAC算法和首选密钥交换算法 |
建立SSH客户端和IPv4服务器端的连接,并指定公钥算法、客户端和服务器的首选加密算法、首选HMAC算法和首选密钥交换算法 |
非FIPS模式下: ssh2 server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key { dsa | rsa } | prefer-ctos-cipher { 3des | aes128 | des } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 } | prefer-kex { dh-group-exchange | dh-group1 | dh-group14 } | prefer-stoc-cipher { 3des | aes128 | des } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 } ] * FIPS模式下: ssh2 server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key rsa | prefer-ctos-cipher { aes128 | aes256 } | prefer-ctos-hmac { sha1 | sha1-96 } | prefer-kex dh-group14 | prefer-stoc-cipher { aes128 | aes256 } | prefer-stoc-hmac { sha1 | sha1-96 } ] * |
二者必选其一 必须在用户视图下执行本命令 |
建立SSH客户端和IPv6服务器端的连接,并指定公钥算法、客户端和服务器的首选加密算法、首选HMAC算法和首选密钥交换算法 |
非FIPS模式下: ssh2 ipv6 server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key { dsa | rsa } | prefer-ctos-cipher { 3des | aes128 | des } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 } | prefer-kex { dh-group-exchange | dh-group1 | dh-group14 } | prefer-stoc-cipher { 3des | aes128 | des } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 } ] * FIPS模式下: ssh2 ipv6 server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key rsa | prefer-ctos-cipher { aes128 | aes256 } | prefer-ctos-hmac { sha1 | sha1-96 } | prefer-kex dh-group14 | prefer-stoc-cipher { aes128 | aes256 } | prefer-stoc-hmac { sha1 | sha1-96 } ] * |
在IPv4和IPv6报文头中,包含一个8bit的字段,用于标识IP报文的服务类型。在IPv4报文中,这个字段称为ToS字段;在IPv6报文中,称为Traffic class字段。RFC 2474对这8个bit进行了定义,将前6个bit定义为DSCP优先级,最后2个bit作为保留位。在报文传输的过程中,DSCP优先级可以被网络设备识别,并作为报文传输优先程度的参考。
用户可以对SSH客户端发送报文的DSCP优先级进行配置。
表1-16 配置SSH客户端发送报文的DSCP优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置SSH客户端发送IPv4报文的DSCP优先级 |
ssh client dscp dscp-value |
可选 缺省情况下,SSH客户端发送IPv4报文的DSCP优先级为16 |
配置SSH客户端发送IPv6报文的DSCP优先级 |
ssh client ipv6 dscp dscp-value |
可选 缺省情况下,SSH客户端发送IPv6报文的DSCP优先级为0 |
在完成上述配置后,在任意视图下执行display命令,可以显示配置后SSH的运行情况,通过查看显示信息,验证配置的效果。
表1-17 SSH协议显示和维护
操作 |
命令 |
显示当前为SFTP客户端设置的源IP地址或者源接口 |
display sftp client source [ | { begin | exclude | include } regular-expression ] |
显示当前为SSH客户端设置的源IP地址或者源接口 |
display ssh client source [ | { begin | exclude | include } regular-expression ] |
在SSH服务器端显示该服务器的状态信息或会话信息 |
display ssh server { status | session } [ | { begin | exclude | include } regular-expression ] |
在SSH客户端显示客户端保存的服务器端的主机公钥和服务器的对应关系 |
display ssh server-info [ | { begin | exclude | include } regular-expression ] |
在SSH服务器端显示SSH用户信息 |
display ssh user-information [ username ] [ | { begin | exclude | include } regular-expression ] |
显示本地密钥对中的公钥部分 |
display public-key local { dsa | rsa } public [ | { begin | exclude | include } regular-expression ] |
显示保存在本地的远端主机的公钥信息 |
display public-key peer [ brief | name publickey-name ] [ | { begin | exclude | include } regular-expression ] |
display public-key local和display public-key peer命令的详细介绍请参见“安全 命令参考”中的“公钥配置”。
如图1-2,配置Host(SSH客户端)与Switch建立本地连接。Host采用SSH协议登录到Switch上,以保证数据信息交换的安全。SSH用户采用的认证方式为password认证,用户名和密码保存在Switch上。
图1-2 SSH password认证配置组网图
(1) 配置SSH服务器
# 生成RSA密钥对。
<Switch> system-view
[Switch] public-key local create rsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++
++++++++++++++
+++++
++++++++
# 生成DSA密钥对。
[Switch] public-key local create dsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
# 启动SSH服务器。
[Switch] ssh server enable
# 配置VLAN接口1的IP地址,客户端将通过该地址连接SSH服务器。
[Switch] interface vlan-interface 1
[Switch-Vlan-interface1] ip address 192.168.1.40 255.255.255.0
[Switch-Vlan-interface1] quit
# 设置SSH客户端登录用户界面的认证方式为AAA认证。
[Switch] user-interface vty 0 15
[Switch-ui-vty0-15] authentication-mode scheme
# 设置Switch上远程用户登录协议为SSH。
[Switch-ui-vty0-15] protocol inbound ssh
[Switch-ui-vty0-15] quit
# 创建本地用户client001,并设置用户访问的命令级别为3。
[Switch] local-user client001
[Switch-luser-client001] password simple aabbcc
[Switch-luser-client001] service-type ssh
[Switch-luser-client001] authorization-attribute level 3
[Switch-luser-client001] quit
# 配置SSH用户client001的服务类型为Stelnet,认证方式为password认证。(此步骤可以不配置)
[Switch] ssh user client001 service-type stelnet authentication-type password
(2) SSH客户端建立与SSH服务器的连接
SSH客户端软件有很多,例如PuTTY、OpenSSH等。本文中仅以客户端软件PuTTY0.58为例,说明SSH客户端的配置方法。
# 建立与SSH服务器端的连接。
打开PuTTY.exe程序,出现如图1-3所示的客户端配置界面。在“Host Name(or IP address)”文本框中输入SSH服务器的IP地址为192.168.1.40。
图1-3 SSH客户端配置界面(1)
在图1-3中,单击<Open>按钮。按提示输入用户名client001及密码aabbcc,即可进入Switch的配置界面。
如图1-4,配置Host(SSH客户端)与Switch建立本地连接。Host采用SSH协议登录到Switch上,以保证数据信息交换的安全。SSH用户采用的认证方式为publickey认证,公钥算法为RSA。
图1-4 SSH publickey配置组网图
在服务器的配置过程中需要指定客户端的公钥信息,因此建议首先完成客户端密钥对的配置,再进行服务器的配置。
(1) 配置SSH客户端
# 生成RSA密钥对。
在客户端运行PuTTYGen.exe,在参数栏中选择“SSH-2 RSA”,点击<Generate>,产生客户端密钥对。
图1-5 生成客户端密钥(1)
在产生密钥对的过程中需不停的移动鼠标,鼠标移动仅限于下图蓝色框中除绿色标记进程条外的地方,否则进程条的显示会不动,密钥对将停止产生,见图1-6。
密钥对产生后,点击<Save public key>,输入存储公钥的文件名key.pub,点击<保存>按钮。
图1-7 生成客户端密钥(3)
点击<Save private key>存储私钥,弹出警告框,提醒是否保存没做任何保护措施的私钥,点击<Yes>,输入私钥文件名为private.ppk,点击保存。
图1-8 生成客户端密钥(4)
客户端生成密钥对后,需要将保存的公钥文件key.pub通过FTP/TFTP方式上传到服务器。
(2) 配置SSH服务器
# 生成RSA密钥对。
<Switch> system-view
[Switch] public-key local create rsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++
++++++++++++++
+++++
++++++++
# 生成DSA密钥对。
[Switch] public-key local create dsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
# 启动SSH服务器。
[Switch] ssh server enable
# 配置VLAN接口1的IP地址,客户端将通过该地址连接SSH服务器。
[Switch] interface vlan-interface 1
[Switch-Vlan-interface1] ip address 192.168.1.40 255.255.255.0
[Switch-Vlan-interface1] quit
# 设置用户接口上认证模式为AAA认证。
[Switch] user-interface vty 0 15
[Switch-ui-vty0-15] authentication-mode scheme
# 设置Switch上远程用户登录协议为SSH。
[Switch-ui-vty0-15] protocol inbound ssh
# 设置用户能访问的命令级别为3。
[Switch-ui-vty0-15] user privilege level 3
[Switch-ui-vty0-15] quit
# 从文件key.pub中导入远端的公钥,并命名为Switch001。
[Switch] public-key peer Switch001 import sshkey key.pub
# 设置SSH用户client002的认证方式为publickey,并指定公钥为Switch001。
[Switch] ssh user client002 service-type stelnet authentication-type publickey assign publickey Switch001
(3) SSH客户端建立与SSH服务器的连接
# 指定私钥文件,并建立与SSH服务器的连接。
打开PuTTY.exe程序,出现如图1-9所示的客户端配置界面。在“Host Name(or IP address)”文本框中输入SSH服务器的IP地址为192.168.1.40。
图1-9 SSH客户端配置界面(1)
单击左侧导航栏“Connection->SSH”下面的“Auth”(认证),出现如图1-10的界面。单击<Browse…>按钮,弹出文件选择窗口。选择与配置到服务器端的公钥对应的私钥文件private.ppk。
图1-10 SSH客户端配置界面(2)
如图1-10,单击<Open>按钮。按提示输入用户名client002,即可进入Switch的配置界面。
如图1-11,配置Switch A作为客户端,采用SSH协议登录到Switch B上。SSH用户采用的认证方式为password认证,用户名为client001,密码为aabbcc。
图1-11 设备作为SSH客户端配置组网图
(1) 配置SSH服务器
# 生成RSA密钥对。
<SwitchB> system-view
[SwitchB] public-key local create rsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++
++++++++++++++
+++++
++++++++
# 生成DSA密钥对。
[SwitchB] public-key local create dsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
# 启动SSH服务器。
[SwitchB] ssh server enable
# 配置VLAN接口1的IP地址,客户端将通过该地址连接SSH服务器。
[SwitchB] interface vlan-interface 1
[SwitchB-Vlan-interface1] ip address 10.165.87.136 255.255.255.0
[SwitchB-Vlan-interface1] quit
# 设置SSH客户端登录用户界面的认证方式为AAA认证。
[SwitchB] user-interface vty 0 15
[SwitchB-ui-vty0-15] authentication-mode scheme
# 设置Switch B上远程用户登录协议为SSH。
[SwitchB-ui-vty0-15] protocol inbound ssh
[SwitchB-ui-vty0-15] quit
# 创建本地用户client001。
[SwitchB] local-user client001
[SwitchB-luser-client001] password simple aabbcc
[SwitchB-luser-client001] service-type ssh
[SwitchB-luser-client001] authorization-attribute level 3
[SwitchB-luser-client001] quit
# 配置SSH用户client001的服务类型为Stelnet,认证方式为password认证。(此步骤可以不配置)
[SwitchB] ssh user client001 service-type stelnet authentication-type password
(2) SSH客户端建立与SSH服务器的连接
# 配置VLAN接口1的IP地址。
<SwitchA> system-view
[SwitchA] interface vlan-interface 1
[SwitchA-Vlan-interface1] ip address 10.165.87.137 255.255.255.0
[SwitchA-Vlan-interface1] quit
[SwitchA] quit
· 如果客户端支持首次认证,则可以直接与服务器建立连接。
# 建立到服务器10.165.87.136的SSH连接。
<SwitchA> ssh2 10.165.87.136
Username: client001
Trying 10.165.87.136 ...
Press CTRL+K to abort
Connected to 10.165.87.136 ...
The Server is not authenticated. Continue? [Y/N]:y
Do you want to save the server public key? [Y/N]:n
Enter password:
输入正确的密码之后,即可成功登录到Switch B上。
· 如果客户端不支持首次认证,则需要进行如下配置。
# 配置客户端对服务器不进行首次认证。
[SwitchA] undo ssh client first-time
# 在客户端配置SSH服务器端的主机公钥。在公钥编辑视图输入服务器端的主机公钥,即在服务器端通过display public-key local dsa public命令显示的公钥内容。
[SwitchA] public-key peer key1
[SwitchA-pkey-public-key] public-key-code begin
[SwitchA-pkey-key-code]308201B73082012C06072A8648CE3804013082011F0281810
0D757262C4584C44C211F18BD96E5F0
[SwitchA-pkey-key-code]61C4F0A423F7FE6B6B85B34CEF72CE14A0D3A5222FE08CECE
65BE6C265854889DC1EDBD13EC8B274
[SwitchA-pkey-key-code]DA9F75BA26CCB987723602787E922BA84421F22C3C89CB9B0
6FD60FE01941DDD77FE6B12893DA76E
[SwitchA-pkey-key-code]EBC1D128D97F0678D7722B5341C8506F358214B16A2FAC4B3
68950387811C7DA33021500C773218C
[SwitchA-pkey-key-code]737EC8EE993B4F2DED30F48EDACE915F0281810082269009E
14EC474BAF2932E69D3B1F18517AD95
[SwitchA-pkey-key-code]94184CCDFCEAE96EC4D5EF93133E84B47093C52B20CD35D02
492B3959EC6499625BC4FA5082E22C5
[SwitchA-pkey-key-code]B374E16DD00132CE71B020217091AC717B612391C76C1FB2E
88317C1BD8171D41ECB83E210C03CC9
[SwitchA-pkey-key-code]B32E810561C21621C73D6DAAC028F4B1585DA7F42519718CC
9B09EEF0381840002818000AF995917
[SwitchA-pkey-key-code]E1E570A3F6B1C2411948B3B4FFA256699B3BF871221CC9C5D
F257523777D033BEE77FC378145F2AD
[SwitchA-pkey-key-code]D716D7DB9FCABB4ADBF6FB4FDB0CA25C761B308EF53009F71
01F7C62621216D5A572C379A32AC290
[SwitchA-pkey-key-code]E55B394A217DA38B65B77F0185C8DB8095522D1EF044B465E
8716261214A5A3B493E866991113B2D
[SwitchA-pkey-key-code]485348
[SwitchA-pkey-key-code] public-key-code end
[SwitchA-pkey-public-key] peer-public-key end
# 指定服务器10.165.87.136对应的主机公钥名称为key1。
[SwitchA] ssh client authentication server 10.165.87.136 assign publickey key1
[SwitchA] quit
# 建立到服务器10.165.87.136的SSH连接。
<SwitchA> ssh2 10.165.87.136
Username: client001
Trying 10.165.87.136
Press CTRL+K to abort
Connected to 10.165.87.136...
Enter password:
输入正确的密码之后,即可成功登录到Switch B上。
如图1-12,配置Switch A作为客户端,采用SSH协议登录到Switch B上。SSH用户采用的认证方式为publickey认证,公钥算法为DSA。
图1-12 设备作为SSH客户端配置组网图
在服务器的配置过程中需要指定客户端的公钥信息,因此建议首先完成客户端密钥对的配置,再进行服务器的配置。
(1) 配置SSH客户端
# 配置VLAN接口1的IP地址。
<SwitchA> system-view
[SwitchA] interface vlan-interface 1
[SwitchA-Vlan-interface1] ip address 10.165.87.137 255.255.255.0
[SwitchA-Vlan-interface1] quit
# 生成DSA密钥对。
[SwitchA] public-key local create dsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
# 将生成的DSA主机公钥导出到指定文件key.pub中。
[SwitchA] public-key local export dsa ssh2 key.pub
[SwitchA] quit
客户端生成密钥对后,需要将保存的公钥文件key.pub通过FTP/TFTP方式上传到服务器。
(2) 配置SSH服务器
# 生成RSA密钥对。
<SwitchB> system-view
[SwitchB] public-key local create rsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++
++++++++++++++
+++++
++++++++
# 生成DSA密钥对。
[SwitchB] public-key local create dsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
# 启动SSH服务器。
[SwitchB] ssh server enable
# 配置VLAN接口1的IP地址,客户端将通过该地址连接SSH服务器。
[SwitchB] interface vlan-interface 1
[SwitchB-Vlan-interface1] ip address 10.165.87.136 255.255.255.0
[SwitchB-Vlan-interface1] quit
# 设置SSH客户端登录用户界面的认证方式为AAA认证。
[SwitchB] user-interface vty 0 15
[SwitchB-ui-vty0-15] authentication-mode scheme
# 设置Switch B上远程用户登录协议为SSH。
[SwitchB-ui-vty0-15] protocol inbound ssh
# 设置用户能访问的命令级别为3。
[SwitchB-ui-vty0-15] user privilege level 3
[SwitchB-ui-vty0-15] quit
# 从文件key.pub中导入远端的公钥。
[SwitchB] public-key peer Switch001 import sshkey key.pub
# 设置SSH用户client002的认证方式为publickey,并指定公钥为Switch001。
[SwitchB] ssh user client002 service-type stelnet authentication-type publickey assign publickey Switch001
(3) SSH客户端建立与SSH服务器的连接
# 建立到服务器10.165.87.136的SSH连接。
<SwitchA> ssh2 10.165.87.136
Username: client002
Trying 10.165.87.136 ...
Press CTRL+K to abort
Connected to 10.165.87.136 ...
The Server is not authenticated. Continue? [Y/N]:y
Do you want to save the server public key? [Y/N]:n
之后,用户就可成功登录到Switch B上。
SFTP是Secure FTP的简称,是SSH 2.0中新增的功能。
SFTP建立在SSH连接的基础之上,它使得远程用户可以安全地登录设备,进行文件管理和文件传送等操作,为数据传输提供了更高的安全保障。同时,由于设备支持作为客户端的功能,用户可以从本地设备安全登录到远程设备上,进行文件的安全传输。
通过SSH连接支持VPN多实例功能,作为SFTP客户端的设备可与位于MPLS VPN中的SFTP服务器之间建立连接。关于该功能的详细介绍,请参考1.1.3 SSH支持VPN多实例。
· 已经完成SSH服务器的配置,具体配置步骤请参见“1.2 配置设备作为SSH服务器”。
· SSH用户的服务类型设置为sftp或者all。具体配置步骤请参见“1.2.6 配置SSH用户并指定服务类型和认证方式”。
该配置任务用于启动SFTP服务,使客户端能用SFTP的方式登录到服务器。
表2-1 启动SFTP服务器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动SFTP服务器 |
sftp server enable |
必选 缺省情况下,SFTP服务器处于关闭状态 |
· 设备作为SFTP服务器时,同时只能有一个用户访问SFTP服务器。如果以WinSCP作为SFTP客户端,则无法直接编辑服务器上的文件,需要采用将服务器上的文件下载到本地,在本地修改后上传到服务器的方式实现对文件的编辑。
· 设备作为SFTP服务器时,对客户端的访问操作有级别限制:如果要对设备的文件系统执行写操作(比如上传、删除、创建/删除文件夹),则必须将SFTP登录用户的级别设置为3;如果要对设备的文件系统执行查看和上传操作(不能覆盖和删除文件),则可以将SFTP登录用户的级别设置为2;如果执行其它操作(比如普通的查看操作),则SFTP登录用户的级别不受限制,可以为0~3中的任意级别。
当SFTP用户连接的空闲时间超过设定的阈值后,系统会自动断开此用户的连接,从而有效避免用户长期占用连接而不进行任何操作。
表2-2 配置SFTP用户连接的空闲超时时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
设置SFTP用户连接的空闲超时时间 |
sftp server idle-timeout time-out-value |
可选 缺省情况下,SFTP用户连接的空闲超时时间为10分钟 |
用户可以通过以下配置,使SFTP客户端只能使用指定接口的IP地址或指定IP地址作为源地址建立与SFTP服务器的连接,增加了业务的可管理性。
表2-3 为SFTP客户端指定IP地址或源接口
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
为SFTP客户端指定源IP地址或源接口 |
为SFTP客户端指定源IPv4地址或源接口 |
sftp client source { ip ip-address | interface interface-type interface-number } |
二者必选其一 缺省情况下,客户端用设备路由指定的接口地址访问SFTP服务器 |
为SFTP客户端指定源IPv6地址或源接口 |
sftp client ipv6 source { ipv6 ipv6-address | interface interface-type interface-number } |
该配置任务用来启动SFTP客户端程序,与远程SFTP服务器建立连接,并进入到SFTP客户端视图。
表2-4 建立与SFTP服务器的连接
操作 |
命令 |
说明 |
|
与远程SFTP服务器建立连接,并进入SFTP客户端视图 |
与远程IPv4 SFTP服务器建立连接,并进入SFTP客户端视图 |
非FIPS模式下: sftp server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key { dsa | rsa } | prefer-ctos-cipher { 3des | aes128 | des } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 } | prefer-kex { dh-group-exchange | dh-group1 | dh-group14 } | prefer-stoc-cipher { 3des | aes128 | des } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 } ] * FIPS模式下: sftp ipv6 server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key rsa | prefer-ctos-cipher { aes128 | aes256 } | prefer-ctos-hmac { sha1 | sha1-96 } | prefer-kex dh-group14 | prefer-stoc-cipher { aes128 | aes256 } | prefer-stoc-hmac { sha1 | sha1-96 } ] * |
必选其一 请在用户视图下执行此命令 |
与远程IPv6 SFTP服务器建立连接,并进入SFTP客户端视图 |
非FIPS模式下: sftp ipv6 server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key { dsa | rsa } | prefer-ctos-cipher { 3des | aes128 | des } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 } | prefer-kex { dh-group-exchange | dh-group1 | dh-group14 } | prefer-stoc-cipher { 3des | aes128 | des } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 } ] * FIPS模式下: sftp ipv6 server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key rsa | prefer-ctos-cipher { aes128 | aes256 } | prefer-ctos-hmac { sha1 | sha1-96 } | prefer-kex dh-group14 | prefer-stoc-cipher { aes128 | aes256 } | prefer-stoc-hmac { sha1 | sha1-96 } ] * |
SFTP目录操作包括:改变或显示当前的工作目录、显示指定目录下的文件或目录信息、改变服务器上指定的文件夹的名字、创建或删除目录。
表2-5 SFTP目录操作
操作 |
命令 |
说明 |
进入SFTP客户端视图 |
具体命令请参考2.3.2 |
必选 请在用户视图下执行此命令 |
改变远程SFTP服务器上的工作路径 |
cd [ remote-path ] |
可选 |
返回到上一级目录 |
cdup |
可选 |
显示远程SFTP服务器上的当前工作目录 |
pwd |
可选 |
显示指定目录下的文件列表 |
dir [ -a | -l ] [ remote-path ] |
可选 dir和ls两条命令的作用相同 |
ls [ -a | -l ] [ remote-path ] |
||
改变SFTP服务器上指定的目录的名字 |
rename oldname newname |
可选 |
在远程SFTP服务器上创建新的目录 |
mkdir remote-path |
可选 |
删除SFTP服务器上指定的目录 |
rmdir remote-path&<1-10> |
可选 |
SFTP文件操作包括:改变文件名、下载文件、上传文件、显示文件列表、删除文件。
表2-6 SFTP文件操作
操作 |
命令 |
说明 |
进入SFTP客户端视图 |
具体命令请参考2.3.2 |
必选 请在用户视图下执行此命令 |
改变SFTP服务器上指定的文件的名字 |
rename old-name new-name |
可选 |
从远程服务器上下载文件并存储在本地 |
get remote-file [ local-file ] |
可选 |
将本地的文件上传到远程SFTP服务器 |
put local-file [ remote-file ] |
可选 |
显示指定目录下的文件 |
dir [ -a | -l ] [ remote-path ] |
可选 dir和ls两条命令的作用相同 |
ls [ -a | -l ] [ remote-path ] |
||
删除SFTP服务器上指定的文件 |
delete remote-file&<1-10> |
可选 delete和remove两条命令的功能相同 |
remove remote-file&<1-10> |
本配置用于显示命令的帮助信息,如命令格式、参数配置等。
操作 |
命令 |
说明 |
进入SFTP客户端视图 |
具体命令请参考2.3.2 |
必选 请在用户视图下执行此命令 |
显示SFTP客户端命令的帮助信息 |
help [ all | command-name ] |
必选 |
表2-8 终止与远程SFTP服务器的连接
操作 |
命令 |
说明 |
进入SFTP客户端视图 |
具体命令请参考2.3.2 |
必选 请在用户视图下执行此命令 |
终止与远程SFTP服务器的连接,并退回用户视图 |
bye |
必选其一 bye,exit和quit三条命令的功能相同 |
exit |
||
quit |
在IPv4和IPv6报文头中,包含一个8bit的字段,用于标识IP报文的服务类型。在IPv4报文中,这个字段称为ToS字段;在IPv6报文中,称为Traffic class字段。RFC 2474对这8个bit进行了定义,将前6个bit定义为DSCP优先级,最后2个bit作为保留位。在报文传输的过程中,DSCP优先级可以被网络设备识别,并作为报文传输优先程度的参考。
用户可以对SFTP客户端发送报文的DSCP优先级进行配置。
表2-9 配置SFTP客户端发送报文的DSCP优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置SFTP客户端发送IPv4报文的DSCP优先级 |
sftp client dscp dscp-value |
可选 缺省情况下,SFTP客户端发送IPv4报文的DSCP优先级为16 |
配置SFTP客户端发送IPv6报文的DSCP优先级 |
sftp client ipv6 dscp dscp-value |
可选 缺省情况下,SFTP客户端发送IPv6报文的DSCP优先级为8 |
如图2-1,Switch A和Switch B之间建立SSH连接,Switch A作为SFTP客户端登录到Switch B,进行文件管理和文件传送等操作。SSH用户采用的认证方式为publickey认证,公钥算法为RSA。
图2-1 设备作为SFTP客户端组网图
在服务器的配置过程中需要指定客户端的公钥信息,因此建议首先完成客户端密钥对的配置,再进行服务器的配置。
(1) 配置SFTP客户端
# 配置VLAN接口1的IP地址。
<SwitchA> system-view
[SwitchA] interface vlan-interface 1
[SwitchA-Vlan-interface1] ip address 192.168.0.2 255.255.255.0
[SwitchA-Vlan-interface1] quit
# 生成RSA密钥对。
[SwitchA] public-key local create rsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++
++++++++++++++
+++++
++++++++
# 将生成的RSA主机公钥导出到指定文件pubkey中。
[SwitchA] public-key local export rsa ssh2 pubkey
[SwitchA] quit
客户端生成密钥对后,需要将保存的公钥文件pubkey通过FTP/TFTP方式上传到服务器。
(2) 配置SFTP服务器
# 生成RSA密钥对。
<SwitchB> system-view
[SwitchB] public-key local create rsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++
++++++++++++++
+++++
++++++++
# 生成DSA密钥对。
[SwitchB] public-key local create dsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
# 启动SSH服务器。
[SwitchB] ssh server enable
# 启动SFTP服务器。
[SwitchB] sftp server enable
# 配置VLAN接口1的IP地址,客户端将通过该地址连接SSH服务器。
[SwitchB] interface vlan-interface 1
[SwitchB-Vlan-interface1] ip address 192.168.0.1 255.255.255.0
[SwitchB-Vlan-interface1] quit
# 设置SSH客户端登录用户界面的认证方式为AAA认证。
[SwitchB] user-interface vty 0 15
[SwitchB-ui-vty0-15] authentication-mode scheme
# 设置Switch B上远程用户登录协议为SSH。
[SwitchB-ui-vty0-15] protocol inbound ssh
[SwitchB-ui-vty0-15] quit
# 从文件pubkey中导入远端的公钥。
[SwitchB] public-key peer Switch001 import sshkey pubkey
# 设置SSH用户client001的服务类型为SFTP,认证方式为publickey,并指定公钥为Switch001,工作目录为flash:/。
[SwitchB] ssh user client001 service-type sftp authentication-type publickey assign publickey Switch001 work-directory flash:/
(3) SFTP客户端建立与SFTP服务器端的连接
# 与远程SFTP服务器建立连接,进入SFTP Client视图。
<SwitchA> sftp 192.168.0.1 identity-key rsa
Input Username: client001
Trying 192.168.0.1 ...
Press CTRL+K to abort
Connected to 192.168.0.1 ...
The Server is not authenticated. Continue? [Y/N]:y
Do you want to save the server public key? [Y/N]:n
sftp-client>
# 显示服务器的当前目录,删除文件z,并检查此文件是否删除成功。
sftp-client> dir
-rwxrwxrwx 1 noone nogroup 1759 Aug 23 06:52 config.cfg
-rwxrwxrwx 1 noone nogroup 225 Aug 24 08:01 pubkey2
-rwxrwxrwx 1 noone nogroup 283 Aug 24 07:39 pubkey
drwxrwxrwx 1 noone nogroup 0 Sep 01 06:22 new
-rwxrwxrwx 1 noone nogroup 225 Sep 01 06:55 pub
-rwxrwxrwx 1 noone nogroup 0 Sep 01 08:00 z
sftp-client> delete z
The following File will be deleted:
/z
Are you sure to delete it? [Y/N]:y
This operation may take a long time.Please wait...
File successfully Removed
sftp-client> dir
-rwxrwxrwx 1 noone nogroup 1759 Aug 23 06:52 config.cfg
-rwxrwxrwx 1 noone nogroup 225 Aug 24 08:01 pubkey2
-rwxrwxrwx 1 noone nogroup 283 Aug 24 07:39 pubkey
drwxrwxrwx 1 noone nogroup 0 Sep 01 06:22 new
-rwxrwxrwx 1 noone nogroup 225 Sep 01 06:55 pub
# 新增目录new1,并检查新目录是否创建成功。
sftp-client> mkdir new1
New directory created
sftp-client> dir
-rwxrwxrwx 1 noone nogroup 1759 Aug 23 06:52 config.cfg
-rwxrwxrwx 1 noone nogroup 225 Aug 24 08:01 pubkey2
-rwxrwxrwx 1 noone nogroup 283 Aug 24 07:39 pubkey
drwxrwxrwx 1 noone nogroup 0 Sep 01 06:22 new
-rwxrwxrwx 1 noone nogroup 225 Sep 01 06:55 pub
drwxrwxrwx 1 noone nogroup 0 Sep 02 06:30 new1
# 将目录名new1更名为new2,并查看是否更名成功。
sftp-client> rename new1 new2
File successfully renamed
sftp-client> dir
-rwxrwxrwx 1 noone nogroup 1759 Aug 23 06:52 config.cfg
-rwxrwxrwx 1 noone nogroup 225 Aug 24 08:01 pubkey2
-rwxrwxrwx 1 noone nogroup 283 Aug 24 07:39 pubkey
drwxrwxrwx 1 noone nogroup 0 Sep 01 06:22 new
-rwxrwxrwx 1 noone nogroup 225 Sep 01 06:55 pub
drwxrwxrwx 1 noone nogroup 0 Sep 02 06:33 new2
# 从服务器上下载文件pubkey2到本地,并更名为public。
sftp-client> get pubkey2 public
Remote file:/pubkey2 ---> Local file: public
Downloading file successfully ended
# 将本地文件pu上传到服务器上,更名为puk,并查看上传是否成功。
sftp-client> put pu puk
Local file:pu ---> Remote file: /puk
Uploading file successfully ended
sftp-client> dir
-rwxrwxrwx 1 noone nogroup 1759 Aug 23 06:52 config.cfg
-rwxrwxrwx 1 noone nogroup 225 Aug 24 08:01 pubkey2
-rwxrwxrwx 1 noone nogroup 283 Aug 24 07:39 pubkey
drwxrwxrwx 1 noone nogroup 0 Sep 01 06:22 new
drwxrwxrwx 1 noone nogroup 0 Sep 02 06:33 new2
-rwxrwxrwx 1 noone nogroup 283 Sep 02 06:35 pub
-rwxrwxrwx 1 noone nogroup 283 Sep 02 06:36 puk
sftp-client>
# 退出SFTP。
sftp-client> quit
Bye
Connection closed.
<SwitchA>
如图2-2,Host和Switch之间建立SSH连接,Host作为SFTP客户端登录到Switch,进行文件管理和文件传送等操作,用户名为client002,密码为aabbcc,用户名和密码保存在本地设备上。
图2-2 设备作为SFTP服务器组网图
(1) 配置SFTP服务器
# 生成RSA密钥对。
<Switch> system-view
[Switch] public-key local create rsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++
++++++++++++++
+++++
++++++++
# 生成DSA密钥对。
[Switch] public-key local create dsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
# 启动SSH服务器。
[Switch] ssh server enable
# 启动SFTP服务器。
[Switch] sftp server enable
# 配置VLAN接口1的IP地址,客户端将通过该地址连接SSH服务器。
[Switch] interface vlan-interface 1
[Switch-Vlan-interface1] ip address 192.168.1.45 255.255.255.0
[Switch-Vlan-interface1] quit
# 设置SSH客户端登录用户界面的认证方式为AAA认证。
[Switch] user-interface vty 0 15
[Switch-ui-vty0-15] authentication-mode scheme
# 设置Switch上远程用户登录协议为SSH。
[Switch-ui-vty0-15] protocol inbound ssh
[Switch-ui-vty0-15] quit
# 创建本地用户client002。
[Switch] local-user client002
[Switch-luser-client002] password simple aabbcc
[Switch-luser-client002] service-type ssh
[Switch-luser-client002] quit
# 配置SSH用户认证方式为password,服务类型为SFTP。
[Switch] ssh user client002 service-type sftp authentication-type password
(2) SFTP客户端建立与SFTP服务器的连接
· SFTP客户端软件有很多,本文中仅以客户端软件PuTTY0.58中的PSFTP为例,说明SFTP客户端的配置方法。
· PSFTP只支持password认证,不支持publickey认证
# 建立与SFTP服务器的连接。
打开psftp.exe程序,出现如图2-3所示的客户端配置界面。输入如下命令:
open 192.168.1.45
根据提示输入用户名client002,密码aabbcc,即可登录SFTP服务器。
图2-3 SFTP客户端登录界面
SCP是Secure Copy的简称,提供安全的文件复制功能。目前仅支持基于SSH 2.0的文件复制。
SCP建立在SSH连接的基础之上,设备作为SCP服务器时,可使得远程用户安全地登录设备,进行文件上传或下载操作;设备作为SCP客户端时,用户可以从本地设备安全登录到远程服务器,进行文件的安全传输。
· 具体配置步骤请参见“1.2 配置设备作为SSH服务器”。
· SSH用户的服务类型设置为scp或者all。具体配置步骤请参见“1.2.6 配置SSH用户并指定服务类型和认证方式”。
设备作为SCP服务器时,同时仅允许有一个FTP、SFTP或SCP用户访问SCP服务器。
该配置任务用来启动SCP客户端程序,与远程SCP服务器传输文件。
表3-1 建立与SCP服务器的连接
操作 |
命令 |
说明 |
|
与远程SCP服务器传输文件 |
向远程IPv4 SCP服务器上传文件 |
非FIPS模式下: scp server [ port-number ] put source-file-path [ destination-file-path ] [ identity-key { dsa | rsa } | prefer-ctos-cipher { 3des | aes128 | des } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 } | prefer-kex { dh-group-exchange | dh-group1 | dh-group14 } | prefer-stoc-cipher { 3des | aes128 | des } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 } | username username password password ] * FIPS模式下: scp server [ port-number ] put source-file-path [ destination-file-path ] [ identity-key rsa | prefer-ctos-cipher { aes128 | aes256 } | prefer-ctos-hmac { sha1 | sha1-96 } | prefer-kex dh-group14 | prefer-stoc-cipher { aes128 | aes256 } | prefer-stoc-hmac { sha1 | sha1-96 } | username username password password ] * |
四者必选其一 请在用户视图下执行此命令 |
从远程IPv4 SCP服务器下载文件 |
非FIPS模式下: scp server [ port-number ] get source-file-path [ destination-file-path ] [ identity-key { dsa | rsa } | prefer-ctos-cipher { 3des | aes128 | des } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 } | prefer-kex { dh-group-exchange | dh-group1 | dh-group14 } | prefer-stoc-cipher { 3des | aes128 | des } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 } | username username password password ] * FIPS模式下: scp server [ port-number ] get source-file-path [ destination-file-path ] [ identity-key rsa | prefer-ctos-cipher { aes128 | aes256 } | prefer-ctos-hmac { sha1 | sha1-96 } | prefer-kex dh-group14 | prefer-stoc-cipher { aes128 | aes256 } | prefer-stoc-hmac { sha1 | sha1-96 } | username username password password ] * |
||
向远程IPv6 SCP服务器上传文件 |
非FIPS模式下: scp ipv6 server [ port-number ] put source-file-path [ destination-file-path ] [ identity-key { dsa | rsa } | prefer-ctos-cipher { 3des | aes128 | des } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 } | prefer-kex { dh-group-exchange | dh-group1 | dh-group14 } | prefer-stoc-cipher { 3des | aes128 | des } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 } | username username password password ] * FIPS模式下: scp ipv6 server [ port-number ] put source-file-path [ destination-file-path ] [ identity-key rsa | prefer-ctos-cipher { aes128 | aes256 } | prefer-ctos-hmac { sha1 | sha1-96 } | prefer-kex dh-group14 | prefer-stoc-cipher { aes128 | aes256 } | prefer-stoc-hmac { sha1 | sha1-96 } | username username password password ] * |
||
从远程IPv6 SCP服务器下载文件 |
非FIPS模式下: scp ipv6 server [ port-number ] get source-file-path [ destination-file-path ] [ identity-key { dsa | rsa } | prefer-ctos-cipher { 3des | aes128 | des } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 } | prefer-kex { dh-group-exchange | dh-group1 | dh-group14 } | prefer-stoc-cipher { 3des | aes128 | des } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 } | username username password password ] * FIPS模式下: scp ipv6 server [ port-number ] get source-file-path [ destination-file-path ] [ identity-key rsa | prefer-ctos-cipher { aes128 | aes256 } | prefer-ctos-hmac { sha1 | sha1-96 } | prefer-kex dh-group14 | prefer-stoc-cipher { aes128 | aes256 } | prefer-stoc-hmac { sha1 | sha1-96 } | username username password password ] * |
如图3-1,Switch A作为SCP客户端从Switch B下载文件remote.bin,用户采用的认证方式为password认证,用户名为test。
图3-1 设备作为SCP客户端组网图
(1) 配置SCP客户端
# 配置VLAN接口1的IP地址。
<SwitchA> system-view
[SwitchA] interface vlan-interface 1
[SwitchA-Vlan-interface1] ip address 192.168.0.2 255.255.255.0
[SwitchA-Vlan-interface1] quit
(2) 下载文件
# 下载远端的remote.bin文件,下载到本地后更名为local.bin。
<SwitchA> scp 192.168.0.1 get remote.bin local.bin
Username: test
Trying 192.168.0.1 ...
Press CTRL+K to abort
Connected to 192.168.0.1 ...
The Server is not authenticated. Continue? [Y/N]:y
Do you want to save the server public key? [Y/N]:n
Enter password:
18471 bytes transfered in 0.001 seconds.
如图3-2,Host和Switch之间建立SSH连接,Host作为SCP客户端与SCP服务器Switch传输文件。所使用的用户名为test,密码为aabbcc,用户名和密码保存在本地设备上。
图3-2 设备作为SCP服务器组网图
(1) 配置SCP服务器
# 生成RSA密钥对。
<Switch> system-view
[Switch] public-key local create rsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++
++++++++++++++
+++++
++++++++
# 生成DSA密钥对。
[Switch] public-key local create dsa
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
# 启动SSH服务器。
[Switch] ssh server enable
# 配置VLAN接口1的IP地址,客户端将通过该地址连接SSH服务器。
[Switch] interface vlan-interface 1
[Switch-Vlan-interface1] ip address 192.168.1.45 255.255.255.0
[Switch-Vlan-interface1] quit
# 设置SSH客户端登录用户界面的认证方式为AAA认证。
[Switch] user-interface vty 0 15
[Switch-ui-vty0-15] authentication-mode scheme
# 设置SSH客户端登录用户界面支持包括SSH在内的所有协议。
[Switch-ui-vty0-15] protocol inbound all
[Switch-ui-vty0-15] quit
# 创建本地用户test。
[Switch] local-user test
[Switch-luser-test] password simple aabbcc
[Switch-luser-test] service-type ssh
[Switch-luser-test] quit
# 配置SSH用户认证方式为password,服务类型为SCP。
[Switch] ssh user test service-type scp authentication-type password
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!