打开/关闭搜索
搜索
打开/关闭菜单
22
4
1
206
iSrv 百科
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
所有页面
页面分类
上传文件
文档目录
运维管理
Linux栏目
打开/关闭外观设置菜单
无法加载偏好设置。请检查您的网络连接并重试。
重试
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
登录
查看“︁解密”︁的源代码
来自iSrv 百科
分享此页面
查看
阅读
查看源代码
查看历史
associated-pages
页面
讨论
更多操作
←
解密
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
== 解密 == * 解密 [[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]$ 我在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="shell">tar -zxvf backup.tar.gz</syntaxhighlight> ----- <span id="二一条命令直接解压"></span> = 二、一条命令直接解压 = 也可以直接: <syntaxhighlight lang="shell">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="shell">tar -czf - frps | openssl enc -aes-256-cbc -salt -out frps_backup.tar.gz</syntaxhighlight> 恢复: <syntaxhighlight lang="shell">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 的备份 '''安全一个等级'''。
返回
解密
。
查看“︁解密”︁的源代码
来自iSrv 百科