通过SCP备份配置文件

功能简介

在FortiGate设备上启用SCP管理后,用户可以使用SCP协议(基于SSH)从FortiGate设备下载/上传配置或上传固件版本。本文介绍如何通过常见的SCP客户端来备份或上传FortiGate的配置文件。

SCP传输分为两种认证模式:

  • 用户名/密码认证(每次登录都需要输入密码)
  • SSH密钥认证(生成密钥对并保存后,每次登录不需要输入密码)

以下是通过SCP备份配置文件的步骤,用户可自行编写Python脚本执行定期配置文件的备份。

FortiGate开启SCP管理

  1. 在FortiGate需要用于SCP传输的接口上开启SSH管理协议。

    config system interface
        edit "internal5"
            append allowaccess ssh
        next
    end
    
  2. 在全局模式下开启SCP管理功能,并确认SSH管理端口号(默认为22)。

    config system global
        set admin-scp enable
        set admin-ssh-port 22
    end
    

SCP使用用户名/密码认证

Windows

  1. 打开CMD终端窗口,执行scp admin@<FortiGate_IP>:sys_config <location>命令下载配置文件到本地,如下所示,第一次SCP访问FortiGate时会提示是否信任该主机,输入yes后回车。输入password为FortiGate管理员admin的密码(也可使用其他有权限的管理员账户),备份配置成功,配置文件被下载到指定目录。

    scp admin@10.10.12.1:sys_config d:\Downloads\ver
    

    image-20240318160003101

  2. 在FortiGate上查看系统事件日志,可以看到客户端通过SCP备份配置文件的日志。

    image-20240318160246030

    date=2024-03-18 time=15:57:20 eventtime=1710748639686766920 tz="+0800" logid="0100032143" type="event" subtype="system" level="warning" vd="root" logdesc="System configuration backed up by SCP" user="admin" ui="sshd" action="backup" msg="User admin backed up the configuration by SCP"
    

    上传(恢复)配置文件请使用scp <path_to_config_file> admin@<FortiGate_IP>:fgt-restore-config命令,例如scp d:\Downloads\ver\sys_config admin@10.10.12.1:fgt-restore-config

    注意上传配置文件后FortiGate会立即重启,如果FortiGate属于HA集群,那么HA集群内的所有FortiGate都会重启并恢复此配置(不包含HA不同步的配置)。

macOS/Linux

  1. 打开终端窗口,执行scp admin@<FortiGate_IP>:sys_config <location>命令下载配置文件到本地,如下所示,第一次SCP访问FortiGate时会提示是否信任该主机,输入yes后回车。输入的password为管理员admin的密码,备份配置成功,配置文件被下载到指定目录。

    如果客户端openSSH为9.0及以上版本,需要在scp命令后加上-O选项,scp -O admin@<FortiGate_IP>:sys_config <location>

    scp -O admin@10.10.12.1:sys_config ~/Downloads/ver
    

    image-20240318161914125

    上传(恢复)配置文件请使用scp <path_to_config_file> admin@<FortiGate_IP>:fgt-restore-config命令,例如scp ~/Downloads/ver/sys_config admin@10.10.12.1:fgt-restore-config

    注意上传配置文件后FortiGate会立即重启,如果FortiGate属于HA集群,那么HA集群内的所有FortiGate都会重启并恢复此配置。

  2. 在FortiGate上查看系统事件日志,可以看到客户端通过SCP备份配置文件的日志(略,参考Windows SCP备份配置文件FortiGate产生的日志)。

SCP使SSH密钥认证

