解密:修订间差异
更多操作
创建页面,内容为“== 解密 == * 解密 1Panel 自动备份设置 加密 的文件 <code> # 解密openssl加密的WP程序包(需要加密时的密码) openssl enc -d -aes-256-cbc -in app_wordpress_202606180356314h4ho.tar.gz -out wp_app.tar.gz tar -zxvf wp_app.tar.gz </code>” |
无编辑摘要 |
||
| 第3行: | 第3行: | ||
* 解密 [[1Panel]] 自动备份设置 [[加密]] 的文件 | * 解密 [[1Panel]] 自动备份设置 [[加密]] 的文件 | ||
<code> | == 解密 == | ||
# | |||
openssl enc -d -aes-256-cbc -in | <syntaxhighlight lang="bash">[ding@ArchLinux tmp]$ ls | ||
tar -zxvf | app_frps_20260316123457wesyz.tar.gz | ||
</code> | [ding@ArchLinux tmp]$ tar -zxvf app_frps_20260316123457wesyz.tar.gz | ||
gzip: stdin: not in gzip format | |||
tar: Child returned status 1 | |||
tar: Error is not recoverable: exiting now | |||
[ding@ArchLinux tmp]$ | |||
我在1panel的定时任务,备份应用,设置有密码,现在怎么使用密码解压备份文件?</syntaxhighlight> | |||
你这个情况说明:<br /> | |||
<code>app_frps_20260316123457wesyz.tar.gz</code> '''其实不是 gzip 压缩包''',只是文件名带了 <code>.tar.gz</code>。<br /> | |||
因为你在 '''1Panel''' 的定时任务里设置了 '''备份密码''',所以这个文件实际上是 '''加密压缩包'''。 | |||
因此直接用 <code>tar</code> 解压会出现: | |||
<syntaxhighlight lang="bash">gzip: stdin: not in gzip format</syntaxhighlight> | |||
----- | |||
<span id="一正确解压方法"></span> | |||
= 一、正确解压方法 = | |||
先用 '''OpenSSL''' 解密,再解压。 | |||
<span id="解密-1"></span> | |||
=== 1 解密 === | |||
<syntaxhighlight lang="bash">openssl enc -d -aes-256-cbc -in app_frps_20260316123457wesyz.tar.gz -out backup.tar.gz</syntaxhighlight> | |||
系统会提示输入密码: | |||
<syntaxhighlight lang="bash">enter aes-256-cbc decryption password:</syntaxhighlight> | |||
输入你在 '''1Panel 备份任务设置的密码'''。 | |||
----- | |||
<span id="解压"></span> | |||
=== 2 解压 === | |||
然后: | |||
<syntaxhighlight lang="bash">tar -zxvf backup.tar.gz</syntaxhighlight> | |||
----- | |||
<span id="二一条命令直接解压"></span> | |||
= 二、一条命令直接解压 = | |||
也可以直接: | |||
<syntaxhighlight lang="bash">openssl enc -d -aes-256-cbc -in app_frps_20260316123457wesyz.tar.gz | tar -zxvf -</syntaxhighlight> | |||
同样输入密码即可。 | |||
----- | |||
<span id="三确认是否为-1panel-加密文件"></span> | |||
= 三、确认是否为 1Panel 加密文件 = | |||
可以用: | |||
<syntaxhighlight lang="bash">file app_frps_20260316123457wesyz.tar.gz</syntaxhighlight> | |||
通常会看到类似: | |||
<syntaxhighlight lang="bash">openssl enc'd data with salted password</syntaxhighlight> | |||
说明确实是 OpenSSL 加密。 | |||
----- | |||
<span id="四1panel-加密备份结构"></span> | |||
= 四、1Panel 加密备份结构 = | |||
解压后一般结构类似: | |||
<pre>app_frps/ | |||
├── docker-compose.yml | |||
├── data/ | |||
└── config/</pre> | |||
----- | |||
<span id="五恢复到-1panel"></span> | |||
= 五、恢复到 1Panel = | |||
恢复步骤通常是: | |||
# 解密 | |||
# 解压 | |||
# 复制回应用目录 | |||
例如: | |||
<pre>/opt/1panel/apps/frps/</pre> | |||
----- | |||
<span id="六一个实用技巧"></span> | |||
= 六、一个实用技巧 = | |||
如果你经常恢复 1Panel 备份,可以写个脚本: | |||
<pre>restore_1panel_backup.sh</pre> | |||
自动: | |||
<pre>输入密码 → 解密 → 解压</pre> | |||
----- | |||
如果你愿意,我可以再告诉你一个 '''很多人不知道的 1Panel 备份坑''': | |||
<blockquote>'''带密码的备份有时无法跨服务器直接恢复''' | |||
</blockquote> | |||
我可以教你一个 '''100%可靠的备份方式'''(比 1Panel 自带备份更安全)。 | |||
<syntaxhighlight lang="bash">[ding@ArchLinux tmp]$ ls | |||
app_frps_20260316123457wesyz.tar.gz | |||
[ding@ArchLinux tmp]$ tar -zxvf app_frps_20260316123457wesyz.tar.gz | |||
gzip: stdin: not in gzip format | |||
tar: Child returned status 1 | |||
tar: Error is not recoverable: exiting now | |||
[ding@ArchLinux tmp]$ ls | |||
app_frps_20260316123457wesyz.tar.gz | |||
[ding@ArchLinux tmp]$ file app_frps_20260316123457wesyz.tar.gz | |||
app_frps_20260316123457wesyz.tar.gz: openssl enc'd data with salted password | |||
[ding@ArchLinux tmp]$ openssl enc -d -aes-256-cbc -in app_frps_20260316123457wesyz.tar.gz -out backup.tar.gz | |||
enter AES-256-CBC decryption password: | |||
*** WARNING : deprecated key derivation used. | |||
Using -iter or -pbkdf2 would be better. | |||
[ding@ArchLinux tmp]$ ls | |||
app_frps_20260316123457wesyz.tar.gz backup.tar.gz | |||
[ding@ArchLinux tmp]$ ls -lh | |||
总计 16K | |||
-rw-r--r-- 1 ding ding 6.6K 3月16日 12:37 app_frps_20260316123457wesyz.tar.gz | |||
-rw-r--r-- 1 ding ding 6.6K 3月16日 13:49 backup.tar.gz | |||
[ding@ArchLinux tmp]$ tar -zxvf backup.tar.gz | |||
app_frps_20260316123457wesyz/ | |||
app_frps_20260316123457wesyz/app.tar.gz | |||
app_frps_20260316123457wesyz/app.json | |||
[ding@ArchLinux tmp]$ ls | |||
app_frps_20260316123457wesyz app_frps_20260316123457wesyz.tar.gz backup.tar.gz | |||
[ding@ArchLinux tmp]$ ls app_frps_20260316123457wesyz | |||
app.json app.tar.gz | |||
[ding@ArchLinux tmp]$ cd app_frps_20260316123457wesyz | |||
[ding@ArchLinux app_frps_20260316123457wesyz]$ ls | |||
app.json app.tar.gz | |||
[ding@ArchLinux app_frps_20260316123457wesyz]$ tar -zxvf app.tar.gz | |||
frps/ | |||
frps/data/ | |||
frps/data/frps.toml | |||
frps/data/ssl/ | |||
frps/data/frps_full.toml | |||
frps/data.yml | |||
frps/.env | |||
frps/docker-compose.yml | |||
frps/scripts/ | |||
frps/scripts/init.sh | |||
[ding@ArchLinux app_frps_20260316123457wesyz]$ ls | |||
app.json app.tar.gz frps | |||
[ding@ArchLinux app_frps_20260316123457wesyz]$ cat frps/.env | |||
format='' | |||
PANEL_APP_PORT_SERVICE=7000 | |||
USER_NAME='admin' | |||
CONTAINER_NAME='frps' | |||
CPUS=0 | |||
MEMORY_LIMIT=0 | |||
collation='' | |||
AUTH_TOKEN='token1234' | |||
PANEL_APP_PORT_HTTP=7500 | |||
PASSWORD='password' | |||
[ding@ArchLinux app_frps_20260316123457wesyz]$ | |||
原来如此,这样操作能解压了,文件也无损,现在知道了解压命令,那相应的打包并加密命令是?</syntaxhighlight> | |||
<span id="解密-2"></span> | |||
= 解密 = | |||
你刚才的过程其实已经把 '''1Panel''' 的备份格式完整拆开了,它的结构其实是: | |||
<pre>openssl AES256 加密 | |||
└── tar.gz | |||
└── app_xxx/ | |||
├── app.json | |||
└── app.tar.gz | |||
└── 实际应用数据</pre> | |||
所以你要 '''自己生成同样格式的加密备份''',步骤就是: | |||
<pre>tar → gzip → openssl 加密</pre> | |||
我给你完整的标准流程。 | |||
----- | |||
<span id="一打包应用目录"></span> | |||
= 一、打包应用目录 = | |||
假设你的应用目录是: | |||
<pre>frps/</pre> | |||
先打包: | |||
<syntaxhighlight lang="bash">tar -czf app.tar.gz frps</syntaxhighlight> | |||
得到: | |||
<pre>app.tar.gz</pre> | |||
----- | |||
<span id="二构造-1panel-的结构"></span> | |||
= 二、构造 1Panel 的结构 = | |||
创建目录: | |||
<syntaxhighlight lang="bash">mkdir app_frps_test</syntaxhighlight> | |||
移动进去: | |||
<syntaxhighlight lang="bash">mv app.tar.gz app_frps_test/</syntaxhighlight> | |||
然后创建一个 <code>app.json</code>(简单示例): | |||
<syntaxhighlight lang="json">{ | |||
"name": "frps", | |||
"type": "app" | |||
}</syntaxhighlight> | |||
结构变成: | |||
<pre>app_frps_test/ | |||
├── app.json | |||
└── app.tar.gz</pre> | |||
----- | |||
<span id="三再打包一层"></span> | |||
= 三、再打包一层 = | |||
<syntaxhighlight lang="bash">tar -czf app_frps_test.tar.gz app_frps_test</syntaxhighlight> | |||
得到: | |||
<pre>app_frps_test.tar.gz</pre> | |||
----- | |||
<span id="四使用-openssl-加密"></span> | |||
= 四、使用 OpenSSL 加密 = | |||
使用 '''OpenSSL''' | |||
<syntaxhighlight lang="bash">openssl enc -aes-256-cbc -salt \ | |||
-in app_frps_test.tar.gz \ | |||
-out app_frps_test_enc.tar.gz</syntaxhighlight> | |||
输入密码即可。 | |||
得到最终文件: | |||
<pre>app_frps_test_enc.tar.gz</pre> | |||
这个文件就和 '''1Panel 的备份格式一样'''。 | |||
----- | |||
<span id="五解密流程对应"></span> | |||
= 五、解密流程(对应) = | |||
恢复流程: | |||
<span id="解密-3"></span> | |||
=== 1 解密 === | |||
<syntaxhighlight lang="bash">openssl enc -d -aes-256-cbc \ | |||
-in app_frps_test_enc.tar.gz \ | |||
-out backup.tar.gz</syntaxhighlight> | |||
----- | |||
<span id="解压-1"></span> | |||
=== 2 解压 === | |||
<syntaxhighlight lang="bash">tar -zxvf backup.tar.gz</syntaxhighlight> | |||
----- | |||
<span id="再解压应用"></span> | |||
=== 3 再解压应用 === | |||
<syntaxhighlight lang="bash">tar -zxvf app.tar.gz</syntaxhighlight> | |||
----- | |||
<span id="六一条命令直接打包加密"></span> | |||
= 六、一条命令直接打包+加密 = | |||
实际使用时可以直接: | |||
<syntaxhighlight lang="bash">tar -czf - frps | openssl enc -aes-256-cbc -salt -out frps_backup.tar.gz</syntaxhighlight> | |||
恢复: | |||
<syntaxhighlight lang="bash">openssl enc -d -aes-256-cbc -in frps_backup.tar.gz | tar -xzvf -</syntaxhighlight> | |||
----- | |||
<span id="七你刚才看到的警告"></span> | |||
= 七、你刚才看到的警告 = | |||
<pre>deprecated key derivation used | |||
Using -iter or -pbkdf2 would be better</pre> | |||
这是因为旧方式不安全。 | |||
更安全写法: | |||
<syntaxhighlight lang="bash">openssl enc -aes-256-cbc -salt -pbkdf2 -iter 100000</syntaxhighlight> | |||
例如: | |||
<syntaxhighlight lang="bash">tar -czf - frps | openssl enc -aes-256-cbc -salt -pbkdf2 -iter 100000 -out frps_backup.tar.gz</syntaxhighlight> | |||
安全性会高很多。 | |||
----- | |||
<span id="八给你一个实用结论"></span> | |||
= 八、给你一个实用结论 = | |||
如果你以后自己做备份,'''比 1Panel 更好的方式其实是''': | |||
<pre>tar + gpg + rclone</pre> | |||
用 '''GnuPG''' 替代 openssl。 | |||
优点: | |||
* 更安全 | |||
* 支持签名 | |||
* 支持密钥恢复 | |||
* 不容易被暴力破解 | |||
----- | |||
如果你愿意,我可以再给你一套 '''真正运维常用的备份方式''': | |||
'''一条命令生成:''' | |||
<pre>压缩 + AES256加密 + SHA256校验</pre> | |||
很多生产服务器都是这么做的,比 1Panel 的备份 '''安全一个等级'''。 | |||
2026年6月25日 (四) 16:16的版本
解密
解密
[ding@ArchLinux tmp]$ ls
app_frps_20260316123457wesyz.tar.gz
[ding@ArchLinux tmp]$ tar -zxvf app_frps_20260316123457wesyz.tar.gz
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
[ding@ArchLinux tmp]$
我在1panel的定时任务,备份应用,设置有密码,现在怎么使用密码解压备份文件?你这个情况说明:
app_frps_20260316123457wesyz.tar.gz 其实不是 gzip 压缩包,只是文件名带了 .tar.gz。
因为你在 1Panel 的定时任务里设置了 备份密码,所以这个文件实际上是 加密压缩包。
因此直接用 tar 解压会出现:
gzip: stdin: not in gzip format
一、正确解压方法
先用 OpenSSL 解密,再解压。
1 解密
openssl enc -d -aes-256-cbc -in app_frps_20260316123457wesyz.tar.gz -out backup.tar.gz系统会提示输入密码:
enter aes-256-cbc decryption password:输入你在 1Panel 备份任务设置的密码。
2 解压
然后:
tar -zxvf backup.tar.gz
二、一条命令直接解压
也可以直接:
openssl enc -d -aes-256-cbc -in app_frps_20260316123457wesyz.tar.gz | tar -zxvf -同样输入密码即可。
三、确认是否为 1Panel 加密文件
可以用:
file app_frps_20260316123457wesyz.tar.gz通常会看到类似:
openssl enc'd data with salted password说明确实是 OpenSSL 加密。
四、1Panel 加密备份结构
解压后一般结构类似:
app_frps/ ├── docker-compose.yml ├── data/ └── config/
五、恢复到 1Panel
恢复步骤通常是:
- 解密
- 解压
- 复制回应用目录
例如:
/opt/1panel/apps/frps/
六、一个实用技巧
如果你经常恢复 1Panel 备份,可以写个脚本:
restore_1panel_backup.sh
自动:
输入密码 → 解密 → 解压
如果你愿意,我可以再告诉你一个 很多人不知道的 1Panel 备份坑:
带密码的备份有时无法跨服务器直接恢复
我可以教你一个 100%可靠的备份方式(比 1Panel 自带备份更安全)。
[ding@ArchLinux tmp]$ ls
app_frps_20260316123457wesyz.tar.gz
[ding@ArchLinux tmp]$ tar -zxvf app_frps_20260316123457wesyz.tar.gz
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
[ding@ArchLinux tmp]$ ls
app_frps_20260316123457wesyz.tar.gz
[ding@ArchLinux tmp]$ file app_frps_20260316123457wesyz.tar.gz
app_frps_20260316123457wesyz.tar.gz: openssl enc'd data with salted password
[ding@ArchLinux tmp]$ openssl enc -d -aes-256-cbc -in app_frps_20260316123457wesyz.tar.gz -out backup.tar.gz
enter AES-256-CBC decryption password:
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
[ding@ArchLinux tmp]$ ls
app_frps_20260316123457wesyz.tar.gz backup.tar.gz
[ding@ArchLinux tmp]$ ls -lh
总计 16K
-rw-r--r-- 1 ding ding 6.6K 3月16日 12:37 app_frps_20260316123457wesyz.tar.gz
-rw-r--r-- 1 ding ding 6.6K 3月16日 13:49 backup.tar.gz
[ding@ArchLinux tmp]$ tar -zxvf backup.tar.gz
app_frps_20260316123457wesyz/
app_frps_20260316123457wesyz/app.tar.gz
app_frps_20260316123457wesyz/app.json
[ding@ArchLinux tmp]$ ls
app_frps_20260316123457wesyz app_frps_20260316123457wesyz.tar.gz backup.tar.gz
[ding@ArchLinux tmp]$ ls app_frps_20260316123457wesyz
app.json app.tar.gz
[ding@ArchLinux tmp]$ cd app_frps_20260316123457wesyz
[ding@ArchLinux app_frps_20260316123457wesyz]$ ls
app.json app.tar.gz
[ding@ArchLinux app_frps_20260316123457wesyz]$ tar -zxvf app.tar.gz
frps/
frps/data/
frps/data/frps.toml
frps/data/ssl/
frps/data/frps_full.toml
frps/data.yml
frps/.env
frps/docker-compose.yml
frps/scripts/
frps/scripts/init.sh
[ding@ArchLinux app_frps_20260316123457wesyz]$ ls
app.json app.tar.gz frps
[ding@ArchLinux app_frps_20260316123457wesyz]$ cat frps/.env
format=''
PANEL_APP_PORT_SERVICE=7000
USER_NAME='admin'
CONTAINER_NAME='frps'
CPUS=0
MEMORY_LIMIT=0
collation=''
AUTH_TOKEN='token1234'
PANEL_APP_PORT_HTTP=7500
PASSWORD='password'
[ding@ArchLinux app_frps_20260316123457wesyz]$
原来如此,这样操作能解压了,文件也无损,现在知道了解压命令,那相应的打包并加密命令是?
解密
你刚才的过程其实已经把 1Panel 的备份格式完整拆开了,它的结构其实是:
openssl AES256 加密
└── tar.gz
└── app_xxx/
├── app.json
└── app.tar.gz
└── 实际应用数据
所以你要 自己生成同样格式的加密备份,步骤就是:
tar → gzip → openssl 加密
我给你完整的标准流程。
一、打包应用目录
假设你的应用目录是:
frps/
先打包:
tar -czf app.tar.gz frps得到:
app.tar.gz
二、构造 1Panel 的结构
创建目录:
mkdir app_frps_test移动进去:
mv app.tar.gz app_frps_test/然后创建一个 app.json(简单示例):
{
"name": "frps",
"type": "app"
}结构变成:
app_frps_test/ ├── app.json └── app.tar.gz
三、再打包一层
tar -czf app_frps_test.tar.gz app_frps_test得到:
app_frps_test.tar.gz
四、使用 OpenSSL 加密
使用 OpenSSL
openssl enc -aes-256-cbc -salt \
-in app_frps_test.tar.gz \
-out app_frps_test_enc.tar.gz输入密码即可。
得到最终文件:
app_frps_test_enc.tar.gz
这个文件就和 1Panel 的备份格式一样。
五、解密流程(对应)
恢复流程:
1 解密
openssl enc -d -aes-256-cbc \
-in app_frps_test_enc.tar.gz \
-out backup.tar.gz
2 解压
tar -zxvf backup.tar.gz
3 再解压应用
tar -zxvf app.tar.gz
六、一条命令直接打包+加密
实际使用时可以直接:
tar -czf - frps | openssl enc -aes-256-cbc -salt -out frps_backup.tar.gz恢复:
openssl enc -d -aes-256-cbc -in frps_backup.tar.gz | tar -xzvf -
七、你刚才看到的警告
deprecated key derivation used Using -iter or -pbkdf2 would be better
这是因为旧方式不安全。
更安全写法:
openssl enc -aes-256-cbc -salt -pbkdf2 -iter 100000例如:
tar -czf - frps | openssl enc -aes-256-cbc -salt -pbkdf2 -iter 100000 -out frps_backup.tar.gz安全性会高很多。
八、给你一个实用结论
如果你以后自己做备份,比 1Panel 更好的方式其实是:
tar + gpg + rclone
用 GnuPG 替代 openssl。
优点:
- 更安全
- 支持签名
- 支持密钥恢复
- 不容易被暴力破解
如果你愿意,我可以再给你一套 真正运维常用的备份方式:
一条命令生成:
压缩 + AES256加密 + SHA256校验
很多生产服务器都是这么做的,比 1Panel 的备份 安全一个等级。