24

我正在尝试将一个全新的空 Rail 3.0.4 项目推送到 GitHub,但只是意识到 cookie 会话存储有一个密钥:

config/initializers/secret_token.rb

NewRuby192Rails304Proj::Application.config.secret_token = '22e8...'

那么我们如何避免它被推送到 GitHub 上呢?我们可以忽略这个文件(使用.gitignore),但是没有这个文件,Rails 应用程序将根本无法运行(并且不是一个完整的 Rails 应用程序)。或者一般来说,其他文件或框架也可能包含包含密钥的文件。这种情况下,推送到 GitHub 时应该如何处理呢?

4

4 回答 4

24

添加你的回购:

  • 它的模板(secret_token.rb.template),
  • 一个能够根据服务器上找到的本地数据生成适当配置文件的脚本secret_token.rb(例如具有准备解码并放入文件中的秘密值的加密secret_token.rb文件)

从那里,添加一个git 属性自定义驱动程序

在此处输入图像描述

上面引用的脚本将是您的 ' smudge' 脚本,它将在检查工作树时自动生成正确的文件。

于 2011-02-27T10:09:48.910 回答
8

将密钥放在某种外部配置文件中。这就是我们所做的。

于 2011-02-27T08:13:46.227 回答
2

有几个外部工具可以做到这一点。基本上,这些工具使用您的私人数据加密文件并将其存储在 VCS 中,但忽略原始未加密文件。

最知名和最受信任的一种是blackbox. 它用于gpg加密您的文件并githg. 顺便说一句,它是由 SO 团队创建的。看看替代部分,它至少有五个其他工具。

我还可以向您推荐一个工具git-secret,它也使用gpg. 但它仅适用于git. 主要优点是与其他工具相比,工作流程要容易得多。

于 2016-03-10T22:26:23.113 回答
1

如果 Github 是私有存储库,您可能会冒着信任 Github 的安全/隐私的风险……或者:
- 从服务器上的配置文件中提取数据。例如,如果您使用 Capistrano 进行部署,您可以添加一个从服务器上某处复制配置文件的步骤。
- 使用环境变量。

于 2011-02-27T08:19:36.983 回答