如何使用公共 ssh 密钥运行 Ansible Playbook



>我正在尝试使用提供的 ssh 密钥在远程服务器上运行我的 Ansible 剧本。

我已将以下配置添加到我的库存文件中:

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

我得到的错误如下:

致命: [服务器 1]: 无法访问! => {"已更改": 假, "msg": "无法
通过 ssh 连接到主机: 权限被拒绝 (公钥,gssapi- keyex,gssapi-with-mic,password(.", "无法访问": true}

我的库存文件中的private_key_file是错误的还是我叫错了? 帮助会很棒

此错误通常在没有生成和设置有效的公钥和私钥时发生。

请尝试以下任一方法:

  1. 在剧本目录中创建/编辑 ansible.cfg 文件,并为密钥的完整路径添加一行:

    [defaults]
    privatekeyfile = /Users/username/.ssh/private_key        
    

    它会为剧本中的所有主机全局设置私钥。

  2. 使用以下行将私钥添加到剧本:

    vars:
    ansible_ssh_private_key_file: "/home/ansible/.ssh/id_rsa"
    
  3. 您还可以定义要直接在命令行中使用的私钥:

    ansible-playbook -vvvv --private-key=/Users/you/.ssh/your_key playbookname.yml
    

最新更新