用盐为非root用户生成ssh密钥

我需要为用户生成ssh-keys(公共/私有对)。 这个用户已经在我所有的盐族中。 如何从我的盐大师为这个用户生成ssh密钥?

对于root用户,我使用这个命令生成密钥,它工作正常:

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

我可以发出下面的命令,可以为helen生成ssh-keys; 但是权限和所有权会有所不同; 所以需要再次发出命令来更正权限和所有权:

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

有没有任何方法可以用盐作为用户helen而不是root来运行这个命令?

一般来说,有没有一种方法可以让盐作为非root用户运行命令?

使用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