使用 salt 为非 root 用户生成 ssh 密钥

使用 salt 为非 root 用户生成 ssh 密钥

我需要为用户 helen 生成 ssh 密钥(公钥/私钥对)。此用户已存在于我的所有 salt minions 中。如何从 salt master 为该用户生成 ssh 密钥?

对于 root 用户,我使用此命令生成密钥并且运行良好:

salt '*application-server-*' cmd.run "ssh-keygen -q -N '' -f /root/.ssh/id_rsa"

我可以发出以下命令来为 helen 生成 ssh 密钥;但权限和所有权会有所不同;因此需要再次发出命令来更正权限和所有权:

salt '*application-server-*' cmd.run "ssh-keygen -q -N '' -f /home/helen/.ssh/id_rsa"

在 salt 中有没有办法以用户 helen 而不是 root 身份运行此命令?

一般来说,salt 中是否有办法以非 root 用户身份运行命令?

答案1

使用salt命令

salt '*application-server-*' cmd.run \
    "ssh-keygen -q -N '' -f /home/helen/.ssh/id_rsa" \
    runas=helen

http://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.cmdmod.html#salt.modules.cmdmod.run

使用状态

cmd您可以通过将状态设置为用户名来指定使用状态时的用户,runas 以运行以下命令:

generate_ssh_key_helen:
  cmd.run:
    - name: ssh-keygen -q -N '' -f /home/helen/.ssh/id_rsa
    - runas: helen
    - unless: test -f /home/helen/.ssh/id_rsa

http://docs.saltstack.com/en/latest/ref/states/all/salt.states.cmd.html#salt.states.cmd.run

相关内容