Chef Server引导节点失败:SSH认证错误问题求助
排查Chef Knife Bootstrap SSH认证失败问题
核心错误为:
WARN: [SSH] connection failed, terminating (#<Net::SSH::AuthenticationFailed: Authentication failed for user ec2-user@172.31.20.187>)
ERROR: Train::Transports::SSHFailed: SSH session could not be established
以下是针对性排查步骤:
1. 验证SSH密钥的可用性与权限
- 测试基础SSH连接:先跳过Knife,直接用SSH命令验证密钥能否正常登录目标节点:
如果此命令也失败,说明密钥本身无效,需确认该密钥是目标节点ssh -i node1.key.pem ec2-user@172.31.20.187ec2-user的合法密钥(公钥已添加到节点/home/ec2-user/.ssh/authorized_keys中)。 - 修复密钥文件权限:SSH要求私钥文件权限必须为
600,否则会拒绝使用,执行:chmod 600 node1.key.pem
2. 检查目标节点的SSH配置与目录权限
- 确认公钥认证开启:登录目标节点,检查
/etc/ssh/sshd_config中是否包含:
若未开启,修改后重启sshd服务:PubkeyAuthentication yessudo systemctl restart sshd - 修复用户目录权限:目标节点上
ec2-user的家目录及SSH相关目录权限必须符合要求:chmod 700 /home/ec2-user chmod 700 /home/ec2-user/.ssh chmod 600 /home/ec2-user/.ssh/authorized_keys
3. 调整Knife命令参数
原命令中--ssh-user已被弃用,改用官方推荐的--connection-user参数,避免潜在兼容性问题:
knife bootstrap 172.31.20.187 --connection-user ec2-user --sudo -i node1.key.pem -N node1
4. 预处理主机指纹(可选)
手动将目标节点的SSH主机指纹加入本地known_hosts,避免Knife执行时的交互干扰:
ssh-keyscan 172.31.20.187 >> ~/.ssh/known_hosts
5. 升级Chef Workstation版本
报错中出现常量重复初始化的警告,说明当前使用的Chef 15.0.300存在已知bug,升级到最新稳定版Chef Workstation(如20.x系列)可修复此类问题。
内容的提问来源于stack exchange,提问作者Prince kumar
相关产品推荐
相关产品推荐

