【问题标题】:Deploy rsa key to other machines将 rsa 密钥部署到其他机器
【发布时间】:2019-08-30 19:03:18
【问题描述】:

我正在尝试在一台主机中创建密钥,然后在其余主机中部署该密钥。 但是 ansible 出错了,因为它无法找到我的密钥。

我创建了用户 dbadmin,后来我尝试按下键,可能是什么错误。不幸的是,详细并没有多大帮助。

 - name: Create user
    user:
       name: dbadmin
       shell: /bin/bash

  - name: Add user to sudoers group
    copy:
          dest: "/etc/sudoers.d/dbadmin"
          content: "devops  ALL=(ALL)  NOPASSWD: ALL"

  - name: Give ssh directory readable
    file:
        path: /home/dbadmin/.ssh
        owner: dbadmin
        group: dbadmin
        mode: 0700
        state: directory

  - name: Generate /etc/ssh RSA host key
    command: su dbadmin -c 'ssh-keygen -q -t rsa -f /home/dbadmin/.ssh/vid_rsa -N ""'
    args:
      creates: /home/dbadmin/.ssh/vid_rsa
    run_once: True


  - name: Disable Password Authentication
    lineinfile:
           dest=/etc/ssh/sshd_config
           regexp='^PasswordAuthentication'
           line="PasswordAuthentication no"
           state=present
           backup=yes

  - name: Disable Password Authentication
    lineinfile:
        dest: /etc/ssh/sshd_config
        regexp: '^PermitRootLogin '
        line: PermitRootLogin no"
        state: present
        backup: yes

  - name: Deploy ssh key
    authorized_key:
        user: dbadmin
        key: "{{ lookup('file', '/home/dbadmin/.ssh/vid_rsa.pub') }}"
        path: '/home/dbadmin/.ssh'

错误:

TASK [vertica-backup-restore : Deploy ssh key] *****************************************************************************************************************************
 [WARNING]: Unable to find '/home/dbadmin/.ssh/vid_rsa.pub' in expected paths (use -vvvvv to see paths)

fatal: [xx.xxx.xx.xx]: FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'file'. Error was a <class 'ansible.errors.AnsibleError'>, original message: could not locate file in lookup: /home/dbadmin/.ssh/vid_rsa.pub"}
 [WARNING]: Unable to find '/home/dbadmin/.ssh/vid_rsa.pub' in expected paths (use -vvvvv to see paths)

[dbadmin@ip-xx-xxx-xx-xx.ssh]$ ls -al
total 8
drwx------ 2 dbadmin dbadmin   40 Apr  9 12:48 .
drwx------ 3 dbadmin dbadmin   74 Apr  8 22:41 ..
-rw------- 1 dbadmin dbadmin 1675 Apr  9 12:48 vid_rsa
-rw-r--r-- 1 dbadmin dbadmin  417 Apr  9 12:48 vid_rsa.pub
[dbadmin@ip-xx-xx-xx-xx.ssh]$ pwd
/home/dbadmin/.ssh

【问题讨论】:

  • 尝试使用现有的 Ansible 解决方案,而不是使用 shell 处理所有事情。例如,不要使用command: su dbadmin -c 'ssh-keygen...,而是使用become_user: dbadmincommand: ssh-keygen...(我不认为这是问题,但它会使烟雾变淡...)

标签: linux centos ansible centos7


【解决方案1】:

从给出的代码中,我不清楚应该如何将密钥从一个主机复制到其他主机,但我猜你是在远程机器上分别创建用户和密钥对。

由于authorized_key 模块很可能会在您的控制机器(运行 ansible 的机器)上查找文件,如果您在远程服务器上运行任务,它将无法在本地找到密钥。

为了解决这个问题,您可以使用:delegate_to: "{{ inventory_hostname }}",但是为了将密钥从一个主机复制到其他主机,您仍然需要在所有所需主机上迭代该任务,并将其委托给主机你创建了用户。

查看docs 以更好地了解委托。

如果这不是问题,如果您使用主机(不是真实 IP 地址)更新问题可能会有所帮助,这样我们就可以看到那里可能出现的问题。

【讨论】:

    猜你喜欢
    • 2021-08-26
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多