通过 SCP 备份配置文件
通过 SCP 备份配置文件
功能简介
在 FortiGate 设备上启用 SCP 管理后,用户可以使用 SCP 协议(基于 SSH)从 FortiGate 设备下载/上传配置或上传固件版本。本文介绍如何通过常见的 SCP 客户端来备份或上传 FortiGate 的配置文件。
SCP 传输分为两种认证模式:
- 用户名/密码认证(每次登录都需要输入密码)
- SSH 密钥认证(生成密钥对并保存后,每次登录不需要输入密码)
以下是通过 SCP 备份配置文件的步骤,用户可自行编写 Python 脚本执行定期配置文件的备份。
FortiGate 开启 SCP 管理
在 FortiGate 需要用于 SCP 传输的接口上开启 SSH 管理协议。
config system interface edit "internal5" append allowaccess ssh next end在全局模式下开启 SCP 管理功能,并确认 SSH 管理端口号(默认为 22)。
config system global set admin-scp enable set admin-ssh-port 22 end
SCP 使用用户名/密码认证
Windows
打开 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
在 FortiGate 上查看系统事件日志,可以看到客户端通过 SCP 备份配置文件的日志。

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
打开终端窗口,执行
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
重要
上传(恢复)配置文件请使用
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 都会同时重启并恢复此配置。
在 FortiGate 上查看系统事件日志,可以看到客户端通过 SCP 备份配置文件的日志(略,参考 Windows SCP 备份配置文件 FortiGate 产生的日志)。
SCP 使 SSH 密钥认证
Windows
打开 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
如下所示,客户端在 CMD 下的默认目录(
C:\Users\cyndi)生成了 SSH 密钥对的文件夹,该密钥对所属文件夹的名称为.ssh,由于在生成时没有自定义密钥文件名称,密钥对文件的名称为默认名称。
使用记事本打开生成的公钥文件(后缀为 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参数手工指定。
在 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 #在 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
重要
上传(恢复)配置文件请使用
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 不同步的配置)。
在 FortiGate 上查看系统事件日志,可以看到客户端通过 SCP 备份配置文件的日志(略,参考 Windows SCP 使用管理员账户密码方式备份配置文件 FortiGate 产生的日志)。
macOS/Linux
以 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
如下所示,客户端在终端下的默认目录(
/Users/summerice,在 macOS 或 Linux 下也可以用~表示该目录)生成了 SSH 密钥对的文件夹,该密钥对所属文件夹的名称为.ssh,由于在生成时没有自定义密钥文件名称,密钥对文件的名称为默认名称。
使用
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参数手工指定。
在 FortiGate 的 CLI 中,编辑管理员 admin 的配置,设置
ssh-public-key2的内容为公钥文件中的前两部分,即 SSH 使用的密钥算法和公钥文本,中间以空格隔开,前后要加上英文的双引号"",如下所示,"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGGp5Pv2JGgGjmV+jOeSPwEbJsMAiz7tLJDsZQpCAvwg"。重要
最多可设置 3 个
ssh-public-key,ssh-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 #打开 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
重要
上传(恢复)配置文件请使用
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 都会同时重启并恢复此配置。
在 FortiGate 上查看系统事件日志,可以看到客户端通过 SCP 备份配置文件的日志(略,参考 Windows SCP 使用管理员账户密码方式备份配置文件 FortiGate 产生的日志)。