通过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 | go get github.com/docker/docker-credential-helpers |
编辑docker配置文件。
1 | vi ~/.docker/config.json |
添加以下内容。
1 | { |
生成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 | pass |
第一个命令列出pass
文件夹结构。第二个命令执行后输入passphrase。
然后再试。
方法二:删掉passphrase。不建议这么做,这比上面的明文保存安全性更差。
gpg --edit-key "你的uid"
passwd
输入passphrase,然后设置新passphrase为空。最后quit
退出。
参考资料
Getting rid of Docker plain text credentials
docker login credentials-store
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 名实合为!
评论