如何查找使用kops在AWS搭建的K8S集群对应的私钥存放位置
解决方法
- 先排查默认存储路径
kops生成的SSH私钥默认存放在~/.ssh/目录下,通常文件名会包含集群名称、kops相关标识,格式多为无后缀的私钥文件或.pem后缀文件,可以先执行命令列出所有本地SSH私钥:ls ~/.ssh/id_* ~/.ssh/*.pem 2>/dev/null - 指纹匹配法(准确率最高)
你可以通过公钥指纹匹配快速定位对应私钥,有两种匹配来源可选:- 匹配AWS EC2密钥对指纹:进入AWS EC2控制台,找到集群实例关联的密钥对,查看其SHA256指纹,随后对本地每个私钥执行指纹计算命令:
ssh-keygen -lf 私钥文件路径
计算结果和控制台指纹一致的就是目标私钥。 - 匹配kops集群存储的公钥:直接拉取kops状态中存储的集群SSH公钥,和本地私钥导出的公钥对比:
第一步拉取集群公钥:kops get secrets --type sshpublickey admin -o jsonpath='{.spec.publicKey}' > /tmp/cluster_ssh_pub
第二步对本地每个私钥导出公钥并对比:
无diff输出即代表私钥匹配。ssh-keygen -y -f 待测试私钥路径 > /tmp/tmp_pub diff /tmp/tmp_pub /tmp/cluster_ssh_pub
- 匹配AWS EC2密钥对指纹:进入AWS EC2控制台,找到集群实例关联的密钥对,查看其SHA256指纹,随后对本地每个私钥执行指纹计算命令:
- 快速试连验证
如果知道集群节点的IP地址,可直接用每个私钥尝试SSH连接,kops部署的AWS节点默认用户名为admin或ubuntu:ssh -i 待测试私钥路径 admin@节点IP
能成功登录的即为目标私钥。 - 兜底方案:本地无匹配私钥时直接更新密钥
要是确认本地已经丢失对应私钥,可以直接生成新的SSH密钥对,更新到kops集群配置后滚动生效即可:
滚动更新完成后就可以用新的私钥登录所有节点。# 生成新密钥对 ssh-keygen -t ed25519 -f ~/.ssh/new_k8s_cluster_key # 更新到kops集群 kops create secret --name 你的集群域名 sshpublickey admin -i ~/.ssh/new_k8s_cluster_key.pub kops update cluster --name 你的集群域名 --yes kops rolling-update cluster --name 你的集群域名 --yes
内容的提问来源于stack exchange,提问作者Juliatzin
相关产品推荐
相关产品推荐

