【发布时间】:2020-01-15 01:50:37
【问题描述】:
我正在尝试使用提供的 ssh 密钥在远程服务器上运行我的 Ansible playbook。
我已将以下配置添加到我的库存文件中:
all:
hosts:
server1:
ansible_host: sample.server@noname.com
dest_dir: /root
sample_tree: sample_tree.txt
private_key_file: ../config/id_rsa_tf
我在我的剧本中使用以下内容引用了它:
- name: "Nightly Deploy"
hosts: server1
remote_user: sysuser
tasks:
- name: Copy test from local to remote
tags:
- copy
- all
copy:
src: "test.tgz"
dest: "{{ dest_dir }}/test.tgz"
我正在使用以下命令运行剧本:
ansible-playbook --tags="copy" -v -i inventories/nightly-build.yaml playbooks/nightly-build.yaml
我得到的错误如下:
致命:[server1]:无法访问! => {"已更改": false, "msg": "失败
通过 ssh 连接到主机:Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)。", "unreachable": true}
我的 private_key_file 在我的库存文件中是错误的还是我调用它的错误?帮助会很大
【问题讨论】:
-
也可能是用户问题。您是否传递了正确的用户,您可以尝试使用 -u 传递它。
-
如果我在 playbook 中指定 remote_user,是否必须在运行时传递用户?
-
两位 cmets 真的很有帮助,谢谢。事实证明,我的问题是由于没有传递主机并在我的清单中传递了错误的 var 名称,它应该是
ansible_ssh_private_key_file