![使用 salt 为非 root 用户生成 ssh 密钥](https://linux22.com/image/648082/%E4%BD%BF%E7%94%A8%20salt%20%E4%B8%BA%E9%9D%9E%20root%20%E7%94%A8%E6%88%B7%E7%94%9F%E6%88%90%20ssh%20%E5%AF%86%E9%92%A5.png)
我需要为用户 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