我将ssh私钥(/home/user/.ssh/id_rsa)作为容器中的卷装入机密。 Kubernetes似乎使用uid 0挂载了它。但是,我的应用程序以特定用户身份运行,因此无法访问ssh私钥,该私钥的最小权限必须为600。如何更改私钥的所有权以反映特定用户的所有权?
谢谢。
答案 0 :(得分:2)
在Linux中,用户名已映射到用户ID,可以通过命令id -u someusername
查看。
在许多情况下,SSH默认情况下要求您的SSH密钥由运行SSH的用户拥有,并对其他人600
隐藏
因此,我强烈建议您复制密钥而不是挂载密钥,除非您的容器用户具有与您相同的用户ID。
如果使用的是Linux容器,则可以在容器内运行命令以获取确切的用户ID,然后使用用户ID(而不是用户名)整理文件。
kubectl exec -it mypod bash
或sh
(如果bash不起作用)
$ id -u someuser
OR
kubectl exec -it mypod id -u
(如果您的容器中有一个用户启动了主进程)
之后
复制您的id文件,以便在不影响ssh的能力的情况下对其进行签名。
mkdir -p /data/secrets/myapp
cp /home/user/.ssh/id_rsa /data/secrets/myapp/id_rsa
chown $MYAPPUSERID:$MYAPPUSERID /data/secrets/myapp/id_rsa
chmod 600 /data/secrets/myapp/id_rsa
由于主机操作系统可能已经映射了该用户ID,因此可能似乎您的文件由另一个任意用户拥有,但最终重要的是所有者/组的用户ID。 / p>