Ansible部署时目标主机SSH公钥权限拒绝导致连接不可达求助
Ansible部署时目标主机SSH公钥权限拒绝导致连接不可达求助
我来帮你分析下这个问题,从报错信息里能看到核心问题是kmv@lapp999.corp.com: Permission denied (publickey)——也就是Ansible用kmv用户通过公钥登录目标服务器被拒绝了,咱们一步步排查解决:
- 先手动验证基础SSH连接:先抛开Ansible,直接在本地终端执行
ssh kmv@lapp999.corp.com,看看能不能正常登录。如果手动都连不上,那问题出在SSH本身,不是Ansible的问题;如果手动能连,再继续排查Ansible的配置。 - 确认Ansible的远程用户配置:检查你的inventory文件或者playbook里,是不是指定了正确的远程用户kmv?比如在inventory里应该是类似
lapp999.corp.com ansible_user=kmv,或者在playbook的hosts块里设置remote_user: kmv,别不小心用了其他用户。 - 检查私钥路径配置:如果你的SSH私钥不是默认的
~/.ssh/id_rsa,那得告诉Ansible用哪个私钥。可以在inventory里加ansible_ssh_private_key_file=/path/to/your/private/key,或者在playbook里设置ansible_ssh_private_key_file参数,也可以通过环境变量export ANSIBLE_PRIVATE_KEY_FILE=/path/to/key临时指定。 - 检查目标服务器的权限设置:登录到目标服务器(如果能通过其他方式),检查kmv用户的
~/.ssh目录权限必须是700,~/.ssh/authorized_keys文件权限必须是600——权限太松的话,sshd会拒绝公钥登录,执行这两个命令修复:chmod 700 ~kmv/.ssh chmod 600 ~kmv/.ssh/authorized_keys - 检查目标服务器的sshd配置:确认目标服务器的
/etc/ssh/sshd_config里,PubkeyAuthentication设置为yes,并且没有针对kmv用户设置PubkeyAuthentication no的规则,修改后记得重启sshd服务(比如systemctl restart sshd)。 - 处理主机指纹问题:如果是第一次连接这个服务器,可能需要先手动ssh一次,接受目标主机的指纹(终端会提示你输入yes确认),Ansible默认不会自动接受陌生主机的指纹。如果不想每次手动确认,也可以在
ansible.cfg里设置host_key_checking = False,不过生产环境不建议这么做,有安全风险。
备注:内容来源于stack exchange,提问作者Varun K M
相关产品推荐
相关产品推荐

