上 git-secret:在 Git 存储库中加密和存储密钥( 三 )

  • 由于 --home-directory 的位置与主机系统共享 , 因此套接字创建将失败 。
  • 对应的错误信息是:
    gpg: can't connect to the agent: IPC connect call failedgpg-agent: error binding socket to '/var/www/app/.gitsecret/keys/S.gpg-agent': I/O error解决此问题,可以通过将其他 gpg 配置文件放在 .gitsecret/keys 目录中,将 gpg 配置为对套接字使用不同的位置:
    S.gpg-agent
    %Assuan%socket=/tmp/S.gpg-agents.gpg-agent.ssh
    %Assuan%socket=/tmp/S.gpg-agentgpg-agent.conf
    extra-socket /tmp/S.gpg-agent.extrabrowser-socket /tmp/S.gpg-agent.browser添加、列出和删除用户要添加新用户,必须首先导入其公用 gpg 密钥 。然后运行:
    email="pascal.landau@example.com"git secret tell "$email"在这种情况下 , 用户pascal.landau@example.com 现在将能够解密这些密钥 。要显示用户请运行:
    git secret whoknows$ git secret whoknowspascal.landau@example.com要删除用户,请运行:
    email="pascal@example.com"git secret killperson "$email"这时此命令在 git-secret >= 0.5.0 中已重命名为 removeperson
    $ git secret killperson pascal.landau@example.comgit-secret: removed keys.git-secret: now [pascal.landau@example.com] do not have an access to the repository.git-secret: make sure to hide the existing secrets again.用户 pascal@example.com 将无法再解密这些密钥 。
    注意删除用户后需要重新加密机密,并轮换加密的密钥 。
    添加、列出和删除文件以进行加密运行 git secret add [filenames...] 来为文件加密:
    git secret add .env如果 .env 没有被添加到 .gitignoregit-secret 将显示警告并自动添加 。
    git-secret: these files are not in .gitignore: .envgit-secret: auto adding them to .envgit-secret: 1 item(s) added.如已添加,则添加文件时不会发出警告 。
    $ git secret add .envgit-secret: 1 item(s) added.只需要添加一次文件 。然后将它们存在 .gitsecret/paths/mapping.cfg :
    $ cat .gitsecret/paths/mapping.cfg.env:505070fc20233cb426eac6a3414399d0f466710c993198b1088e897fdfbbb2d5还可以通过以下方式显示添加的文件:
    git secret list$ git secret list.env需要主要的是,这个时候文件尚未加密,如果要从加密中删除文件 , 请运行:
    git secret list$ git secret list.env输出:
    $ git secret remove .envgit-secret: removed from index.git-secret: ensure that files: [.env] are now not ignored.加密文件要加密文件,请运行:
    git secret hide输出:
    $ git secret hidegit-secret: done. 1 of 1 files are hidden.所有通过 git secret tell 被添加的用户能够解密这些已经加密的文件,这也意味着每当添加新用户时 , 您都需要再次运行此命令 。
    解密文件可以通过以下方式解密文件:
    git secret reveal输出:
    $ git secret revealFile '/var/www/app/.env' exists. Overwrite? (y/N) ygit-secret: done. 1 of 1 files are revealed.
    • 文件被解密并将覆盖当前未加密的文件 。
    • 使用 -f 选项强制覆盖并以非交互方式运行 。
    • 如果只想检查加密文件的内容,可以使用 git secret cat $filename 例如,git secret cat. env
    gpg 密钥受密码保护时,需要通过 -p 选项传递密码 。以下是密码示例 123456
    git secret reveal -p 123456显示加密和解密文件间的变化加密文件的一个问题是,无法在远程工具的代码审查期间审查加密文件 。为了了解进行了哪些更改,显示加密文件和解密文件之间的更改能够帮助解决这个问题 。可以通过以下方式完成:
    git secret changes输出:
    $ echo "foo" >> .env$ git secret changesgit-secret: changes in /var/www/app/.env:--- /dev/fd/63+++ /var/www/app/.env@@ -34,3 +34,4 @@ MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS=null MAIL_FROM_NAME="${APP_NAME}"+foo注意底部的 +foo. 它是通过在第一行 echo "foo">>>.env 添加的 。
    本文是git-secret用法的上篇,在下篇中我们将会介绍git-secret的初始设置、Makefile调整等内容,保持关注哦~

    推荐阅读