无法解密 config/credentials.yml.enc。也许您传递了错误的密钥?
Posted
技术标签:
【中文标题】无法解密 config/credentials.yml.enc。也许您传递了错误的密钥?【英文标题】:Couldn't decrypt config/credentials.yml.enc. Perhaps you passed the wrong key? 【发布时间】:2020-11-30 12:31:44 【问题描述】:我最近删除了我的本地项目,但做了一个 git clone 并从我上次提交的地方拿起。当我尝试将图像上传到已配置的 AWS 时,出现此错误:
Aws::Sigv4::Errors::MissingCredentialsError in RentalsController#create
Cannot load `Rails.config.active_storage.service`: missing credentials, provide credentials with one of the following options: - :access_key_id and :secret_access_key - :credentials - :credentials_provider
我试图查看我的 credentials.yml
文件是否有任何错误,但是当我输入此命令时:
EDITOR="code --wait" rails credentials:edit
...我收到此错误:
Couldn't decrypt config/credentials.yml.enc. Perhaps you passed the wrong key?
可能是什么问题?
【问题讨论】:
【参考方案1】:你错过了master.key
当您创建新项目时,rails 将设置 credentials.yml.enc
和匹配的 master.key
文件以访问凭据。 master.key
文件也会自动添加到 gitignore 中,因此如果您在本地删除项目并再次克隆它,您的 master.key
将丢失。
解决此问题的唯一方法是设置新的 credentials.yml.enc
并再次将您的 AWS 凭证添加到其中。
首先您需要删除现有的credentials.yml.enc
,然后运行:
rails credentials:edit
创建一个新的。
【讨论】:
感谢您发布此答案,它帮助我解决了与 OP 相同的问题。但是我还有一个问题,这意味着我有一个更改的credentials.yml.enc
文件,可以暂存以进行提交。我的直觉是我不应该提交这个,因为它是使用与我的生产应用程序不同的主密钥创建的。对于这个更改的文件,什么是好的解决方案?它应该被忽略吗?
你应该提交这个并为你的生产应用设置新的master.key
。您无法使用旧文件,因为您丢失了master.key
。如果您没有丢失master.key
,那么您根本不应该创建一个新的credentials.yaml.enc
,只需放回您的master.key
对于我们这些不经常进行首次部署的人来说,这很容易忘记。而且由于这个错误的来源很容易理解,Rails 本身肯定可以提供更有用的错误消息,根据上下文给出确切的根本原因。以上是关于无法解密 config/credentials.yml.enc。也许您传递了错误的密钥?的主要内容,如果未能解决你的问题,请参考以下文章