06-SSH配置
本章节下载: 06-SSH配置 (390.51 KB)
SSH是Secure Shell(安全外壳)的简称,是一种在不安全的网络环境中,通过加密机制和认证机制,实现安全的远程访问以及文件传输等业务的网络安全协议。
SSH协议采用了典型的客户端/服务器模式,并基于TCP协议协商建立用于保护数据传输的会话通道。SSH协议有两个版本,SSH1.x和SSH2.0(本文简称SSH1和SSH2),两者互不兼容。SSH2在性能和安全性方面比SSH1有所提高。
设备既可以支持SSH服务器功能,接受多个SSH客户端的连接,也可以支持SSH客户端功能,允许用户通过设备与远程SSH服务器建立SSH连接。
目前,设备支持以下几种SSH应用。
· Secure Telnet:简称Stelnet,可提供安全可靠的网络终端访问服务,使得用户可以安全登录到远程设备,且能保护远程设备不受诸如IP地址欺诈、明文密码截取等攻击。设备可支持Stelnet服务器、Stelnet客户端功能。
· Secure FTP:简称SFTP,基于SSH2,可提供安全可靠的网络文件传输服务,使得用户可以安全登录到远程设备上进行文件管理操作,且能保证文件传输的安全性。设备可支持SFTP服务器、SFTP客户端功能。
· Secure Copy:简称SCP,基于SSH2,可提供安全的文件复制功能。设备可支持SCP服务器、SCP客户端功能。
· NETCONF over SSH:基于SSH2,提供通过SSH连接给设备下发NETCONF指令的功能,使得用户可以安全登录到远程设备并直接进入到设备的NETCONF系统中进行配置和管理操作。设备仅支持作为NETCONF over SSH连接的服务器端。关于NETCONF系统的详细介绍,请参见“网络管理和监控配置指导”中的“NETCONF”。
目前,设备作为Stelnet服务器、SFTP服务器、SCP服务器时,支持SSH2和SSH1两个版本;设备作为SSH客户端时,只支持SSH2版本;设备作为NETCONF over SSH服务器端时,只支持SSH2版本。
本小节以SSH2为例介绍SSH工作的过程,具体分为表1-1所述的几个阶段。
表1-1 SSH工作过程
阶段 |
说明 |
连接建立 |
SSH服务器在22号端口侦听客户端的连接请求,在客户端向服务器端发起连接请求后,双方建立一个TCP连接 |
版本协商 |
双方通过版本协商确定最终使用的SSH版本号 |
算法协商 |
SSH支持多种算法,双方根据本端和对端支持的算法,协商出最终用于产生会话密钥的密钥交换算法、用于数据信息加密的加密算法、用于进行数字签名和认证的公钥算法,以及用于数据完整性保护的HMAC算法 |
密钥交换 |
双方通过DH(Diffie-Hellman Exchange)交换,动态地生成用于保护数据传输的会话密钥和用来标识该SSH连接的会话ID,并完成客户端对服务器端的身份认证 |
用户认证 |
SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证 |
会话请求 |
认证通过后,SSH客户端向服务器端发送会话请求,请求服务器提供某种类型的服务(目前支持Stelnet、SFTP、SCP、NETCONF),即请求与服务器建立相应的会话 |
会话交互 |
会话建立后,SSH服务器端和客户端在该会话上进行数据信息的交互 该阶段,用户在客户端可以通过粘贴文本内容的方式执行命令,但文本会话不能超过2000字节,且粘贴的命令最好是同一视图下的命令,否则服务器可能无法正确执行该命令。如果粘贴的文本会话超过2000字节,可以采用将配置文件通过SFTP方式上传到服务器,利用新的配置文件重新启动的方式执行这些命令 |
设备作为SSH服务器可提供以下四种对客户端的认证方式。
利用AAA(Authentication、Authorization、Accounting,认证、授权和计费)对客户端身份进行认证。客户端向服务器发出password认证请求,将用户名和密码加密后发送给服务器;服务器将认证请求解密后得到用户名和密码的明文,通过本地认证或远程认证验证用户名和密码的合法性,并返回认证成功或失败的消息。
客户端进行password认证时,如果远程认证服务器要求用户进行二次密码认证,则会在发送给服务器端的认证回应消息中携带一个提示信息,该提示信息被服务器端透传给客户端,由客户端输出并要求用户再次输入一个指定类型的密码,当用户提交正确的密码并成功通过认证服务器的验证后,服务器端才会返回认证成功的消息。
SSH1版本的SSH客户端不支持AAA服务器发起的二次密码认证。
关于AAA相关内容的介绍,请参考“安全配置指导”中的“AAA”。
采用数字签名的方式来认证客户端。目前,设备上可以利用DSA、ECDSA、RSA三种公钥算法实现数字签名。客户端发送包含用户名、公钥和公钥算法或者携带公钥信息的数字证书的publickey认证请求给服务器端。服务器对公钥进行合法性检查,如果合法,则发送消息请求客户端的数字签名;如果不合法,则直接发送失败消息;服务器收到客户端的数字签名之后,使用客户端的公钥对其进行解密,并根据计算结果返回认证成功或失败的消息。
对于SSH2版本的客户端,要求同时进行password和publickey两种方式的认证,且只有两种认证均通过的情况下,才认为客户端身份认证通过;对于SSH1版本的客户端,只要通过其中任意一种认证即可。
不指定客户端的认证方式,客户端可采用password认证或publickey认证,且只要通过其中任何一种认证即可。
SSH服务器端配置任务如下:
(1) 生成本地密钥对
(2) (可选)配置SSH服务端口号
(3) 开启SSH服务器
仅对Stelnet服务器和NETCONF over SSH服务器必选。
(5) 配置客户端的公钥
采用publickey、password-publickey或any认证方式时必选。
(6) 配置SSH用户
¡ 采用publickey、password-publickey或any认证方式时必选。
¡ 采用password认证方式时可选。
(7) (可选)配置SSH管理功能
用户可通过配置认证参数、连接数控制等,提高SSH连接的安全性。
服务器端的DSA、ECDSA或RSA密钥对有两个用途,其一是用于在密钥交换阶段生成会话密钥和会话ID,另外一个是客户端用它来对连接的服务器进行认证。客户端验证服务器身份时,首先判断服务器发送的公钥与本地保存的服务器公钥是否一致,确认服务器公钥正确后,再使用该公钥对服务器发送的数字签名进行验证。
虽然一个客户端只会采用DSA、ECDSA或RSA公钥算法中的一种来认证服务器,但是由于不同客户端支持的公钥算法不同,为了确保客户端能够成功登录服务器,建议在服务器上同时生成DSA、ECDSA和RSA三种密钥对。
· 生成RSA密钥对时,将同时生成两个密钥对——服务器密钥对和主机密钥对。SSH1利用SSH服务器端的服务器公钥加密会话密钥,以保证会话密钥传输的安全;SSH2通过DH算法在SSH服务器和SSH客户端上生成会话密钥,不需要传输会话密钥,因此SSH2中没有利用服务器密钥对。
· 生成DSA密钥对时,只生成一个主机密钥对。SSH1不支持DSA算法。
· 生成ECDSA密钥对时,只生成一个主机密钥对。
SSH仅支持默认名称的本地DSA、ECDSA或RSA密钥对,不支持指定名称的本地DSA、ECDSA或RSA密钥对。
生成DSA密钥对时,要求输入的密钥模数的长度必须小于2048比特。
SSH服务器支持secp256r1和secp384r1类型的ECDSA密钥对。
如果服务器端不存在默认名称的本地RSA密钥对,则在服务器端执行SSH服务器相关命令行时(包括开启Stelnet/SFTP/SCP/NETCONF over SSH服务器、配置SSH用户、以及配置SSH服务器端的管理功能),系统会自动生成一个默认名称的本地RSA密钥对。
(1) 进入系统视图。
system-view
(2) 生成本地密钥对。
public-key local create { dsa | ecdsa { secp256r1 | secp384r1 } | rsa }
用户通过修改SSH服务端口号,可以提高SSH连接的安全性。
(1) 进入系统视图。
system-view
(2) 配置SSH服务端口号。
ssh server port port-number
· 如果修改端口号前SSH服务是开启的,则修改端口号后系统会自动重启SSH服务,正在访问的用户将被断开,用户需要重新建立SSH连接后才可以继续访问。
· 如果使用1~1024之间的知名端口号,有可能会导致其他服务启动失败。
缺省情况下,SSH服务的端口号为22。
本功能用于开启设备上的Stelnet服务器功能,使客户端能采用Stelnet的方式登录到设备。
(1) 进入系统视图。
system-view
(2) 开启Stelnet服务器功能。
ssh server enable
缺省情况下,Stelnet服务器功能处于关闭状态。
本功能用于开启设备上的SFTP服务器功能,使客户端能采用SFTP的方式登录到设备。
设备作为SFTP服务器时,不支持SSH1版本的客户端发起的SFTP连接。
(1) 进入系统视图。
system-view
(2) 开启SFTP服务器功能。
sftp server enable
缺省情况下,SFTP服务器处于关闭状态。
本功能用于开启设备上的SCP服务器功能,使客户端能采用SCP的方式登录到设备。
设备作为SCP服务器时,不支持SSH1版本的客户端发起的SCP连接。
(1) 进入系统视图。
system-view
(2) 开启SCP服务器功能。
scp server enable
缺省情况下,SCP服务器处于关闭状态。
本功能用于开启设备上的NETCONF over SSH服务器功能,使得客户端能够使用支持NETCONF over SSH连接的客户端配置工具给设备下发NETCONF指令来实现对设备的访问。
设备作为NETCONF over SSH服务器时,不支持SSH1版本的客户端发起的SSH连接。
(1) 进入系统视图。
system-view
(2) 开启NETCONF over SSH服务器功能。
netconf ssh server enable
缺省情况下,NETCONF over SSH服务器处于关闭状态。
关于NETCONF over SSH服务器相关命令的详细介绍,请见“网络管理和监控命令参考”中的“NETCONF”。
设备支持的SSH客户端根据不同的应用可分为:Stelnet客户端、SFTP客户端、SCP客户端和NETCONF over SSH客户端。
· Stelnet客户端和NETCONF over SSH客户端通过VTY(Virtual Type Terminal,虚拟类型终端)用户线访问设备。因此,需要配置客户端登录时采用的VTY用户线,使其支持SSH远程登录协议。配置将在客户端下次登录时生效。
· SFTP客户端和SCP客户端不通过用户线访问设备,不需要配置登录时采用的VTY用户线。
(1) 进入系统视图。
system-view
(2) 进入VTY用户线视图。
line vty number [ ending-number ]
(3) 配置登录用户线的认证方式为scheme方式。
authentication-mode scheme
缺省情况下,用户线认证为password方式。
该命令的详细介绍,请参见“基础配置命令参考”中的“登录设备”。
服务器在采用publickey方式验证客户端身份时,首先比较客户端发送的SSH用户名、主机公钥是否与本地配置的SSH用户名以及相应的客户端主机公钥一致,在确认用户名和客户端主机公钥正确后,对客户端发送的数字签名进行验证,该签名是客户端利用主机公钥对应的私钥计算出的。
因此,在采用publickey、password-publickey或any认证方式时:
· 在服务器端配置客户端的DSA、ECDSA或RSA主机公钥。
· 在客户端为该SSH用户指定与主机公钥对应的DSA、ECDSA或RSA主机私钥(若设备作为客户端,则在向服务器发起连接时通过指定公钥算法来实现)。
服务器端可以通过手工配置和从公钥文件中导入两种方式来配置客户端的公钥。
· 手工配置
事先在客户端上通过显示命令或其它方式查看其公钥信息,并记录客户端主机公钥的内容,然后采用手工输入的方式将客户端的公钥配置到服务器上。手工输入远端主机公钥时,可以逐个字符输入,也可以一次拷贝粘贴多个字符。这种方式要求手工输入或拷贝粘贴的主机公钥必须是未经转换的DER(Distinguished Encoding Rules,特异编码规则)公钥编码格式。手工配置客户端的公钥时,输入的主机公钥必须满足一定的格式要求。我司设备作为客户端时,通过display public-key local public命令显示的公钥可以作为输入的公钥内容;通过其他方式(如public-key local export命令)显示的公钥可能不满足格式要求,导致主机公钥保存失败。
· 从公钥文件导入
事先将客户端的公钥文件保存到服务器上(例如,通过FTP或TFTP,以二进制方式将客户端的公钥文件保存到服务器),服务器从本地保存的该公钥文件中导入客户端的公钥。导入公钥时,系统会自动将客户端公钥文件转换为PKCS(Public Key Cryptography Standards,公共密钥加密标准)编码形式。
SSH服务器上配置的SSH客户端公钥数目建议不要超过20个。
配置客户端公钥时建议选用从公钥文件导入的方式配置远端主机的公钥。
(1) 进入系统视图。
system-view
(2) 进入公钥视图。
public-key peer keyname
(3) 配置客户端的公钥。
逐个字符输入或拷贝粘贴公钥内容。
在输入公钥内容时,字符之间可以有空格,也可以按回车键继续输入数据。保存公钥数据时,将删除空格和回车符。
(4) 退出公钥视图并保存配置的主机公钥。
peer-public-key end
(1) 进入系统视图。
system-view
(2) 从公钥文件中导入远端客户端的公钥。
public-key peer keyname import sshkey filename
本配置用于创建SSH用户,并指定SSH用户的服务类型、认证方式以及对应的客户端公钥或数字证书。SSH用户的配置与服务器端采用的认证方式有关,具体如下:
· 如果服务器采用了publickey认证,则必须在设备上创建相应的SSH用户,以及同名的本地用户(用于下发授权属性:工作目录、用户角色)。
· 如果服务器采用了password认证,则必须在设备上创建相应的本地用户(适用于本地认证),或在远程服务器(如RADIUS服务器,适用于远程认证)上创建相应的SSH用户。这种情况下,并不需要通过本配置创建相应的SSH用户,如果创建了SSH用户,则必须保证指定了正确的服务类型以及认证方式。
· 如果服务器采用了password-publickey或any认证,则必须在设备上创建相应的SSH用户,以及在设备上创建同名的本地用户(适用于本地认证)或者在远程认证服务器上创建同名的SSH用户(如RADIUS服务器,适用于远程认证)。
对SSH用户配置的修改,不会影响已经登录的SSH用户,仅对新登录的用户生效。
SCP或SFTP用户登录时使用的工作目录与用户使用的认证方式有关:
· 通过publickey或password-publickey认证登录服务器的用户使用的工作目录均为对应的本地用户视图下为该用户设置的工作目录。
· 通过password认证登录服务器的用户,使用的工作目录为通过AAA授权的工作目录。
SSH用户登录时拥有的用户角色与用户使用的认证方式有关:
· 通过publickey或password-publickey认证登录服务器的SSH用户将被授予对应的本地用户视图下指定的用户角色。
· 通过password认证登录服务器的SSH用户将被授予远程AAA服务器或设备本地授权的用户角色。
除password认证方式外,其它认证方式下均需要指定客户端的公钥或证书。
· 对于使用公钥认证的SSH用户,服务器端必须指定客户端的公钥,且指定的公钥必须已经存在,公钥内容的配置请参见“1.2.9 配置客户端的公钥”。
关于本地用户以及远程认证的相关配置请参见“安全配置指导”中的“AAA”。
(1) 进入系统视图。
system-view
(2) 创建SSH用户,并指定SSH用户的服务类型和认证方式。
ssh user username service-type { all | netconf | scp | sftp | stelnet } authentication-type { password | { any | password-publickey | publickey } [ assign publickey keyname } ] }
SSH服务器上最多可以创建1024个SSH用户。
(1) 进入系统视图。
system-view
(2) 设置SSH服务器兼容SSH1版本的客户端。
ssh server compatible-ssh1x enable
缺省情况下,SSH服务器不兼容SSH1版本的客户端。
(1) 进入系统视图。
system-view
(2) 开启SSH算法重协商和密钥重交换功能。
ssh server key-re-exchange enable [ interval interval ]
缺省情况下,SSH算法重协商和密钥重交换功能处于关闭状态。
本功能的开启和间隔时间变化不影响已存在的SSH连接。
(1) 进入系统视图。
system-view
(2) 设置RSA服务器密钥对的最小更新间隔时间。
ssh server rekey-interval interval
缺省情况下,系统不更新RSA服务器密钥对。
本功能仅对SSH客户端版本为SSH1的用户有效。
(1) 进入系统视图。
system-view
(2) 设置SSH用户的认证超时时间。
ssh server authentication-timeout time-out-value
缺省情况下,SSH用户的认证超时时间为60秒。
为了防止不法用户建立起TCP连接后,不进行接下来的认证而空占进程,妨碍其它合法用户的正常登录,可以设置验证超时时间,如果在规定的时间内没有完成认证就拒绝该连接。
(1) 进入系统视图。
system-view
(2) 设置SSH认证尝试的最大次数。
ssh server authentication-retries retries
缺省情况下,SSH连接认证尝试的最大次数为3次。
本功能可以防止非法用户对用户名和密码进行恶意地猜测和破解。在any认证方式下,SSH客户端通过publickey和password方式进行认证尝试的次数总和,不能超过配置最大次数。
(1) 进入系统视图。
system-view
(2) 设置对SSH用户的访问控制。
(IPv4网络)
ssh server acl { advanced-acl-number | basic-acl-number | mac mac-acl-number }
(IPv6网络)
ssh server ipv6 acl { ipv6 { advanced-acl-number | basic-acl-number } | mac mac-acl-number }
缺省情况下,允许所有SSH用户向设备发起SSH访问。
通过配置本功能,使用ACL过滤向SSH服务器发起连接的SSH客户端。
(1) 进入系统视图。
system-view
(2) 开启匹配ACL deny规则后打印日志信息功能。
ssh server acl-deny-log enable
缺省情况下,匹配ACL deny规则后打印日志信息功能处于关闭状态。
通过开启本功能,设备可以记录匹配deny规则的IP用户的登录日志,用户可以查看非法登录的地址信息。
(1) 进入系统视图。
system-view
(2) 设置SSH服务器向SSH客户端发送的报文的DSCP优先级。
(IPv4网络)
ssh server dscp dscp-value
(IPv6网络)
ssh server ipv6 dscp dscp-value
缺省情况下,SSH报文的DSCP优先级为48。
DSCP携带在IPv4报文中的ToS字段和IPv6报文中的Trafic class字段,用来体现报文自身的优先等级,决定报文传输的优先程度。
(1) 进入系统视图。
system-view
(2) 设置SFTP用户连接的空闲超时时间。
sftp server idle-timeout time-out-value
缺省情况下,SFTP用户连接的空闲超时时间为10分钟。
当SFTP用户连接的空闲时间超过设定的阈值后,系统会自动断开此用户的连接,从而有效避免用户长期占用连接而不进行任何操作。
(1) 进入系统视图。
system-view
(2) 设置同时在线的最大SSH用户连接数。
aaa session-limit ssh max-sessions
缺省情况下,同时在线的最大SSH用户连接数为32。
系统资源有限,当前在线SSH用户数超过设定的最大值时,系统会拒绝新的SSH连接请求。该值的修改不会对已经在线的用户连接造成影响,只会对新的用户连接生效。
关于该命令的详细介绍,请参见“安全命令参考”中的“AAA”。
Stelnet客户端配置任务如下:
(1) 生成本地密钥对
仅采用publickey、password-publickey或any认证方式时必选。
(2) (可选)配置Stelnet客户端发送SSH报文使用的源IP地址
(3) 建立与Stelnet服务器的连接
客户端采用publickey、password-publickey或any认证方式时,需要生成本地密钥对。
SSH仅支持默认名称的本地DSA、ECDSA或RSA密钥对,不支持指定名称的本地DSA、ECDSA或RSA密钥对。
生成DSA密钥对时,要求输入的密钥模数的长度必须小于2048比特。
SSH客户端支持secp256r1和secp384r1类型的ECDSA密钥对。
(1) 进入系统视图。
system-view
(2) 生成本地密钥对。
public-key local create { dsa | ecdsa { secp256r1 | secp384r1 } | rsa }
Stelnet客户端与Stelnet服务器通信时,缺省采用路由决定的源IP地址作为发送报文的源地址。如果使用本配置指定了源IP地址或源接口,则采用该地址与服务器进行通信。
为保证Stelnet客户端与Stelnet服务器通信链路的可达性,以及增加认证业务对SFTP客户端的可管理性,通常建议指定Loopback接口作为源接口,或者Loopback接口、Dialer接口的IP地址作为源IP地址。
(1) 进入系统视图。
system-view
(2) 配置Stelnet客户端发送SSH报文使用的源IP地址。
(IPv4网络)
ssh client source { interface interface-type interface-number | ip ip-address }
缺省情况下,IPv4 Stelnet客户端采用设备路由指定的SSH报文出接口主IP地址作为源IP地址。
(IPv6网络)
ssh client ipv6 source { interface interface-type interface-number | ipv6 ipv6-address }
缺省情况下,IPv6 Stelnet客户端采用设备自动选择的IPv6地址作为源IP地址。
该配置任务用来启动Stelnet客户端程序,与远程Stelnet服务器建立连接,并指定公钥算法、首选加密算法、首选HMAC算法和首选密钥交换算法等。
Stelnet客户端访问服务器时,需要通过本地保存的服务器端的主机公钥来验证服务器的身份。设备作为Stelnet客户端时,默认支持首次认证,即当Stelnet客户端首次访问服务器,而客户端没有配置服务器端的主机公钥时,用户可以选择继续访问该服务器,并在客户端保存该主机公钥;当用户下次访问该服务器时,就以保存的主机公钥来认证该服务器。首次认证在比较安全的网络环境中可以简化客户端的配置,但由于该方式下客户端完全相信服务器公钥的正确性,因此存在一定的安全隐患。
客户端不能同时连接IPv4和IPv6类型的服务器。
请在用户视图下执行以下命令,与IPv4 Stelnet服务器端建立连接。
ssh2 server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key { dsa | ecdsa-sha2-nistp256 | ecdsa-sha2-nistp384 | rsa } | prefer-compress zlib | prefer-ctos-cipher { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | des-cbc } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 } | prefer-kex { dh-group-exchange-sha1 | dh-group1-sha1 | dh-group14-sha1 | ecdh-sha2-nistp256 | ecdh-sha2-nistp384 } | prefer-stoc-cipher { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | des-cbc } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 } ] * [ dscp dscp-value | escape character | public-key keyname | source { interface interface-type interface-number | ip ip-address } ] *
请在用户视图下执行以下命令,与IPv6 Stelnet服务器端建立连接。
ssh2 ipv6 server [ port-number ] [ vpn-instance vpn-instance-name ] [ -i interface-type interface-number ] [ identity-key { dsa | ecdsa-sha2-nistp256 | ecdsa-sha2-nistp384 | rsa } | prefer-compress zlib | prefer-ctos-cipher { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | des-cbc } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 } | prefer-kex { dh-group-exchange-sha1 | dh-group1-sha1 | dh-group14-sha1 | ecdh-sha2-nistp256 | ecdh-sha2-nistp384 } | prefer-stoc-cipher { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | des-cbc } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 } ] * [ dscp dscp-value | escape character | public-key keyname | source { interface interface-type interface-number | ipv6 ipv6-address } ] *
SFTP客户端配置任务如下:
(1) 生成本地密钥对
仅采用publickey、password-publickey或any认证方式时必选。
(2) (可选)配置SFTP客户端发送SFTP报文使用的源IP地址
(3) 建立与SFTP服务器的连接
(4) (可选)SFTP目录操作
(5) (可选)SFTP文件操作
(6) (可选)显示帮助信息
(7) (可选)终止与SFTP服务器的连接
客户端采用publickey、password-publickey或any认证方式时,需要生成本地密钥对。
SSH仅支持默认名称的本地DSA、ECDSA或RSA密钥对,不支持指定名称的本地DSA、ECDSA或RSA密钥对。
生成DSA密钥对时,要求输入的密钥模数的长度必须小于2048比特。
SSH客户端支持secp256r1和secp384r1类型的ECDSA密钥对。
(1) 进入系统视图。
system-view
(2) 生成本地密钥对。
public-key local create { dsa | ecdsa { secp256r1 | secp384r1 } | rsa }
SFTP客户端与SFTP服务器通信时,缺省采用路由决定的源IP地址作为发送报文的源地址。如果使用本配置指定了源IP地址或源接口,则采用该地址与服务器进行通信。
为保证SFTP客户端与SFTP服务器通信链路的可达性,以及增加认证业务对SFTP客户端的可管理性,通常建议指定Loopback接口作为源接口,或者Loopback接口、Dialer接口的IP地址作为源IP地址。
(1) 进入系统视图。
system-view
(2) 配置SFTP客户端发送SFTP报文使用的源IP地址。
(IPv4网络)
sftp client source { ip ip-address | interface interface-type interface-number }
缺省情况下,IPv4客户端采用设备路由指定的SFTP报文的出接口主IP地址作为源IP地址。
(IPv6网络)
sftp client ipv6 source { ipv6 ipv6-address | interface interface-type interface-number }
缺省情况下,IPv6客户端采用设备自动选择的IPv6地址作为源IP地址。
该配置任务用来启动SFTP客户端程序,与远程SFTP服务器建立连接,并指定公钥算法、首选加密算法、首选HMAC算法和首选密钥交换算法等。SFTP客户端与服务器成功建立连接之后,用户即可进入到服务器端上的SFTP客户端视图下进行目录、文件等操作。
SFTP客户端访问服务器时,需要通过本地保存的服务器端的主机公钥来验证服务器的身份。设备作为SFTP客户端时,默认支持首次认证,即当SFTP客户端首次访问服务器,而客户端没有配置服务器端的主机公钥时,用户可以选择继续访问该服务器,并在客户端保存该主机公钥;当用户下次访问该服务器时,就以保存的主机公钥来认证该服务器。首次认证在比较安全的网络环境中可以简化客户端的配置,但由于该方式下客户端完全相信服务器公钥的正确性,因此存在一定的安全隐患。
客户端不能同时连接IPv4和IPv6类型的服务器。
请在用户视图下执行以下命令,与IPv4 SFTP服务器建立连接,并进入SFTP客户端视图。
sftp server [ port-number ] [ vpn-instance vpn-instance-name ] [ identity-key { dsa | ecdsa-sha2-nistp256 | ecdsa-sha2-nistp384 | rsa } | prefer-compress zlib | prefer-ctos-cipher { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | des-cbc } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 } | prefer-kex { dh-group-exchange-sha1 | dh-group1-sha1 | dh-group14-sha1 | ecdh-sha2-nistp256 | ecdh-sha2-nistp384 } | prefer-stoc-cipher { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | des-cbc } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 } ] * [ dscp dscp-value | public-key keyname | source { interface interface-type interface-number | ip ip-address } ] *
请在用户视图下执行以下命令,与IPv6 SFTP服务器建立连接,并进入SFTP客户端视图。
sftp ipv6 server [ port-number ] [ vpn-instance vpn-instance-name ] [ -i interface-type interface-number ] [ identity-key { dsa | ecdsa-sha2-nistp256 | ecdsa-sha2-nistp384 | rsa } | prefer-compress zlib | prefer-ctos-cipher { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | des-cbc } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 } | prefer-kex { dh-group-exchange-sha1 | dh-group1-sha1 | dh-group14-sha1 | ecdh-sha2-nistp256 | ecdh-sha2-nistp384 } | prefer-stoc-cipher { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | des-cbc } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 } ] * [ dscp dscp-value | public-key keyname | source { interface interface-type interface-number | ipv6 ipv6-address } ] *
SFTP目录操作包括:改变或显示当前的工作路径、显示指定目录下的文件或目录信息、改变服务器上指定的文件夹的名字、创建或删除目录等操作。
(1) 进入SFTP客户端视图。
具体命令请参考“1.4.4 建立与SFTP服务器的连接”。
(2) 改变远程SFTP服务器上的工作路径。
cd [ remote-path ]
(3) (可选)返回到上一级目录。
cdup
(1) 进入SFTP客户端视图。
具体命令请参考“1.4.4 建立与SFTP服务器的连接”。
(2) 显示远程SFTP服务器上的当前工作目录。
pwd
(1) 进入SFTP客户端视图。
具体命令请参考“1.4.4 建立与SFTP服务器的连接”。
(2) 显示指定目录下的文件列表。
¡ dir [ -a | -l ] [ remote-path ]
¡ ls [ -a | -l ] [ remote-path ]
dir和ls两条命令的作用相同。
(1) 进入SFTP客户端视图。
具体命令请参考“1.4.4 建立与SFTP服务器的连接”。
(2) 改变SFTP服务器上指定的目录的名字。
rename old-name new-name
(1) 进入SFTP客户端视图。
具体命令请参考“1.4.4 建立与SFTP服务器的连接”。
(2) 在远程SFTP服务器上创建新的目录。
mkdir remote-path
(1) 进入SFTP客户端视图。
具体命令请参考“1.4.4 建立与SFTP服务器的连接”。
(2) 删除SFTP服务器上指定的目录。
rmdir remote-path
SFTP文件操作包括:改变文件名、下载文件、上传文件、显示文件列表和删除文件。
(1) 进入SFTP客户端视图。
具体命令请参考“1.4.4 建立与SFTP服务器的连接”。
(2) 改变SFTP服务器上指定的文件的名字。
rename old-name new-name
(1) 进入SFTP客户端视图。
具体命令请参考“1.4.4 建立与SFTP服务器的连接”。
(2) 从远程服务器上下载文件并存储在本地。
get remote-file [ local-file ]
(1) 进入SFTP客户端视图。
具体命令请参考“1.4.4 建立与SFTP服务器的连接”。
(2) 将本地的文件上传到远程SFTP服务器。
put local-file [ remote-file ]
(1) 进入SFTP客户端视图。
具体命令请参考“1.4.4 建立与SFTP服务器的连接”。
(2) 显示指定目录下的文件。
¡ dir [ -a | -l ] [ remote-path ]
¡ ls [ -a | -l ] [ remote-path ]
dir和ls两条命令的作用相同。
(1) 进入SFTP客户端视图。
具体命令请参考“1.4.4 建立与SFTP服务器的连接”。
(2) 删除SFTP服务器上指定的文件。
¡ delete remote-file
¡ remove remote-file
delete和remove两条命令的功能相同。
本配置用于显示命令的帮助信息,如命令格式、参数配置等。
(1) 进入SFTP客户端视图。
具体命令请参考“1.4.4 建立与SFTP服务器的连接”。
(2) 显示SFTP客户端命令的帮助信息。
¡ help
¡ ?
help和?的功能相同。
(1) 进入SFTP客户端视图。
具体命令请参考“1.4.4 建立与SFTP服务器的连接”。
(2) 终止与SFTP服务器的连接,并退回用户视图。
¡ bye
¡ exit
¡ quit
bye、exit和quit三条命令的功能相同。
SCP客户端配置任务如下:
(1) 生成本地密钥对
仅采用publickey、password-publickey或any认证方式时必选。
(2) 与远程SCP服务器传输文件
客户端采用publickey、password-publickey或any认证方式时,需要生成本地密钥对。
SSH仅支持默认名称的本地DSA、ECDSA或RSA密钥对,不支持指定名称的本地DSA、ECDSA或RSA密钥对。
生成DSA密钥对时,要求输入的密钥模数的长度必须小于2048比特。
SSH客户端支持secp256r1和secp384r1类型的ECDSA密钥对。
(1) 进入系统视图。
system-view
(2) 生成本地密钥对。
public-key local create { dsa | ecdsa { secp256r1 | secp384r1 } | rsa }
该配置任务用来启动SCP客户端程序,与远程SCP服务器建立连接,并进行安全的文件传输操作。
SCP客户端访问服务器时,需要通过本地保存的服务器端的主机公钥来验证服务器的身份。设备作为SCP客户端时,默认支持首次认证,即当SCP客户端首次访问服务器,而客户端没有配置服务器端的主机公钥时,用户可以选择继续访问该服务器,并在客户端保存该主机公钥;当用户下次访问该服务器时,就以保存的主机公钥来认证该服务器。首次认证在比较安全的网络环境中可以简化客户端的配置,但由于该方式下客户端完全相信服务器公钥的正确性,因此存在一定的安全隐患。
客户端不能同时连接IPv4和IPv6类型的服务器。
请在用户视图下执行以下命令,与远程IPv4 SCP服务器建立连接,并进行文件传输。
scp server [ port-number ] [ vpn-instance vpn-instance-name ] { get | put } source-file-name [ destination-file-name ] [ identity-key { dsa | ecdsa-sha2-nistp256 | ecdsa-sha2-nistp384 | rsa } | prefer-compress zlib | prefer-ctos-cipher { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | des-cbc } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 } | prefer-kex { dh-group-exchange-sha1 | dh-group1-sha1 | dh-group14-sha1 | ecdh-sha2-nistp256 | ecdh-sha2-nistp384 } | prefer-stoc-cipher { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | des-cbc } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 } ] * [ public-key keyname | source { interface interface-type interface-number | ip ip-address } ] *
请在用户视图下执行以下命令,与远程IPv6 SCP服务器建立连接,并进行文件传输。
scp ipv6 server [ port-number ] [ vpn-instance vpn-instance-name ] [ -i interface-type interface-number ] { get | put } source-file-name [ destination-file-name ] [ identity-key { dsa | ecdsa-sha2-nistp256 | ecdsa-sha2-nistp384 | rsa } | prefer-compress zlib | prefer-ctos-cipher { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | des-cbc } | prefer-ctos-hmac { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 } | prefer-kex { dh-group-exchange-sha1 | dh-group1-sha1 | dh-group14-sha1 | ecdh-sha2-nistp256 | ecdh-sha2-nistp384 } | prefer-stoc-cipher { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | des-cbc } | prefer-stoc-hmac { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 } ] * [ public-key keyname | source { interface interface-type interface-number | ipv6 ipv6-address } ] *
设备作为服务器或者客户端与对端建立Stelnet、SFTP、SCP会话过程中,将使用指定的算法优先列表进行协商。指定的算法包括:
· 密钥交换算法
· 主机签名算法
· 加密算法
· MAC算法
协商过程中,客户端采用的算法匹配顺序为优先列表中各算法的配置顺序,服务器根据客户端的算法来匹配和协商。
(1) 进入系统视图。
system-view
(2) 配置SSH2协议密钥交换算法优先列表。
ssh2 algorithm key-exchange { dh-group-exchange-sha1 | dh-group1-sha1 | dh-group14-sha1 | ecdh-sha2-nistp256 | ecdh-sha2-nistp384 } *
缺省情况下,SSH2协议采用的缺省密钥交换算法从高到底的优先级列表为ecdh-sha2-nistp256、ecdh-sha2-nistp384、dh-group-exchange-sha1、dh-group14-sha1和dh-group1-sha1。
(1) 进入系统视图。
system-view
(2) 配置SSH2协议主机签名算法优先列表。
ssh2 algorithm public-key { dsa | ecdsa-sha2-nistp256 | ecdsa-sha2-nistp384 | rsa | x509v3-ecdsa-sha2-nistp256 | x509v3-ecdsa-sha2-nistp384 } *
缺省情况下,SSH2协议使用的缺省主机签名算法从高到底的优先级列表为x509v3-ecdsa-sha2-nistp256、x509v3-ecdsa-sha2-nistp384、ecdsa-sha2-nistp256、ecdsa-sha2-nistp384、rsa和dsa。
(1) 进入系统视图。
system-view
(2) 配置SSH2协议加密算法优先列表。
ssh2 algorithm cipher { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | des-cbc } *
缺省情况下,SSH2协议采用的缺省加密算法从高到底的优先级列表为aes128-ctr、aes192-ctr、aes256-ctr、aes128-gcm、aes256-gcm、aes128-cbc、3des-cbc、aes256-cbc和des-cbc。
(1) 进入系统视图。
system-view
(2) 配置SSH2协议MAC算法优先列表。
ssh2 algorithm mac { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 } *
缺省情况下,SSH2协议使用的缺省MAC算法从高到底的优先级列表为sha2-256、sha2-512、sha1、md5、sha1-96和md5-96。
在完成上述配置后,在任意视图下执行display命令,可以显示配置后SSH的运行情况,通过查看显示信息验证配置的效果。
表1-2 SSH显示和维护
操作 |
命令 |
显示本地密钥对中的公钥部分 |
display public-key local { dsa | ecdsa | rsa | sm2 } public [ name publickey-name ] |
显示保存在本地的远端主机的公钥信息 |
display public-key peer [ brief | name publickey-name ] |
显示SFTP客户端的源IP地址配置 |
display sftp client source |
显示Stelnet客户端的源IP地址配置 |
display ssh client source |
在SSH服务器端显示该服务器的状态信息或会话信息 |
display ssh server { session [ slot slot-number [ cpu cpu-number ] ] | status } |
在SSH服务器端显示SSH用户信息 |
display ssh user-information [ username ] |
显示设备上配置的SSH2协议使用的算法优先列表 |
display ssh2 algorithm |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!