【发布时间】:2018-01-13 06:19:54
【问题描述】:
这其实是我之前one的一个问题。
我正在尝试使用 docker 来托管个人笔记网络服务,并希望备份该服务生成的数据(我的笔记)。 目前我打算使用 git 来提交、拉取和推送到存储库。
要执行 git pull 和 push,我的 docker 映像需要托管我的凭据。实现这一目标的最简单但安全的方法是什么?
到目前为止我做了什么:
- 我选择
Alpine作为我的服务图像的基础图像。 - 因为我只需要 git 的凭据,所以我认为将 git 凭据助手放入映像中可能会解决我的问题。我可以在构建期间将凭据保存到帮助程序,并在运行时使用它们。
- 根据this article,我搜索了一段时间并决定使用
libsecret作为我的git 凭证助手。 - 我已安装
libsecret并将我的 git 凭证助手设置为git-credential-libsecret
但是,到目前为止,我还不能使 git-credential-libsecret 起作用。以下是我遇到的几个问题:
-
首先,我测试了
git-credential-libsecret get,得到如下错误:CRITICAL **: could not connect to Secret Service: Cannot spawn a message bus without a machine-id: Unable to load /var/lib/dbus/machine-id or /etc/machine-id: Failed to open file */var/lib/dbus/machine-id*: No such file or directory- 我(可能?)通过安装
dbus并运行dbus-uuidgen > /var/lib/dbus/machine-id解决了这个问题
- 我(可能?)通过安装
-
然后我尝试再次运行
git-credential-libsecret get。这一次,它报告说:CRITICAL **: could not connect to Secret Service: Cannot autolaunch D-Bus without X11 $DISPLAY- 我尝试安装
dbus-x11并运行dbus-launch --sh-syntax(from here) 但这次没有运气。错误仍在继续。
- 我尝试安装
总之,我想知道:
- 我是否在正确的方向(使用 git credential helper)来实现我的目标?
- 如果是这样,我该如何解决 X11 问题?
- 有没有其他快速干净的方法来备份 docker 中的数据并带有版本控制?
【问题讨论】:
-
还有,为什么不能使用git-credential-store?它似乎没有使用 X11 dbus 或其他任何东西
-
人们会花时间回答您的问题。作为回报,您应该为之前的问题标记一个答案,并为优秀的 cmets +1。
-
@max630 我选择不使用 git-credential-store 因为它以纯文本形式保存密码。但也许我只是偏执。
-
我对 libsecret 了解不多,但它似乎是某种密码管理器,可以使用主密码加密密码,用户可以交互输入以解密密码。但是由于您要以非交互方式运行它,因此图像无论如何都必须包含密码,可能会以某种方式混淆。
-
是的,我想你可能是对的。不管凭证助手如何对序列化密码进行加密,当一个坏人以某种方式完全控制我的容器时,他/她可以简单地通过凭证助手接口检索密码(因为凭证助手认为坏人已经过身份验证)。我以前没有考虑过。
标签: linux git authentication docker alpine