通过pass实现更安全的docker登录方式

docker默认登录是将密码明文存在本地的~/.docker/config.json,随便找个base64的解码器就能还原,存在安全隐患。此文通过pass实现更安全的docker登录方式。

测试平台:Raspberry Pi 3B with ubuntu 18.04.2 server aarch64
由于官方只发布了amd64的helper,所以其他架构需要从源码编译。另外secretservice需要X11,所以没有桌面的server还是用pass

安装依赖

1
sudo apt install golang-go libsecret-1-dev gpg pass

取得源码并编译docker-credential-helpers

1
2
3
4
5
go get github.com/docker/docker-credential-helpers
cd ~/go/src/github.com/docker/docker-credential-helpers
make pass
cd bin
chmod +x docker-credential-pass && sudo mv docker-credential-pass /usr/local/bin/

编辑docker配置文件。

1
vi ~/.docker/config.json

添加以下内容。
1
2
3
{
"credsStore": "pass"
}

生成gpg2 key

1
gpg --generate-key

不要使用passphrase,记住你的uid。

pass初始化

1
pass init "你的uid"

登录docker

1
docker login

debug

push fails: ‘denied: requested access to the resource is denied’

原因是创建gpg key时使用了passphrase,而helper并不会弹出让你输入passphrase的选项。
方法一:登录。

1
2
pass
pass docker-credential-helpers/<一些字串>/<用户名>

第一个命令列出pass文件夹结构。第二个命令执行后输入passphrase。
然后再试。
方法二:删掉passphrase。

gpg --edit-key "你的uid"
passwd

输入passphrase,然后设置新passphrase为空。最后quit退出。

参考资料

Getting rid of Docker plain text credentials
docker login credentials-store

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 安装依赖
  2. 2. 取得源码并编译docker-credential-helpers
  3. 3. 生成gpg2 key
  4. 4. pass初始化
  5. 5. 登录docker
  6. 6. debug
    1. 6.1. push fails: ‘denied: requested access to the resource is denied’
  7. 7. 参考资料
,