Windows

  1. 打开CMD终端窗口,在默认路径下(一般为C:\Users\<username>,如此例中的路径为C:\Users\cyndi),使用ssh-keygen -t ed25519命令,生成SSH密钥对,推荐使用ed25519算法。

    -t后跟随的ed25519表示SSH密钥算法,在SCP命令中可以使用dsa、ecdsa、ecdsa-sk、ed25519、ed25519-sk、rsa。

    FortiGate使用ed25519和rsa作为默认的SSH密钥算法,在FortiOS 7.4.2之前,SSH密钥算法是无法更改的。

    在FortiOS 7.4.2及更新版本中,可以自定义SSH密钥算法:

    FortiGate # config system global
    FortiGate (global) # set ssh-hostkey-algo ?
    ecdsa-sha2-nistp521    ecdsa-sha2-nistp521
    ecdsa-sha2-nistp384    ecdsa-sha2-nistp384
    ecdsa-sha2-nistp256    ecdsa-sha2-nistp256
    rsa-sha2-256           rsa-sha2-256
    rsa-sha2-512           rsa-sha2-512
    ssh-ed25519            ssh-ed25519
    

    image-20240319102621437

  2. 如下所示,客户端在CMD下的默认目录(C:\Users\cyndi)生成了SSH密钥对的文件夹,该密钥对所属文件夹的名称为.ssh,由于在生成时没有自定义密钥文件名称,密钥对文件的名称为默认名称。

    image-20240319102840998

  3. 使用记事本打开生成的公钥文件(后缀为pub,此例中为C:\Users\cyndi\.ssh\id_ed25519.pub),如下所示。

    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIABtVpehNaFSWbOP13OaZKyxFsvAlSW/jtFidqa7l0xD cyndi@Summerice-XPS17
    

    可以看到公钥文件id_ed25519.pub由三部分组成,需要收集的为公钥文件中的前两部分:

    • ssh-ed25519:SSH使用的密钥算法。
    • AAAAC3NzaC1lZDI1NTE5AAAAIABtVpehNaFSWbOP13OaZKyxFsvAlSW/jtFidqa7l0xD:公钥文本。
    • cyndi@Summerice-XPS17:用户邮箱,系统根据系统用户名与主机名自动生成,也可在生成密钥对时使用-C参数手工指定。
  4. 在FortiGate的CLI中,编辑管理员admin的配置,设置ssh-public-key1的内容为公钥文件中的前两部分,即SSH使用的密钥算法和公钥文本,中间以空格隔开,前后要加上英文的双引号"",如下所示,"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIABtVpehNaFSWbOP13OaZKyxFsvAlSW/jtFidqa7l0xD"

    最多可设置3个ssh-public-key),ssh-public-key的格式输入正确时,会提示SSH key is good.

    FortiGate # config sys admin
    FortiGate (admin) # edit admin
    FortiGate (admin) # set ssh-public-key1 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIABtVpehNaFSWbOP13OaZKyxFsvAlSW/jtFidqa7l0xD"
    SSH key is good.
    FortiGate (admin) # end
    FortiGate #
    
  5. 在Windows下打开CMD终端窗口,执行scp admin@<FortiGate_IP>:sys_config <location>命令下载配置文件到本地,如下所示,第一次SCP访问FortiGate时会提示是否信任该主机,输入yes后回车。不需要输入管理员密码,备份配置成功,配置文件被下载到指定目录。

    如果.ssh文件夹下有多个SSH公钥文件,也可使用-i <pubkey_location>参数指定某个公钥文件进行SCP协商。

    scp admin@10.10.12.1:sys_config d:\Downloads\ver
    

    image-20240319110023553

    上传(恢复)配置文件请使用scp <path_to_config_file> admin@<FortiGate_IP>:fgt-restore-config命令,例如scp d:\Downloads\ver\sys_config admin@10.10.12.1:fgt-restore-config

    注意上传配置文件后FortiGate会立即重启,如果FortiGate属于HA集群,那么HA集群内的所有FortiGate都会重启并恢复此配置(不包含HA不同步的配置)。

  6. 在FortiGate上查看系统事件日志,可以看到客户端通过SCP备份配置文件的日志(略,参考Windows SCP使用管理员账户密码方式备份配置文件FortiGate产生的日志)。

