python - 在剧本中使用authorized_key模块为新用户设置SSH key

标签 python ssh ansible authorized-keys

场景:

根据 hosts 文件的 [clients] 部分执行以下操作:

  1. 检查用户“foo”的SSH登录是否失败,如果失败
  2. 使用authorized_key模块为用户“foo”添加SSH key
  3. 假设远程计算机上已存在用户“foo”,并且已在本地(ansible)主机上创建了 SSH 公钥

我知道this solution使用 Ansible 命令行,但我希望能够将其放入剧本中。让脚本与用户输入密码(包括 sudo)进行交互是可以接受的。

现在我想出了如何使用第 3 方角色 GROG.authorized-key 来做我想做的事情,但它仍然需要我使用 -K 开关运行 playbook。 Ansible 中是否有某些东西(除了命令行开关之外)只会在需要时提示输入密码?

- hosts: clients
  vars:
    authorized_key_list:
      - name: pdo
        authorized_keys:
         - key: "{{ lookup('file', '/home/pdo/.ssh/id_rsa.pub') }}"
           state: present
  roles:
    - { role: GROG.authorized-key }

最佳答案

我认为根据您的评论,这应该有效:

- hosts: clients
  become: true
  tasks: 
  - name: Add authorized_key to pdo user on the remote client machine(s)
    authorized_key: user=foo key="{{ lookup('file', '/home/pdo/.ssh/id_rsa.pub') }}"

使用 -K 调用它以获取密码问题。这将在远程计算机上执行 sudo 命令。这就是您所需要的,不是吗?

关于python - 在剧本中使用authorized_key模块为新用户设置SSH key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36722679/

相关文章:

python - 如何在 Django 模型中使用枚举作为选择字段

mysql - 通过ssh访问Mysql(不允许隧道)

dictionary - Ansible include_vars 到字典中

list - 在ansible中是否有对列表内容求和的快捷方式?

powershell - 通过 GPO 的 Ansible Winrm HTTPS 监听器配置

python - 使用元类/反射的 python 中 udp 缓冲区的对象类型

python - 有没有办法将打印品限制为仅真正的同余?

python - Pandas 数据帧 : how to turn one row into separate rows based on labelled column value

windows - Powershell 中的流水线字符串

python - 从 Ubuntu 远程连接到 Windows