Chef节点引导失败:Train::Transports::SSHFailed无法建立SSH会话
解决Chef Knife Bootstrap SSH认证失败问题
问题分析
你执行的knife bootstrap命令存在两个关键问题:
-i参数(指定SSH私钥)未提供私钥文件路径,导致SSH无法获取认证密钥- 命令中缺少目标节点的IP地址(错误信息里的
10.182.0.24)
这两个问题共同触发了Net::SSH::AuthenticationFailed和Train::Transports::SSHFailed错误。
修复方案
1. 修正Bootstrap命令
补充节点IP和私钥文件完整路径,示例命令如下(替换为你的实际私钥路径):
knife bootstrap 10.182.0.24 -U root --sudo -i ~/.ssh/google_compute_engine -N node1
注:GCP默认的SSH私钥通常存储在~/.ssh/google_compute_engine,如果是自定义密钥,替换为对应路径即可。
2. 提前验证SSH连通性
先单独测试SSH登录,排除基础网络/权限问题:
ssh root@10.182.0.24 -i ~/.ssh/google_compute_engine
如果登录失败,排查以下点:
- GCP防火墙规则是否允许22端口的入站流量
- 目标节点
/root/.ssh/authorized_keys文件是否包含对应私钥的公钥 - 私钥文件权限是否为
600(权限过宽会被SSH拒绝),执行以下命令修正:chmod 600 ~/.ssh/google_compute_engine
3. 非root用户登录替代方案
若GCP节点已配置元数据SSH密钥,可使用工作站当前用户登录并sudo提权,无需指定私钥:
knife bootstrap 10.182.0.24 -U your-gcp-username --sudo -N node1
内容的提问来源于stack exchange,提问作者user2165092
相关产品推荐
相关产品推荐