macOS/Linux

  1. 以macOS为例,打开终端窗口,在默认路径下(一般为/Users/<username>,如此例中的路径为/Users/summerice),使用ssh-keygen -t ed25519命令,生成SSH密钥对,推荐使用ed25519算法。

    -t后跟随的ed25519表示SSH密钥算法,在SCP命令中可以使用dsa、ecdsa、ecdsa-sk、ed25519、ed25519-sk、rsa。

    FortiGate使用ed25519和rsa作为默认的SSH密钥算法,在FortiOS 7.4.2之前,SSH密钥算法是无法更改的。

    在FortiOS 7.4.2及更新版本中,可以自定义SSH密钥算法:

    FortiGate # config system global
    FortiGate (global) # set ssh-hostkey-algo ?
    ecdsa-sha2-nistp521    ecdsa-sha2-nistp521
    ecdsa-sha2-nistp384    ecdsa-sha2-nistp384
    ecdsa-sha2-nistp256    ecdsa-sha2-nistp256
    rsa-sha2-256           rsa-sha2-256
    rsa-sha2-512           rsa-sha2-512
    ssh-ed25519            ssh-ed25519
    

    image-20240319111057882

  2. 如下所示,客户端在终端下的默认目录(/Users/summerice,在macOS或Linux下也可以用~表示该目录)生成了SSH密钥对的文件夹,该密钥对所属文件夹的名称为.ssh,由于在生成时没有自定义密钥文件名称,密钥对文件的名称为默认名称。

    image-20240319111610057

  3. 使用cat命令查看生成的公钥文件(后缀为pub,此例中为~/.ssh/id_ed25519.pub)的内容,如下所示。

    $ cat ~/.ssh/id_ed25519.pub
    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGGp5Pv2JGgGjmV+jOeSPwEbJsMAiz7tLJDsZQpCAvwg summerice@Summerices-MacBook-Pro.local
    

    可以看到公钥文件id_ed25519.pub由三部分组成,需要收集的为公钥文件中的前两部分:

    • ssh-ed25519:SSH使用的密钥算法。
    • AAAAC3NzaC1lZDI1NTE5AAAAIGGp5Pv2JGgGjmV+jOeSPwEbJsMAiz7tLJDsZQpCAvwg:公钥文本。
    • summerice@Summerices-MacBook-Pro.local:用户邮箱,系统根据系统用户名与主机名自动生成,也可在生成密钥对时使用-C参数手工指定。
  4. 在FortiGate的CLI中,编辑管理员admin的配置,设置ssh-public-key2的内容为公钥文件中的前两部分,即SSH使用的密钥算法和公钥文本,中间以空格隔开,前后要加上英文的双引号"",如下所示,"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGGp5Pv2JGgGjmV+jOeSPwEbJsMAiz7tLJDsZQpCAvwg"

    最多可设置3个ssh-public-keyssh-public-key的格式输入正确时,会提示SSH key is good.

    FortiGate # config sys admin
    FortiGate (admin) # edit admin
    FortiGate (admin) # set ssh-public-key2 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGGp5Pv2JGgGjmV+jOeSPwEbJsMAiz7tLJDsZQpCAvwg"
    SSH key is good.
    FortiGate (admin) # end
    FortiGate #
    
  5. 打开macOS的终端窗口,执行scp admin@<FortiGate_IP>:sys_config <location>命令下载配置文件到本地,如下所示,第一次SCP访问FortiGate时会提示是否信任该主机,输入yes后回车。不需要输入管理员密码,备份配置成功,配置文件被下载到指定目录。

    如果客户端openSSH为9.0及以上版本,需要在scp命令后加上-O选项,scp -O admin@<FortiGate_IP>:sys_config <location>

    scp -O admin@10.10.12.1:sys_config ~/Downloads/ver
    

    image-20240319112827165

    上传(恢复)配置文件请使用sudo scp -O <path_to_config_file> admin@<FortiGate_IP>:fgt-restore-config命令,例如sudo scp -O ~/Downloads/ver/sys_config admin@10.10.12.1:fgt-restore-config

    注意上传配置文件后FortiGate会立即重启,如果FortiGate属于HA集群,那么HA集群内的所有FortiGate都会重启并恢复此配置。

  6. 在FortiGate上查看系统事件日志,可以看到客户端通过SCP备份配置文件的日志(略,参考Windows SCP使用管理员账户密码方式备份配置文件FortiGate产生的日志)。

Copyright © 2024 Fortinet Inc. All rights reserved. Powered by Fortinet TAC Team.
📲扫描下方二维码分享此页面👇
该页面修订于: 2024-03-20 09:38:19

results matching ""

    No results matching ""