配置设备作为SFTP客户端访问其他设备的文件(交互式)
SFTP是SSH协议的一部分,利用SSH协议提供的安全通道,为数据传输提供了更高的安全保障。配置设备作为SFTP客户端,远程服务器通过对客户端的认证及双向的数据加密,为文件传输及对服务器上文件目录的管理提供了安全的服务。
前置任务
在配置通过SFTP访问其他设备的文件之前,需完成以下任务:
- 当前设备和SSH服务器路由可达。
- 已获取SSH服务器的IP地址以及SSH用户信息,且SSH用户的用户级别为最高级别。
- 如果服务器不是使用标准的端口号,则还需获取服务器端设置的端口号。
为了保证更好的安全性,建议不要使用长度小于2048位的RSA认证方式。
配置流程
通过SFTP访问其他设备文件的配置流程如表7-36所示。
序号 |
配置任务名称 |
配置任务说明 |
配置流程说明 |
---|---|---|---|
1 |
客户端源地址可以配置为源接口或源IP,达到安全校验的目的。 |
序号1、2、3无序操作,SFTP连接(序号4)建立后,可执行序号5的操作,最后断开连接(序号6)。 |
|
2 |
生成本地密钥对,然后将公钥配置到SSH服务器上。 本步骤仅在设备以RSA、DSA或ECC方式登录SSH服务器的时候执行,password方式登录SSH服务器则无需执行。 |
||
3 |
有两种配置方式:使能SSH客户端首次登录功能方式和SSH客户端为SSH服务器分配公钥方式,用户可选择其一进行配置。 |
||
4 |
- |
||
5 |
用户可以通过SFTP客户端管理SSH服务器上的目录和文件,以及查看SFTP客户端命令帮助。 |
||
6 |
- |
操作步骤
- (可选)配置SFTP客户端源地址
配置源地址需要选择设备上状态稳定的接口,如LoopBack接口。该配置简化了ACL规则和安全策略的配置,只要将ACL规则的源地址或目的地址指定为该地址,就可以屏蔽接口IP地址的差异以及接口状态的影响,实现对设备进出报文的过滤。
表7-37 配置SFTP客户端源地址操作步骤
命令
说明
进入系统视图
system-view
-
配置SFTP客户端的源地址信息
sftp client-source { -a source-ip-address [ public-net | -vpn-instance vpn-instance-name ] | -i interface-type interface-number }
缺省情况下,源地址为0.0.0.0。
提交配置
commit
-
- 生成本地密钥对
此步骤仅在设备以RSA、DSA或ECC方式登录SSH服务器的时候执行,设备以password方式登录SSH服务器,则无需执行。
表7-38 生成本地密钥对操作步骤
命令
说明
进入系统视图
system-view
-
生成本地密钥对或分配PKI证书
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命令查看本地密钥对中的公钥部分信息。
提交配置
commit
-
- 配置设备首次连接SSH服务器的方式
作为客户端的设备首次连接SSH服务器时,因为客户端还没有保存过SSH服务器的公钥,无法对SSH服务器有效性进行检查,这样会导致连接不成功。可以通过下面两种方式来解决:
- 使能SSH客户端首次登录功能方式:不对SSH服务器的公钥进行有效性检查,确保首次连接成功。成功连接后,系统将自动分配并保存公钥,为下次连接时认证使用。具体配置见表7-39。此种方式配置简单。
- SSH客户端配置服务器公钥方式:将服务器端产生的公钥直接保存至客户端,保证在首次连接时SSH服务器有效性检查能够通过。具体配置见表7-40。此种方式配置较复杂,但比上面那种方式安全性更高。
表7-39 使能SSH客户端首次登录功能操作步骤
命令
说明
进入系统视图
system-view
-
使能SSH客户端首次登录功能
ssh client first-time enable
缺省情况下,SSH客户端首次登录功能是关闭的。
提交配置
commit
-
表7-40 SSH客户端为SSH服务器分配RSA、DSA或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 ]
根据生成的密钥类型,三选一。
进入公共密钥编辑视图
public-key-code begin
-
编辑公共密钥
hex-data
- 键入的公共密钥必须是按公钥格式编码的十六进制字符串,由SSH服务器随机生成。
- 进入公共密钥编辑视图后,即可将服务器上产生的RSA、DSA或ECC公钥输入到客户端。
退出公共密钥编辑视图
public-key-code end
- 如果输入的密钥编码hex-data不合法,执行本步骤后,将无法生成密钥。
- 如果指定的密钥key-name已经被删除,再执行本步骤时,系统会提示:密钥已经不存在,此时直接退到系统视图。
退出公共密钥视图,回到系统视图
peer-public-key end
-
为SSH服务器绑定RSA、DSA或ECC公钥
ssh client server-ip-address assign { rsa-key | dsa-key | ecc-key } key-name
如果SSH客户端保存的SSH服务器公钥失效,执行命令undo ssh client server-ip-address assign { rsa-key | dsa-key | ecc-key },取消SSH服务器与RSA、DSA或ECC公钥的绑定关系,再执行本命令,为SSH服务器重新分配RSA、DSA或ECC公钥。
提交配置
commit
-
- 使用SFTP命令连接其他设备
SFTP客户端连接命令跟STelnet客户端连接命令很相似,支持访问SSH服务器时携带源地址,选择密钥交换算法、加密算法和HMAC算法,以及设置keepalive功能。
表7-41 使用SFTP命令连接其他设备操作步骤
命令
说明
进入系统视图
system-view
-
(可选)配置SSH客户端的密钥交换算法列表
ssh client 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密钥交换算法。
在客户端与服务器协商的过程中,二者之间对报文传输的密钥交换算法进行协商,服务器端根据客户端发过来的密钥交换算法列表与自身的密钥交换算法列表进行对比,选择客户端与自己相匹配的第一个密钥交换算法作为报文传输的密钥交换算法,如果客户端的密钥交换算法列表与服务器端的密钥交换算法列表没有相匹配的算法,则协商失败。
(可选)配置SSH客户端的加密算法列表
ssh client cipher { des_cbc | 3des_cbc | aes128_cbc | aes256_cbc | aes128_ctr | aes256_ctr | arcfour128 | arcfour256 | aes192_cbc | aes192_ctr | aes128_gcm | aes256_gcm } *
缺省情况下,SSH客户端使用AES256_GCM、AES128_GCM、AES256_CTR、AES192_CTR和AES128_CTR加密算法。
(可选)配置SSH客户端上的校验算法列表
ssh client hmac { md5 | md5_96 | sha1 | sha1_96 | sha2_256 | sha2_256_96 | sha2_512 } *
缺省情况下,SSH客户端HMAC认证算法为SHA2_256和SHA2_512。
IPv4地址
sftp [ -a source-address | -i interface-type interface-number | -force-receive-pubkey ] host-ip [ port ] [ [ public-net | -vpn-instance vpn-instance-name ] | prefer_kex kex-type | prefer_ctos_cipher cipher-type | prefer_stoc_cipher cipher-type | prefer_ctos_hmac hmac-type | prefer_stoc_hmac hmac-type | prefer_ctos_compress compress-type | prefer_stoc_compress compress-type | -ki aliveinterval | -kc alivecountmax | identity-key { dsa | ecc | rsa | pki } | user-identity-key { dsa | ecc | rsa | pki } ] *
根据地址类型选其一。
大多数情况下,该命令可以只指定IP地址,而不需要指定其他可选项。
如果使用参数-i interface-type interface-number指定源接口,则不支持-vpn-instance vpn-instance-name参数。
IPv6地址
sftp ipv6 [ -force-receive-pubkey ] [ -a source-address ] host-ipv6 [ public-net | -vpn-instance vpn-instance-name ] [ -oi interface-type interface-number ] [ port ] [ prefer_kex kex-type | prefer_ctos_cipher cipher-type | prefer_stoc_cipher cipher-type | prefer_ctos_hmac hmac-type | prefer_stoc_hmac hmac-type | prefer_ctos_compress compress-type | prefer_stoc_compress compress-type | -ki aliveinterval | -kc alivecountmax | identity-key { dsa | ecc | rsa | pki } | user-identity-key { dsa | ecc | rsa | pki } ] *
例如:[~HUAWEI] sftp 10.137.217.201
连接成功后,屏幕会显示sftp-client>,此时已经进入了SFTP客户端视图。
- 通过SFTP命令进行文件操作
当SFTP客户端登录到SSH服务器之后,用户可以在SFTP客户端进行如表7-42所示的操作。
以下各操作没有严格顺序,可根据需求选择一种或多种操作项目。
表7-42 通过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>
一次最多可以删除十个文件。
remove与delete执行的效果是一样的。
SFTP客户端命令帮助
help [ command-name ]
-
- 断开与SFTP服务器的连接
操作步骤
命令
说明
断开与SFTP服务器的连接
quit
也可执行bye或exit命令断开连接。