通过SCP进行文件操作
SCP使得用户终端可以在SSH协议的基础上,与远端设备建立连接的同时完成文件上传和下载的操作。
配置流程
通过SCP进行文件操作的配置流程如表7-21所示。
缺省配置
参数 |
缺省值 |
---|---|
SCP服务器功能 |
关闭 |
端口号 |
22 |
服务器密钥对更新时间 |
0,表示永不更新 |
SSH认证超时时间 |
60秒 |
SSH验证重试次数 |
3 |
SSH用户 |
没有创建 |
SSH用户的服务方式 |
空,即不支持任何服务方式 |
操作步骤
- 配置SCP服务器功能及参数表7-23 配置SCP服务器功能及参数
操作步骤
命令
说明
进入系统视图
system-view
-
生成本地密钥对或分配PKI证书
方式一:
执行命令rsa local-key-pair create、dsa local-key-pair create或ecc local-key-pair create,生成本地RSA、DSA或ECC密钥对。
方式二:执行命令rsa key-pair label label-name [ modulus modulus-bits ]、dsa key-pair label label-name [ modulus modulus-bits ]或ecc key-pair label label-name [ modulus modulus-bits ],生成带标签的RSA、DSA或ECC密钥对。
- 执行命令ssh server assign { rsa-host-key | dsa-host-key | ecc-host-key | pki } label-name,为SSH服务器分配PKI证书、RSA主机密钥、RSA服务器密钥、DSA主机密钥或ECC主机密钥。
说明:方式二可以最多生成20对密钥对,用户可以在不同时期使用不同的密钥对,更好地确保了通信的安全性。设备最多可生成的密钥对数,可以通过rsa key-pair maximum、dsa key-pair maximum和ecc key-pair maximum命令配置。
用户也可以执行命令rsa key-pair label load private private-key public public-key或dsa key-pair label load private private-key public public-key,将本地RSA密钥对文件或DSA密钥对文件加载到服务器。
对于方式一:
密钥对生成后,可以执行display rsa local-key-pair public、display dsa local-key-pair public或display ecc local-key-pair public命令查看本地密钥对中RSA、DSA或ECC的公钥信息。
对于方式二:
密钥对生成后,可以执行display rsa key-pair [ brief | label label-name ]、display dsa key-pair [ brief | label label-name ]或display ecc key-pair [ brief | label label-name ]命令查看带标签的RSA、DSA或ECC密钥对信息。说明:密钥对长度越大,密钥对安全性就越好,建议使用最大的密钥对长度。
使能SSH服务器公钥算法
ssh server publickey { dsa | ecc | rsa | x509v3-ssh-rsa } *
缺省情况下,RSA公钥算法是开启的。
当使用公钥认证或者证书认证登录设备时,SSH服务器支持的公钥算法需要与命令ssh user authentication-type配置SSH用户的认证方式相同,否则用户无法登录设备。
说明:为了保证更好的安全性,建议不要使用长度小于2048位的RSA认证算法。
使能SCP服务器功能
scp [ ipv4 | ipv6 ] server enable
缺省情况下,SCP服务为关闭状态。
(可选)配置SSH服务器端的密钥交换算法列表
ssh server key-exchange{ dh_group14_sha1 | dh_group1_sha1 | dh_group_exchange_sha1 | dh_group_exchange_sha256 | ecdh_sha2_nistp256 | ecdh_sha2_nistp384 | ecdh_sha2_nistp521 | sm2_kep } *
缺省情况下,SSH服务器使用dh_group_exchange_sha256密钥交换算法。
在客户端与服务器协商的过程中,二者对报文传输的密钥交换算法进行协商,服务器端根据客户端发来的密钥交换算法列表与自身的密钥交换算法列表进行对比,选择客户端与自己相匹配的第一个密钥交换算法作为报文传输的密钥交换算法,如果客户端的密钥交换算法列表与服务器端的密钥交换算法列表没有相匹配的算法,则协商失败。说明:当服务器上的公钥算法为ECC时,系统的首选交换算法必须是sm2_kep。
(可选)配置与SSH客户端进行Diffie-hellman-group-exchange密钥交换时支持的最小密钥长度。
ssh server dh-exchange min-len min-len
缺省情况下,SSH服务器与客户端进行Diffie-hellman-group-exchange密钥交换时,支持的最小密钥长度为2048bits。
(可选)配置SSH服务器端的加密算法列表
ssh server cipher { des_cbc | 3des_cbc | aes128_cbc | aes256_cbc | aes128_ctr | aes256_ctr | arcfour128 | arcfour256 | aes192_cbc | aes192_ctr | aes128_gcm | aes256_gcm | blowfish_cbc } *
缺省情况下,SSH服务器端使用AES256_GCM、AES128_GCM、AES256_CTR、AES192_CTR和AES128_CTR加密算法。
(可选)配置SSH服务器上的校验算法列表
ssh server hmac { md5 | md5_96 | sha1 | sha1_96 | sha2_256 | sha2_256_96 | sha2_512 } *
缺省情况下,SSH服务器端HMAC认证算法为SHA2_256和SHA2_512。
(可选)配置SCP服务器允许同时接入SCP客户端的个数
scp max-sessions max-session-count
缺省情况下,SCP服务器允许同时接入SCP客户端的个数为2。
(可选)端口号
ssh [ ipv4 | ipv6 ] server port port-number
缺省情况下,SSH服务器的端口号是22。
如果配置了新的端口号,SSH服务器端先断开当前已经建立的所有SSH连接,然后使用新的端口号开始尝试连接。这样可以有效防止攻击者对SSH服务标准端口的访问,确保安全性。
(可选)服务器密钥对更新时间
ssh server rekey-interval hours
缺省情况下,SSH服务器密钥对的更新时间间隔为0,表示永不更新。
配置服务器密钥对更新时间,使得当SSH服务器的更新周期到达时,自动更新服务器密钥对,从而可以保证安全性。
(可选)SSH认证超时时间
ssh server timeout seconds
缺省情况下,SSH连接认证超时时间为60秒。
(可选)SSH验证重试次数
ssh server authentication-retries times
缺省情况下,SSH连接的验证重试次数为3。
(可选)使能兼容低版本功能
ssh server compatible-ssh1x enable
缺省情况下,SSH服务器兼容低版本功能处于未使能状态。
(可选)配置访问控制列表
ssh [ ipv6 ] server acl { acl-number | acl-name }
缺省情况下,没有配置访问控制列表。
配置了访问控制列表,可控制哪些客户端能以SSH方式访问本设备。
(可选)使能SSH服务器上的keepalive特性
undo ssh server keepalive disable
缺省情况下,SSH服务器上的keepalive特性处于使能状态。
SSH服务器在使能keepalive特性之后,若收到SSH客户端的keepalive报文之后,会进行响应。这样防止在无数据交互时断开与SSH客户端的连接,避免造成客户端重新连接服务器浪费服务器资源。
配置SSH服务器的源接口或源地址
执行命令ssh server-source -i interface-type interface-number
缺省情况下,未指定SSH服务端的源接口。
执行命令ssh server-source all-interface
缺省情况下,未指定SSH服务器的源接口。
执行命令ssh ipv6 server-source -a ipv6-address [ -vpn-instance vpn-instance-name ]
缺省情况下,未指定SSH服务端的IPv6源地址。
执行命令ssh ipv6 server-source all-interface
缺省情况下,未指定SSH服务器IPv6源接口。
成功指定SSH服务器的源接口后,系统只允许SSH用户通过指定的源接口登录服务器,通过其他接口登录的SSH用户都将被拒绝。
成功指定SSH服务器的源接口为设备上所有接口后,SSH用户可通过设备上配置了IPv4地址的物理接口、已创建并配置IPv4地址的逻辑接口登录。
说明:配置ssh server-source all-interface命令后,将不会指定SSH服务器的源接口,用户可从所有有效接口登录,增加系统安全风险,建议用户取消配置该命令。
成功指定SSH服务器的IPv6源地址后,系统只允许SFTP用户通过指定的源地址登录服务器,通过其他IPv6地址登录的SFTP用户都将被拒绝。
说明:配置ssh ipv6 server-source all-interface命令后,将不会指定SSH服务器的源IPv6接口,用户可从所有有效IPv6接口登录,增加系统安全风险,建议用户取消配置该命令。
提交配置
commit
-
- 生成本地RSA密钥对时,将同时生成两个密钥对:服务器密钥对和主机密钥对,二者分别包括一个公钥和一个私钥。服务器密钥对和主机密钥对的长度均为2048或者3072位。
- 生成本地DSA密钥对时,只生成一个主机密钥对,密钥对的长度为2048位。
- 生成本地ECC密钥对时,只生成一个主机密钥对,长度可为256、384、521位。缺省情况下,密钥对的长度为521位。
- 配置SSH用户配置SSH用户包括配置SSH用户的验证方式,设备支持的认证方式包括RSA、password、password-rsa、DSA、password-dsa、ECC、password-ecc、x509v3-rsa、password-x509v3-rsa和all。其中:
- password-rsa认证需要同时满足password认证和RSA认证。
- password-dsa认证需要同时满足password认证和DSA认证。
- password-ecc认证需要同时满足password认证和ECC认证。
- password-x509v3-rsa认证需要同时满足password认证和x509v3-rsa认证。
- all认证是指password认证、x509v3-rsa认证、RSA、DSA或ECC认证方式满足其中一种即可。
表7-24 配置SSH用户操作步骤
命令
说明
进入系统视图
system-view
-
创建SSH用户
ssh user user-name
-
配置SSH用户的认证方式
ssh user user-name authentication-type { password | rsa | password-rsa | all | dsa | password-dsa | ecc | password-ecc | x509v3-rsa | password-x509v3-rsa }
如果没有使用ssh user user-name命令配置相应的SSH用户,则可以直接执行ssh authentication-type default password命令为用户配置SSH认证缺省采用密码认证,在用户数量比较多时,对用户使用预设密码认证方式可以简化配置,此时只需再配置AAA用户即可。
配置SSH用户的服务方式为all
ssh user username service-type all
缺省情况下,SSH用户的服务方式是空,即不支持任何服务方式。
提交配置
commit
-
- password认证依靠AAA实现,当用户使用password、password-rsa、password-dsa或password-ecc认证方式登录设备时,需要在AAA视图下创建同名的本地用户。
- 如果SSH用户使用password认证,则只需要在SSH服务器端生成本地RSA、DSA或ECC密钥。如果SSH用户使用RSA、DSA或ECC认证,则在服务器端和客户端都需要生成本地RSA、DSA或ECC密钥对,并且服务器端和客户端都需要将对方的公钥配置到本地。
根据上面配置的认证方式,进行选择配置:表7-25 配置对SSH用户进行password、password-x509v3-rsa、password-dsa、password-ecc或password-rsa认证操作步骤
命令
说明
进入系统视图
system-view
-
进入AAA视图
aaa
-
配置本地用户名和密码
local-user user-name password irreversible-cipher irreversible-cipher-password
-
配置本地用户的服务方式
local-user user-name service-type ssh
-
配置本地用户的级别
local-user user-name level level
必须将用户级别配置在管理员级别(3级或15级),否则FTP连接将无法成功。
退回到系统视图
quit
-
提交配置
commit
-
表7-26 配置对SSH用户进行dsa、ecc、rsa、password-dsa、password-ecc或password-rsa认证操作步骤
命令
说明
进入系统视图
system-view
-
配置SSH连接的认证类型
ssh authorization-type default root
缺省情况下,SSH连接的缺省类型为AAA。
当配置为AAA类型时,只允许配置为password认证方式;如果需要使用公钥认证方式,可以通过以下两种方式任意一种实现:- 执行此命令,配置为Root类型。
- 在AAA视图下,创建同名的本地用户。
进入RSA、DSA或ECC公共密钥视图
rsa peer-public-key key-name [ encoding-type { der | openssh | pem } ]
或
dsa peer-public-key key-name encoding-type { der | openssh | pem }
或
ecc peer-public-key key-name [ encoding-type der ]
-
进入公共密钥编辑视图
public-key-code begin
-
编辑公共密钥
hex-data
- 键入的公共密钥必须是按公钥格式编码的十六进制字符串,由支持SSH的客户端软件生成。具体操作参见相应的SSH客户端软件的帮助文档。
- 请将RSA、DSA或ECC公钥输入到作为SSH服务器的设备上。
退出公共密钥编辑视图
public-key-code end
- 如果未输入合法的密钥编码hex-data,执行本步骤后,将无法生成密钥。
- 如果指定的密钥key-name已经在别的窗口下被删除,再执行本步骤时,系统会提示:密钥已经不存在,此时直接退到系统视图。
退出公共密钥视图,回到系统视图
peer-public-key end
-
为SSH用户分配RSA、DSA或ECC公钥
ssh user user-name assign { rsa-key | dsa-key | ecc-key } key-name
-
提交配置
commit
-
表7-27 配置对SSH用户进行x509v3-rsa或password-x509v3-rsa认证操作步骤
命令
说明
进入系统视图
system-view
-
为SSH用户绑定PKI证书
ssh user user-name assign pki pki-name
当前仅支持为SSH用户分配default证书。
提交配置
commit
-
- 用户通过SCP进行文件操作
从终端通过SCP方式上传或下载文件,需要在终端上安装支持SCP的SSH客户端软件。此处以使用第三方软件OpenSSH和Windows命令行提示符为例进行配置。
OpenSSH软件的安装请参考该软件的安装说明。
使用OpenSSH软件从终端访问设备时,需要使用OpenSSH的命令,命令的使用可以参见该软件的帮助文档。
只有安装了OpenSSH软件后,Windows命令行提示符才能识别OpenSSH相关命令。
进入Windows的命令行提示符,执行OpenSSH命令,通过SCP方式进行文件操作。(以下显示信息仅为示意)
C:\Documents and Settings\Administrator> scp scpuser@10.136.23.5:flash:/vrpcfg.zip vrpcfg-backup.zip The authenticity of host '10.136.23.5 (10.136.23.5)' can't be established. DSA key fingerprint is 46:b2:8a:52:88:42:41:d4:af:8f:4a:41:d9:b8:4f:ee. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.136.23.5' (DSA) to the list of known hosts. scpuser@10.136.23.5's password: vrpcfg.zip 100% 1257 1.2KB/s 00:00 Read from remote host 10.136.23.5: Connection reset by peer C:\Documents and Settings\Administrator>
可以看到,用户终端通过SCP方式,在与远端设备建立连接的同时完成了文件上传或下载的操作,最后又回到了用户本地路径。