在命令行里用Docker登陆harbor会出现如下信息,我看网上的文章大部分都是截图说我登陆成功了,却没有人仔细看看如下这行写的是什么? 你的密码将存储在未加密的config.json文件中
WARNING! Your password will be stored unencrypted in /home/turing/.docker/config.json.
报警信息
之前文章也说过,我们公司对安全比较重视,这样搭建完的私有镜像仓库也通过不了审核。那怎么来合规呢?目前我采用的方法是使用pass命令工具+docker-credential-pass命令工具,
1、Pass工具
pass是个密码存储管理工具,主站是
https://www.passwordstore.org/
目前的稳定版是1.7.3,下载地址
https://git.zx2c4.com/password-store/snapshot/password-store-1.7.3.tar.xz
安装方法非常简单,解包后在解包后的安装目录中直接运行
make install
你就可以使用这个工具了。
2、Docker-Credential-Pass工具
主站是
https://github.com/docker/docker-credential-helpers/releases
目前最新版本0.6.3
wget https://github.com/docker/docker-credential-helpers/archive/v0.6.3.tar.gz tar xzvf v0.6.3.tar.gz cd docker-credential-helpers-0.6.3 make pass 这里会自动生成一个bin目录 cd bin cp docker-credential-pass /usr/bin
3、生成GPG密钥对
gpg --gen-key 输入 userid , 这里用harbor登陆账户admin测试 邮件地址,可以留你自己的邮件地址 然后会问你是否确定选用这个用户表示,选择O 然后会提示你输入管理秘钥两次(非admin用户登陆harbor的密码),也是为了防止用户忘记存储的密码。
到这一步密钥对生成
查看现有秘钥对
gpg --list-keys
查看现有密钥对
如果有公钥私钥,务必先删除私钥,再删除公钥
gpg ---delete-secret-keys KEY-ID gpg --delete-key KEY-ID
生成Harbor用户admin的pass存储环境,主目录在~/.password-store
pass init admin
将admin用户登陆Harbor的密码加密后放置到password-store目录中
pass insert admin
输入两次登陆Harbor的密码
想删除用如下命令
pass rm admin
还有更多的pass命令,大家看MAN手册吧
4、登陆
修改 ~/.docker/config.json
修改前的config.json
为
修改后的config.json
然后在本地先登陆测试一下
本地登陆
登陆成功,不报错,远程用windows服务器登陆试试,第一次登陆会报无效或过期,登陆成功后,logout再登陆就不报了。
Win登陆
至此,终于解决了Docker命令行登陆Harbor报警的问题。
原创文章辛苦,欢迎大家转发,点赞,留言讨论。