我有一个Docker swarm,我想在服务中使用一个秘密RSA密钥,通过SSH连接到另一个容器。
我的安全策略是,所有机密(密码、密钥等)都存储在与目标服务器(Swarm)不同的机器上。
实际上(我不喜欢),我在Dockerfile中创建了一个临时目录
/run/secrets
:
mkdir -p /run/secrets
然后我制造假货
id_rsa
和
id_rsa.pub
文件夹:
touch /run/secrets/id_rsa
touch /run/secrets/id_rsa.pub
现在我创建了一个符号链接:
ln -s /run/secrets/id_rsa /root/.ssh/id_rsa
ln -s /run/secrets/id_rsa.pub /root/.ssh/id_rsa.pub
我这么做是因为我没有找到复制我的
docker-entrypoint.sh
/root
目录
所以,我已经在使用Docker secrets了,但这里的问题是,容器中的秘密是只读的。这会影响SSH的使用:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0444 for '/root/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
我无法修改我的
id\u rsa
文件,因为它是只读的。
有没有解决方法或更好的方法?
谢谢
编辑1:
/root/.ssh
目录