首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行"sudo su“

运行"sudo su“
EN

Stack Overflow用户
提问于 2020-05-04 18:42:03
回答 1查看 1K关注 0票数 0

我尝试在远程主机上运行inital剧本,即设置SSH公钥。问题是,没有SSH,我就无法连接。我试过这样的东西,但不管用。

代码语言:javascript
复制
- hosts: remote_host
  become: yes
  become_user: mongod
  become_method: sudo
  become_exe: "sudo su - "

  tasks:

  - name: Add public ssh keys
    lineinfile:
      path: /home/mongod/.ssh/authorized_keys
      owner: mongod
      group: mongod
      mode: '0600' 
      state: present 
      line: "{{ item }}"
    loop:
      - "ssh-rsa AAAAB3NzaC1yc2E...= domscheit@ansible_host"

注意,sudo su - mongod是我可以作为用户domscheit运行的唯一的命令。我没有用户mongod的密码,因此我不能直接用于连接。上面的剧本像FAILED! => {"msg": "Missing sudo password"}一样返回错误

事实上,我找到了一个解决办法:

代码语言:javascript
复制
- hosts: remote_host
  tasks:

  - name: Add public ssh-key to authorized_keys
    shell: |
      sudo su - mongod <<< "mkdir --mode=700 /home/mongod/.ssh"
      sudo su - mongod <<< "echo ssh-rsa AAAAB3Nza...= domscheit@ansible_host >> /home/mongod/.ssh/authorized_keys"
      sudo su - mongod <<< "chmod 600 /home/mongod/.ssh/authorized_keys"
    args:
      executable: /bin/bash

它正在起作用,但是应该有一个更好的解决办法。它创建了[WARNING]: Consider using 'become', 'become_method', and 'become_user' rather than running sudo

一旦设置了公共ssh键,我就可以使用--user mongod继续进行实际的操作。

EN

回答 1

Stack Overflow用户

发布于 2020-05-04 22:12:17

正如@chelmertz所提到的,您不需要(甚至不应该)通过cmd或其他什么方式回显ssh键。在ansible中确实有authorized_key模块。它将注意适当的特权和不正确的东西,所以您的密钥不仅会被添加,而且会按预期工作。

只使用mongod运行任务,为用户become: yes添加ssh键

代码语言:javascript
复制
- hosts: remote_host
  become: yes
  tasks:

    - name: Set authorized key taken from file
      authorized_key:
      user: mongod
      state: present
      key: "{{ lookup('file', '/path/to/your/pub/key/id_rsa.pub') }}"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61599349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档