问题出现:
原本使用密码登陆,但是在云端临时改动了验证方式,使用加密过的公钥,只是这台受控端处于多变化,不稳定的情况,大多用来测试。而公钥是有密码的,所以出现了这个场景。
使用加密公钥连接服务器,在ansible->hosts
配置:ansible_ssh_private_key_file=~/.ssh/testserverkey
ansible all -m ping -b
Enter passphrase for key '~/.ssh/testserverkey':
(success)
每次连接都会提示输入KEY密码。
解决方案:
1.提示“ Permissions 0644 for ‘~/.ssh/testserverkey’ are too open”
解决方法:使用chmod 0600 ~/.ssh/testserverkey更改将公钥权限改成“600”
2.提示“Enter passphrase for key ~/.ssh/testserverkey”让输入私钥,可不论输与不输都不能直接登录
解决方法:
在本地执行:
ssh-agent bash 或者 eval `ssh-agent`
ssh-add ~/.ssh/testserverkey
ssh-agent是用于管理密钥,ssh-add用于将密钥加入到ssh-agent中,SSH可以和ssh-agent通信获取密钥,这样就不需要用户手工输入密码了。
顺序执行以上两条命令后就可以用ssh免密登录远程机器了,但这个配置只对当前会话生效,会话关闭或机器重启后都需要重新执行这两条命令。将命令放到~/.bash_profile中,就可以免去每次输入的麻烦。
保存密码
ssh-add -K ~/.ssh/testserverkey,然后输入密码,之后就不用次次输入密码了。
ssh-agent扩展:https://blog.csdn.net/zhouguoqionghai/article/details/92134462
当然最好的办法:还是通过ansible主控端 生成专用的秘钥KEY来实现免密登陆受控端。上面的场景也是可以的。
评论区