【发布时间】:2018-10-14 12:10:05
【问题描述】:
总之,
当我从命令行 ssh 进入远程服务器时,ssh-agent 将验证密码,但每当我执行 ansible playbook 时,它都会要求输入密码。我的问题是,为什么 ssh-agent 不对 Ansible 的密码进行身份验证?我怎样才能让它工作?
详细说明,
我创建了一个受密码保护的私钥和相应的公钥,并将公钥上传到服务器。
我使用eval $(ssh-agent) 然后ssh-add /etc/ansible/ssh/private-key.pem 调用了ssh-agent
输入ssh-agent -l 表示已添加密钥。
我可以使用ssh username@ipaddress 从命令行成功地 ssh 进入机器,而无需输入密码。
但如果我执行剧本或执行sudo ansible -m ping server 之类的操作,它会说
输入密钥“/etc/ansible/ssh/private-key.pem”的密码:
我在详细模式下再次尝试,它给了我以下信息
ansible 2.4.2.0
配置文件 = /etc/ansible/ansible.cfg 已配置 模块搜索路径 = [u'/etc/ansible/library']
ansible python模块 位置 = /usr/lib/python2.7/dist-packages/ansible
可执行的 位置 = /usr/bin/ansible
python 版本 = 2.7.12(默认,11 月 20 日 2017, 18:23:56) [GCC 5.4.0 20160609] 使用 /etc/ansible/ansible.cfg 作为 配置文件使用 ini 插件解析 /etc/ansible/hosts 库存源META:使用模块文件运行处理程序 /usr/lib/python2.7/dist-packages/ansible/modules/system/ping.py 为用户建立 SSH 连接:user6 SSH:执行 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 端口=22 -o 'IdentityFile="/etc/ansible/ssh/private-key.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=user6 -o ConnectTimeout=10 -o ControlPath=/home/user6/.ansible/cp/e26536be01 35.230.127.195 '/bin/sh -c '"'"'echo ~ && sleep 0'"'"'' 输入密钥'/etc/ansible/ssh/private-key.pem'的密码:
我的环境
- Ansible 版本为 2.4.2.0
- Python 版本为 2.7.12
- OpenSSH_7.2p2 Ubuntu-4ubuntu2.2,OpenSSL 1.0.2g
- ssh 密钥是使用 RSA(不是 SSH-1 RSA)创建的 和 4096 位。
- 在 ansible.cfg 中,传输设置为智能。
- 密钥是使用 ansible-vault 加密的,但我尝试过这样做 没有加密,也没什么区别。
请帮忙,我的头发不多了。
更新:使用transport = local 会在本地执行一切(即它不会在远程服务器上执行 ansible playbook(即使它看起来确实如此))。
【问题讨论】:
标签: ssh ansible ssh-agent passphrase