前言
在某些场景下,我们可能需要将脚本文件存放在公共仓库(如 GitHub、GitLab 等)或网盘中,并提供直链下载,以便在服务器或其他环境中快速调用。但脚本中可能会包含一些敏感信息,例如 API Token、密钥或其他凭证。
如果这些脚本内容以明文形式存放在公开可访问的位置,即使链接本身是隐蔽的,也仍存在被意外泄露的风险——例如通过仓库搜索、网盘目录遍历或 URL 被第三方获取。为了在便捷性与安全性之间取得平衡,我们可以采取一些措施对脚本内容进行保护。
解决方案
方法一:脚本加密存储
我们可以对脚本进行加密,将加密后的内容存放在公共仓库。使用时,在服务器环境中通过命令行工具(如 openssl)解密后执行。
示例步骤:
- 原始脚本内容(假设其中包含一个 GitHub Token):
1 | curl -H "Authorization: token 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" \ |
- 加密脚本(使用 AES-256-CBC 加密,并输出为 base64 格式):
1 | openssl enc -aes-256-cbc -a -salt -pbkdf2 \ |
加密后得到类似以下字符串(示例):
1 | U2FsdGVkX18qJ6tY1L2v8QkQ7wK1M9pN3cR7fD2hG5jL8mZ4vC9xP6bT1aE3sW0y |
- 将加密文件上传至公共仓库,例如 GitHub Raw URL:
1 | https://raw.githubusercontent.com/用户名/仓库名/main/encrypted_script.enc |
- 在服务器终端执行以下命令:
1 | curl -fsSL "https://raw.githubusercontent.com/用户名/仓库名/main/encrypted_script.enc" | \ |
优点:
- 内容经过强加密,即便链接公开,没有密码也无法解密
- 无需在脚本中硬编码密钥
注意事项:
- 需自行保管好解密密码
- 执行时需在命令行中传入密码(也可通过环境变量等方式传递,避免在历史记录中暴露)
方法二:使用 GitHub Gist 存储
如果脚本内容并非高度敏感,但仍不希望被公开搜索引擎收录或随意访问,可以使用 GitHub Gist 进行存储。Gist 可以设为”公开”或”秘密”,后者不会出现在搜索结果中,但仍可通过链接访问。
使用方法:
- 在 Gist 中创建脚本文件,例如
restore.sh。 - 获取该文件的 Raw URL,格式一般为:
1 | https://gist.githubusercontent.com/你的用户名/Gist_ID/raw/文件名 |
- 在命令行中直接执行:
1 | curl -fsSL "https://gist.githubusercontent.com/你的用户名/Gist_ID/raw/restore.sh" | bash |
特点:
- 链接简短,易于管理
- 可通过”秘密”状态避免被公开搜索
- 无需额外解密步骤,适合不包含敏感信息的脚本
总结
| 方案 | 适用场景 | 优点 | 注意事项 |
|---|---|---|---|
| 加密存储 | 含密钥、Token 等敏感信息 | 强加密,链接泄露仍安全 | 需保管密码,执行时需解密 |
| Gist 存储 | 非敏感脚本,但不愿公开被爬取 | 简单快捷,链接隐秘 | 非加密,仅依赖链接保密 |
选择哪种方案可根据脚本内容的敏感程度、使用便利性与安全需求综合决定。如对安全性有更高要求,还可结合访问令牌、IP 白名单、临时链接等机制进一步增强保护。
本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站