ssh - 在 kubernetes 中创建 ssh secrets key 文件

标签 ssh kubernetes

如果我使用 kubectl 从 id_rsa 文件创建一个 secret :

kubectl create secret generic hcom-secret --from-file=ssh-privatekey=./.ssh/id_rsa

然后将 secret 挂载到容器中
"volumeMounts": [
        {"name": "cfg", "readOnly": false, "mountPath": "/home/hcom/.ssh"}
      ]

"volumes": [
      {"name": "cfg", "secret": { "secretName": "hcom-ssh" }}
    ],

生成的文件不是 id_rsa 而是 ssh-privatekey 并且其上的许可不是 ssh 期望的 600

这是一种正确的方法,或者任何人都可以详细说明应该如何做到这一点?

最佳答案

Kubernetes 官方 secret 文档涵盖 this exact use-case .

要创建 secret ,请使用:

$ kubectl create secret generic my-secret --from-file=ssh-privatekey=/path/to/.ssh/id_rsa --from-file=ssh-publickey=/path/to/.ssh/id_rsa.pub

要在容器中挂载 secret ,请使用以下 Pod 配置:
{
  "kind": "Pod",
  "apiVersion": "v1",
  "metadata": {
    "name": "secret-test-pod",
    "labels": {
      "name": "secret-test"
    }
  },
  "spec": {
    "volumes": [
      {
        "name": "secret-volume",
        "secret": {
          "secretName": "my-secret"
        }
      }
    ],
    "containers": [
      {
        "name": "ssh-test-container",
        "image": "mySshImage",
        "volumeMounts": [
          {
            "name": "secret-volume",
            "readOnly": true,
            "mountPath": "/etc/secret-volume"
          }
        ]
      }
    ]
  }
}

截至目前,Kubernetes 实际上没有办法控制 secret 文件的权限,但是 a recent Pull Request确实添加了对更改 secret 路径的支持。此支持是通过 1.3 添加的根据 this comment

以下是与权限相关的 Github 问题:
  • https://github.com/kubernetes/kubernetes/issues/4789
  • https://github.com/kubernetes/kubernetes/issues/28317
  • 关于ssh - 在 kubernetes 中创建 ssh secrets key 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39568412/

    相关文章:

    linux - 使用 gdb 调试进程并关闭终端

    mysql - 使用 MySQL Workbench 通过 EC2 实例连接到 Amazon RDS 实例

    docker - 无法在 ubuntu 上使用 EFK 堆栈获取 Kubernetes 集群的日志

    kubernetes - OpenShift oc 创建失败,错误为 "already exists"

    bash - Git 不使用 SSH key 对 Azure DevOps 进行身份验证

    php - 谁能在ssh2_exec()函数调用中解释$ pty参数

    kubernetes 如何从命名空间注解继承注解继承

    docker - 无法将私有(private)包/图像从 GitHub 容器注册表拉入 Okteto Kubernetes

    linux - 有没有办法将密码添加到 Cygwin

    postgresql - 无法通过 Spring Boot 将 Docker Desktop Kubernetes (Windows) 服务连接到本地 Postgres 数据库