Ansible基础教程之SSH密钥认证配置
SSH密钥认证配置
Ansible认证方式有密码认证和公私钥认证,基于安全考虑,避免密码明文存放,Ansible默认使用公私钥认证。
使用ssh-keygen命令生成公私钥,passphrase设置为空。
[root@localhost ~]# ssh-keygen -N "" -b 4096 -t rsa -C "tom@example.com"
此命令会在用户家目录~/.ssh/中生成两个文件,公钥id_rsa.pub和私钥id_rsa,务必把私钥文件保存好,不要随意泄露。
ssh默认配置使用~/.ssh/id_rsa作为认证私钥,所以如果生成密钥对时指定文件路径,需要修改/etc/ssh/ssh_config文件,添加私钥文件路径
[root@localhost ~]# vi /etc/ssh/ssh_config
IdentityFile ~/.ssh/tom_rsa
接下来使用ssh-copy-id
命令将公钥文件添加到受管理的远程服务器。
[root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub rick@192.168.56.101
注意:如果以后的管理中需要使用sudo权限,远程服务器的用户rick需要配置visudo
为NOPASSWD
rick ALL=(ALL) NOPASSWD: ALL
测试密钥认证,如不提示输入密码即可直接登录则表示成功
[root@localhost ~]# ssh 'rick@192.168.56.101
运行Ansible测试:
[root@localhost ~]# ansible -m ping all