【发布时间】:2018-08-30 10:57:13
【问题描述】:
我的 ssh 私钥 (/home/user/.ssh/id_rsa) 作为我的容器中的卷安装密钥。 Kubernetes 似乎使用 uid 0 挂载它。但是,我的应用程序以特定用户身份运行,因此无法访问权限必须至少为 600 的 ssh 私钥。如何更改我的私钥的所有权以反映特定用户的所有权?
谢谢。
【问题讨论】:
-
我的回答对你有帮助吗?有什么遗漏吗?
标签: kubernetes
我的 ssh 私钥 (/home/user/.ssh/id_rsa) 作为我的容器中的卷安装密钥。 Kubernetes 似乎使用 uid 0 挂载它。但是,我的应用程序以特定用户身份运行,因此无法访问权限必须至少为 600 的 ssh 私钥。如何更改我的私钥的所有权以反映特定用户的所有权?
谢谢。
【问题讨论】:
标签: kubernetes
在 Linux 中,用户名被映射到一个用户 ID,可以通过命令 id -u someusername 看到。
在许多情况下,SSH 默认要求您的 SSH 密钥归运行 SSH 的用户所有,并且对其他人隐藏600
因此,我强烈建议您复制您的密钥而不是挂载它,除非您的容器用户具有与您相同的用户 ID。
如果您使用的是 linux 容器,则可以在容器内运行命令以获取确切的用户 ID,然后使用用户 ID 而不是用户名来 chown 文件。
kubectl exec -it mypod bash 或 sh 如果 bash 不起作用
$ id -u someuser
或
kubectl exec -it mypod id -u 如果你的容器有一个用户启动了主进程
那么
复制你的 id 文件,这样你就可以在不影响你的 ssh 能力的情况下对其进行 chown。
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。
【讨论】: