我是ansible的新手,我创建了小型ansible-playbook,它将github主机密钥添加到每个服务器的known_hosts中:
---
- hosts: all
tasks:
- name: Add github to ssh known-hosts
known_hosts:
name: "TS_github"
key: "github.com,192.30.252.129 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ=="但是,由于某些原因,这个剧本对于每一个错误的主机都失败了:
fatal: [clusterapp-1]: FAILED! => {"changed": false, "cmd": "/usr/bin/ssh-keygen -F TS_github -f /tmp/tmpgROT5p", "failed": true, "msg": "", "rc": 1, "stderr": "", "stdout": "", "stdout_lines": []}由于某些原因,它使用/tmp/tmpgROT5p作为密钥文件,这显然是错误的。正如安利多中所述,known_hosts模块应该使用“(Homedir)+/..ssh/知名_known_hosts”,但它没有发生。
我开始使用的剧本如下:
ansible-playbook -i hosts github_keys.yml我还试着用-vvv键开始游戏,但没有得到任何有用的信息。
我的ansible.cfg文件:
[defaults]
transport=ssh
host_key_checking=false发布于 2016-07-19 17:23:25
name应该是主机的名称。
所以在你的例子中,名字需要是github.com,key应该是github.com,192.30.252.129 ssh-rsa AAAAB3NzaC1yc2EAA...
---
- hosts: all
tasks:
- name: Add github to ssh known-hosts
known_hosts:
name: github.com
key: "github.com,192.30.252.129 ssh-rsa AAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ=="发布于 2016-10-04 16:58:36
作为另一种选择,您可以为特定用户使用一个. .ssh/config文件来忽略known_hosts,如果您只是试图避免被提示,这会影响您的安全需求。
主机* StrictHostKeyChecking no
发布于 2019-08-28 19:22:23
一种可能的解决办法是使用块文件。
- name: Add github to ssh known-hosts
blockinfile:
path: ~/.ssh/known_hosts
block: "github.com,192.30.252.129 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ=="
marker: "# {mark} github"当然,使用known_hosts是推荐的方法,但是这个方法运行得很好。也适用于管理/etc/主机
https://serverfault.com/questions/773293
复制相似问题