我想有一个地方为我的用户定义了ssh密钥。 这些用户可以在单个服务器上具有不同(多个)angular色。 所以我将ssh_authorized_key定义为虚拟的,然后想要以不同的angular色来实现它们。 例:
@ssh_authorized_key { "user_a": tag => ['deployer', 'developer', 'root'], key => "xxx", type => "ssh-dss", ensure => present; "user_b": tag => ['deployer', 'root'], key => "yyy", type => "ssh-dss", ensure => present; "user_c": tag => ['root', 'deployer'], key => 'zzz', type => "ssh-rsa", ensure => present; }
然后在单个节点上为多个用户实现它们:
Ssh_authorized_key<| tag == 'root' |> { user => 'root' } Ssh_authorized_key<| tag == 'deployer' |> { user => 'deployer' }
但木偶只能为一个用户安装证书。 我认为我的解决scheme的主要概念是错误的。 但我不知道如何安装单个证书给多个用户?
您的解决scheme的主要概念是错误的,但是我认为这是错误的远远超过您的怀疑。 最好的做法是不要分享帐户; 每个用户应该有一个单独的帐户,并使用sudo执行需要备用权限的任务。 如果您诚实地分享一个或多个帐户,则允许您的用户sudo su - ACCOUNT而不是直接以帐户身份login。 例如:
user { 'alice': groups => ['developer', 'deployer', 'root'] # other params... } ssh_authorized_key { 'alice': #params }
然后在/etc/sudoers添加适当的条目(也希望由puppetpipe理):
# deployer group can run the deployment script without a password. %deployer ALL = NOPASSWD: /usr/local/bin/deploy # developer group can run commands as 'developer' %developer ALL = (developer) ALL # or, if you actually *must* allow them to log in as 'developer' %developer ALL = /usr/bin/su developer