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

Ajo*_*ine 4 linux ssh-keys saltstack

我需要为用户 helen 生成 ssh 密钥(公共/私有对)。该用户已经在我所有的盐奴中了。如何从我的 salt master 为该用户生成 ssh 密钥?

对于 root 用户,我使用此命令生成了密钥,效果很好:

salt '*application-server-*' cmd.run "ssh-keygen -q -N '' -f /root/.ssh/id_rsa"
Run Code Online (Sandbox Code Playgroud)

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

salt '*application-server-*' cmd.run "ssh-keygen -q -N '' -f /home/helen/.ssh/id_rsa"
Run Code Online (Sandbox Code Playgroud)

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

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

Chr*_*uet 5

使用salt命令

salt '*application-server-*' cmd.run \
    "ssh-keygen -q -N '' -f /home/helen/.ssh/id_rsa" \
    runas=helen
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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