ssh密钥在kubernetes集群部署中用于实现控制节点与工作节点间的免密自动化通信,而非kubectl登录;每节点须独立生成rsa 4096密钥对,通过ssh-copy-id或循环脚本分发公钥建立全互信,并需严格设置.ssh目录权限为700、authorized_keys为600。

SSH 密钥在集群部署中主要解决节点间安全、自动化通信问题,不是用来登录 Kubernetes 控制平面(如 kubectl),而是让控制节点能免密操作工作节点——比如分发证书、启动组件、执行脚本、配合 Ansible 或 kubeadm 部署。
密钥生成:每台节点独立生成
不能复用同一份私钥。每台 Linux 节点(包括 control-plane 和 worker)都要运行:
- ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa
- 生成 ~/.ssh/id_rsa(私钥,严格保密)和 ~/.ssh/id_rsa.pub(公钥,可分发)
- 确保 ~/.ssh 权限为 700,authorized_keys 为 600
互信建立:节点之间双向或全互通
目标是任意两台节点都能 ssh user@host 不输密码。常用方式有两种:
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
- 手动逐台推送:ssh-copy-id -i ~/.ssh/id_rsa.pub user@node1
- 三节点全互信(推荐):在任一节点执行循环命令,把本机公钥推送到所有其他节点
- 注意:若用 root 用户部署,所有节点需统一用 root;若用普通用户,该用户必须在所有节点存在且有 sudo 权限
云平台集成:AKS Arc、Operator Nexus 等场景
公钥不只用于内部运维,还直接参与集群创建流程:
- Azure AKS Arc 创建时通过 --ssh-key-value 注入公钥,系统自动写入各节点的 /home/azureuser/.ssh/authorized_keys
- Operator Nexus 支持按角色指定密钥:控制平面用 CONTROL_PLANE_SSH_PUBLIC_KEY,工作节点池用 INITIAL_AGENT_POOL_SSH_PUBLIC_KEY
- 密钥一旦写入节点,无法删除;后续扩容节点会继承集群级或池级密钥
容器与代理场景:Dropbear、sshpiper
当 SSH 服务跑在容器或需要集中管控时,密钥使用逻辑略有不同:
- Dropbear 容器内可自带密钥对,但更常见的是挂载宿主机的 ~/.ssh 卷,复用已有信任关系
- sshpiper 是中间代理,要求客户端用一套私钥连接 sshpiper,sshpiper 再用另一套密钥连接后端服务器——即“双密钥链”,公钥分别存于 sshpiper CRD 和目标节点 authorized_keys 中
- 这类方案让真实节点不暴露 SSH 端口,所有访问经由 Kubernetes Service 统一入口










