目 录CONTENT

文章目录

ansible使用加密公钥连接服务器

Seven
2023-04-20 / 0 评论 / 0 点赞 / 483 阅读 / 2218 字 / 正在检测是否收录...

问题出现:
原本使用密码登陆,但是在云端临时改动了验证方式,使用加密过的公钥,只是这台受控端处于多变化,不稳定的情况,大多用来测试。而公钥是有密码的,所以出现了这个场景。
使用加密公钥连接服务器,在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来实现免密登陆受控端。上面的场景也是可以的。

0

评论区