通过SFTP进行文件操作
配置流程
使用SFTP V1协议存在安全风险,建议使用SFTP V2或FTPS方式进行文件操作。
通过SFTP进行文件操作的配置流程如表7-12所示。
缺省配置
参数 |
缺省值 |
---|---|
SFTP服务器功能 |
关闭 |
端口号 |
22 |
服务器密钥对更新时间 |
0,表示永不更新 |
SSH认证超时时间 |
60秒 |
SSH验证重试次数 |
3 |
SSH用户 |
没有创建 |
SSH用户的服务方式 |
空,即不支持任何服务方式 |
SSH用户的SFTP服务授权目录 |
flash: |
操作步骤
- 配置SFTP服务器功能及参数表7-14 配置SFTP服务器功能及参数
操作步骤
命令
说明
进入系统视图
system-view
-
生成本地密钥对
rsa local-key-pair create、dsa local-key-pair create或ecc local-key-pair create
根据生成的密钥类型,三选一。
密钥对生成后,可以执行display rsa local-key-pair public、display dsa local-key-pair public或display ecc local-key-pair public命令查看本地密钥对中的公钥信息。说明:密钥对长度越大,密钥对安全性就越好,建议使用最大的密钥对长度。
使能SFTP服务器功能
sftp [ ipv4 | ipv6 ] server enable
缺省情况下,SFTP服务为关闭状态。
(可选)配置SSH服务器端的密钥交换算法列表
ssh server key-exchange { dh_group14_sha256 | dh_group15_sha512 | dh_group16_sha512 | dh_group_exchange_sha256 }*
缺省情况下,SSH服务器支持所有的密钥交换算法。
系统软件中不包含dh_group_exchange_sha1、dh_group14_sha1和dh_group1_sha1参数,如需使用,需要安装WEAKEA插件,但是该算法安全性低。为了保证更好的安全性,建议使用其它算法。
您可以通过华为官网(企业、运营商)搜索“插件使用指南”,请根据交换机型号及软件版本选择相应的《插件使用指南》。如无权限,请联系技术支持人员。
(可选)配置SSH服务器端的加密算法列表
ssh server cipher { aes128_ctr | aes256_ctr } *
缺省情况下,SSH服务器支持所有加密算法。
系统软件中不包含aes256_cbc、aes128_cbc、3des_cbc和des_cbc参数,如需使用,需要安装WEAKEA插件,但是该算法安全性低。为了保证更好的安全性,建议配置aes256_ctr或aes128_ctr参数。
您可以通过华为官网(企业、运营商)搜索“插件使用指南”,请根据交换机型号及软件版本选择相应的《插件使用指南》。如无权限,请联系技术支持人员。
(可选)配置SSH服务器上的校验算法列表
ssh server hmac sha2_256
缺省情况下,SSH服务器支持所有的校验算法。
系统软件中不包含sha2_256_96、sha1、sha1_96、md5和md5_96参数,如需使用,需要安装WEAKEA插件,但是该算法安全性低。为了保证更好的安全性,建议配置sha2_256参数。
您可以通过华为官网(企业、运营商)搜索“插件使用指南”,请根据交换机型号及软件版本选择相应的《插件使用指南》。如无权限,请联系技术支持人员。
(可选)配置与SSH客户端进行Diffie-hellman-group-exchange密钥交换时,支持的最小密钥长度
ssh server dh-exchange min-len min-len
缺省情况下,SSH服务器与客户端进行Diffie-hellman-group-exchange密钥交换时,支持的最小密钥长度为1024字节。
(可选)端口号
ssh [ ipv4 | ipv6 ] server port port-number
缺省情况下,SSH服务器的端口号是22。
如果配置了新的端口号,SSH服务器端先断开当前已经建立的所有SSH连接,然后使用新的端口号开始尝试连接。这样可以有效防止攻击者对SSH服务标准端口的访问,确保安全性。
(可选)服务器密钥对更新时间
ssh server rekey-interval hours
缺省情况下,SSH服务器密钥对的更新时间间隔为0,表示永不更新。
配置服务器密钥对更新时间,使得当SSH服务器的更新周期到达时,自动更新服务器密钥对,从而可以保证安全性。
该命令只在SSH1.X版本生效。SSH1.X的安全性较低,不推荐使用。
(可选)指定SSH服务器的公钥算法
ssh server publickey { dsa | ecc | rsa } *
缺省情况下,DSA、ECC、RSA公钥算法都是开启的。
(可选)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
缺省情况下,没有配置访问控制列表。
配置了访问控制列表,可控制哪些客户端能以SSH方式访问本设备。
(可选)配置SSH服务器的源接口
ssh server-source -i loopback interface-number
缺省情况下,未指定SSH服务器端的源接口。
说明:指定SSH服务器端的源接口前,必须已经成功创建LoopBack接口,否则会导致本配置无法成功执行。
- 生成本地RSA密钥对时,将同时生成两个密钥对:服务器密钥对和主机密钥对,二者分别包括一个公钥和一个私钥。服务器密钥对和主机密钥对的长度均为2048位。
- 生成本地DSA密钥对时,只生成一个主机密钥对,长度可为1024、2048。缺省情况下,密钥对的长度为2048位。
- 生成本地ECC密钥对时,只生成一个主机密钥对,长度可为256、384、521。缺省情况下,密钥对的长度为521位。
- 配置SSH用户登录的用户界面
使用SFTP协议,用户将通过VTY用户界面登录设备,所以需要配置VTY用户界面的相关属性
表7-15 配置SSH用户登录的用户界面操作步骤
命令
说明
进入系统视图
system-view
-
进入VTY用户界面视图
user-interface vty first-ui-number [ last-ui-number ]
-
配置VTY用户界面的验证方式为AAA
authentication-mode aaa
缺省情况下,VTY用户界面没有验证方式。
必须配置VTY用户界面验证方式为AAA验证,否则protocol inbound ssh不能配置成功,用户也将无法登录设备。
配置VTY用户界面支持SSH协议
protocol inbound ssh
缺省情况下,用户界面支持的协议是SSH。
如果不配置某个或某几个VTY用户界面支持SSH协议,则SSH用户不能登录设备。
配置VTY用户界面的用户优先级
user privilege level level
必须将用户级别配置为3级及3级以上,否则连接不成功。
如果是password认证用户,还可以执行local-user user-name privilege level level命令配置本地用户的用户级别为3级及3级以上。
(可选)VTY用户界面其他属性
-
除配置VTY用户界面的验证方式和用户优先级外,VTY用户界面的其他属性包括:- VTY用户界面的最大个数
- VTY用户界面的呼入呼出限制
- VTY用户界面的终端属性
- 配置SSH用户配置SSH用户包括配置SSH用户的验证方式,设备支持的认证方式包括RSA、password、password-rsa、DSA、password-dsa、ECC、password-ecc和all。其中:
- password-rsa认证需要同时满足password认证和RSA认证。
- password-dsa认证需要同时满足password认证和DSA认证。
- password-ecc认证需要同时满足password认证和ECC认证。
- all认证是指password认证、RSA、DSA或ECC认证方式满足其中一种即可。
表7-16 配置SSH用户操作步骤
命令
说明
进入系统视图
system-view
-
创建SSH用户
ssh user user-name
-
配置SSH用户的认证方式
ssh user user-name authentication-type { password | rsa | password-rsa | dsa | password-dsa | ecc | password-ecc | all }
如果没有使用ssh user命令配置相应的SSH用户,则可以直接执行ssh authentication-type default password命令为用户配置SSH认证缺省采用密码认证,在用户数量比较多时,对用户使用缺省密码认证方式可以简化配置,此时只需再配置AAA用户即可。
说明:当认证方式为all认证时,用户的优先级需根据接入用户选择的认证方式来决定:
- 如果接入用户选择的认证方式为password认证,则用户优先级为AAA中设置的用户优先级。
- 如果接入用户选择的认证方式为RSA、DSA或ECC认证,则用户的优先级由用户接入时所采用的VTY界面的优先级决定。
如果SSH用户认证方式为all认证,且存在一个同名AAA用户,那通过这两种方式接入时用户优先级可能不同,请根据需要进行部署。
配置SSH用户的服务方式为SFTP或all
ssh user username service-type { sftp | all }
缺省情况下,SSH用户的服务方式是空,即不支持任何服务方式。
配置SSH用户的SFTP服务授权目录
ssh user username sftp-directory directoryname
缺省情况下,SSH用户的SFTP服务授权目录是flash:。
- password认证依靠AAA实现,当用户使用password、password-rsa、password-dsa或password-ecc认证方式登录设备时,需要在AAA视图下创建同名的本地用户。
- 如果SSH用户使用password认证,则只需要在SSH服务器端生成本地RSA、DSA或ECC密钥。如果SSH用户使用RSA、DSA或ECC认证,则在服务器端和客户端都需要生成本地RSA、DSA或ECC密钥对,并且服务器端和客户端都需要将对方的公钥配置到本地。
根据上面配置的认证方式,进行选择配置:表7-17 配置对SSH用户进行password、password-rsa、password-dsa或password-ecc认证操作步骤
命令
说明
进入系统视图
system-view
-
进入AAA视图
aaa
-
配置本地用户名和密码
local-user user-name password irreversible-cipher password
-
配置本地用户的服务方式
local-user user-name service-type ssh
-
配置本地用户的级别
local-user user-name privilege level level
-
退回到系统视图
quit
-
表7-18 配置对SSH用户进行dsa、rsa、ecc、password-dsa、password-rsa或password-ecc认证操作步骤
命令
说明
进入系统视图
system-view
-
进入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 | openssh | pem }
-
进入公共密钥编辑视图
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
-
- 用户通过SFTP协议访问设备
从终端通过SFTP访问设备,需要在终端上安装SSH客户端软件。此处以使用第三方软件OpenSSH和Windows命令行提示符为例进行配置。
OpenSSH软件的安装请参考该软件的安装说明。
使用OpenSSH软件从终端访问设备时,需要使用OpenSSH的命令,命令的使用可以参见该软件的帮助文档。
只有安装了OpenSSH软件后,Windows命令行提示符才能识别OpenSSH相关命令。
进入Windows的命令行提示符,执行OpenSSH命令,通过SFTP方式访问设备。
当出现SFTP客户端视图的命令行提示符,如sftp>,此时用户进入了SFTP服务器的工作目录。(以下显示信息仅为示意)
C:\Documents and Settings\Administrator> sftp sftpuser@10.136.23.5 Connecting to 10.136.23.5... 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. User Authentication Password: sftp>
- 通过SFTP命令进行文件操作
当SFTP客户端登录到SSH服务器之后,用户可以在SFTP客户端进行如表7-19所示的操作。
以下各操作没有严格顺序,可根据需求选择一种或多种操作项目。
在SFTP客户端视图下,文件操作命令不支持联想功能,必须手动输入完整的命令,否则会提示是不支持的命令。
由于文件系统对根目录下的文件个数有限制,当根目录中文件个数大于50个时,继续在根目录中创建文件可能会失败。
表7-19 通过SFTP文件操作命令进行文件操作操作项目
命令
说明
改变用户的当前工作目录
cd [ remote-directory ]
-
改变用户的工作目录为当前工作目录的上一级目录
cdup
-
显示用户的当前工作目录
pwd
-
显示指定目录下的文件列表
dir/ls [ -l | -a ] [ remote-directory ]
dir与ls执行的效果是一样的。
删除服务器上目录
rmdir remote-directory &<1-10>
一次最多可以删除十个目录。
使用该命令删除目录时,目录中不能有文件,否则会删除失败。
在服务器上创建新目录
mkdir remote-directory
-
改变服务器上指定的文件的名字
rename old-name new-name
-
下载远程服务器上的文件
get remote-filename [ local-filename ]
-
上传本地文件到远程服务器
put local-filename [ remote-filename ]
-
删除服务器上文件
remove remote-filename &<1-10>
一次最多可以删除十个文件。
SFTP客户端命令帮助
help [ all | command-name ]
-
用户也可以在系统视图下执行如下命令下载服务器上的文件或者上传本地文件到远程服务器中:
- IPv4地址:sftp client-transfile { get | put } [ -a source-address | -i interface-type interface-number ] host-ip host-ipv4 [ port ] [ [ public-net | -vpn-instance vpn-instance-name ] | prefer_kex prefer_key-exchange | identity-key { rsa | dsa | ecc } | prefer_ctos_cipher prefer_ctos_cipher | prefer_stoc_cipher prefer_stoc_cipher | prefer_ctos_hmac prefer_ctos_hmac | prefer_stoc_hmac prefer_stoc_hmac | -ki aliveinterval | -kc alivecountmax ] * username user-name password password sourcefile source-file [ destination destination ]
- IPv6地址:sftp client-transfile { get | put } ipv6 [ -a source-address ] host-ip host-ipv6 [ -oi interface-type interface-number ] [ port ] [ -vpn-instance vpn-instance-name | prefer_kex prefer_key-exchange | identity-key { rsa | dsa | ecc } | prefer_ctos_cipher prefer_ctos_cipher | prefer_stoc_cipher prefer_stoc_cipher | prefer_ctos_hmac prefer_ctos_hmac | prefer_stoc_hmac prefer_stoc_hmac | -ki aliveinterval | -kc alivecountmax ] * username user-name password password sourcefile source-file [ destination destination ]
- 断开与SFTP服务器的连接
操作步骤
命令
说明
断开与SFTP服务器的连接
quit
-