【发布时间】:2020-01-01 02:43:36
【问题描述】:
我正在配置一个新服务器,并希望将其公钥自动添加到我的本地 known_hosts 文件中。我的服务器在端口2222 上运行。
hosts:
[remotes]
my_server ansible_host:42.42.42.42 ansible_port:2222
playbook.yml:
---
hosts: all
gather_facts: no
tasks:
- name: get host key
local_action: command ssh-keyscan -t rsa -p {{ansible_port}} -H {{ansible_host}}
register: host_key
- name: add host key
when: host_key is success
delegate_to: localhost
known_hosts:
name: "{{item}}"
state: present
hash_host: yes
key: "{{host_key.stdout}}"
with_items:
- "{{ansible_host}}"
- "{{inventory_hostname}}"
这会将新条目添加到known_hosts。
但ssh 42.42.42.42:2222 和ssh my_server:2222 仍然显示未知键警告。
我怀疑这是因为 1) 我在非标准端口上运行(known_host 模块的文档没有显示设置端口的选项),或 2) 与散列选项有关.
我该怎么做?
【问题讨论】:
-
"这会将新条目添加到 known_hosts"。由于它不断发出警告,我建议您键入“是”以手动添加密钥,然后比较 2 行(ansible PB 添加的 1 行,ssh 命令添加的 1 行)。您也可以手动运行
sh-keyscan -t rsa -p {{ansible_port}} -H {{ansible_host}}命令并在屏幕上获取输出。 -
@ilias-sp 好主意! ansible 脚本生成的脚本是
ssh-rsa,当我键入“yes”时手动生成的脚本是ecdsa-sha2-nistp256。服务器是香草 ubuntu 18.04 LTS。known_hosts模块似乎没有指定密钥类型的选项。你建议我做什么?