配置设备作为SFTP客户端访问其他设备的文件(一键式)
设备作为SFTP客户端,一键式访问SFTP服务器,可以同时实现连接及文件上传/下载的文件服务。
前置任务
在配置通过SFTP访问其他设备的文件之前,需在SSH服务器上完成基本的SSH服务器功能,其中必须满足:
客户端和SSH服务器之间路由可达。如果服务器不是使用标准的端口号,则需获取服务器端设置的端口号。
已获取SSH服务器的IP地址以及SSH用户信息。
服务器的SFTP服务必须使能,服务类型需包括SFTP,且SSH用户的认证方式为密码认证。
为了保证更好的安全性,建议不要使用长度小于2048位的RSA认证方式。
操作步骤
- (可选)配置SFTP客户端源地址
配置源地址需要选择设备上状态稳定的接口,如LoopBack接口。该配置简化了ACL规则和安全策略的配置,只要将ACL规则的源地址或目的地址指定为该地址,就可以屏蔽接口IP地址的差异以及接口状态的影响,实现对设备进出报文的过滤。
表7-43 配置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
-
- 配置设备首次连接SSH服务器的方式
作为客户端的设备首次连接SSH服务器时,因为客户端还没有保存过SSH服务器的公钥,无法对SSH服务器有效性进行检查,这样会导致连接不成功。可以通过下面两种方式来解决:
- 使能SSH客户端首次登录功能方式:不对SSH服务器的公钥进行有效性检查,确保首次连接成功。成功连接后,系统将自动分配并保存公钥,为下次连接时认证使用。具体配置见表7-44。此种方式配置简单。
- SSH客户端配置服务器公钥方式:将服务器端产生的公钥直接保存至客户端,保证在首次连接时SSH服务器有效性检查能够通过。具体配置见表7-45。此种方式配置较复杂,但比上面那种方式安全性更高。
表7-44 使能SSH客户端首次登录功能操作步骤
命令
说明
进入系统视图
system-view
-
使能SSH客户端首次登录功能
ssh client first-time enable
缺省情况下,SSH客户端首次登录功能是关闭的。
提交配置
commit
-
表7-45 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服务器并传输文件表7-46 连接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连接。
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_kex | identity-key { rsa | dsa | ecc | pki } | 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 interval | -kc count ] ] * username user-name password password sourcefile source-file [ destination destination ]
根据地址类型选其一。
大多数情况下,该命令可以只指定IP地址,而不需要指定其他可选项。
如果使用参数-i interface-type interface-number指定源接口,则不支持-vpn-instance vpn-instance-name参数。
基于IPv6建立SFTP连接。
sftp client-transfile { get | put } ipv6 [ -a source-ipv6-address ] host-ip host-ipv6 [ -oi interface-type interface-number ] [ port ] [ [ public-net | -vpn-instance vpn-instance-name | prefer_kex prefer_kex | 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 interval | -kc count ] ] * username user-name password password sourcefile source-file [ destination destination ]
以下内容仅为示例,具体以设备为准。<HUAWEI> system-view [~HUAWEI] sftp client-transfile get host-ip 10.10.1.1 user abcd001 password Huawei@123 sourcefile sourcefile.txt Trying 10.10.1.1 ... Press CTRL+K to abort Connected to 10.10.1.1 ... Remote file: /sourcefile.txt ---> Local file: 1#flash:/sourcefile.txt Downloading the file. Please wait.. Downloading file successfully ended. File download is completed in 375 seconds.