Instale uma única chave SSH várias vezes em uma única máquina via fantoche

5

Eu quero ter um lugar onde eu tenha definido chaves ssh para meus usuários. Esses usuários podem estar em diferentes (múltiplas) funções em um único servidor. Então eu defini ssh_authorized_key como virtual e, em seguida, queria realizá-los em diferentes funções. Exemplo:

@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;
}

E, em seguida, realizá-los para vários usuários no nó único :

Ssh_authorized_key<| tag == 'root' |> {
    user    => 'root'
}

Ssh_authorized_key<| tag == 'deployer' |> {
    user    => 'deployer'
}

Mas o fantoche instalará os certificados apenas para um usuário. Eu acho que o conceito principal da minha solução está errado. Mas não consigo descobrir como instalar um único certificado para vários usuários?

    
por Michal Bryxí 11.10.2011 / 11:47

1 resposta

2

Você está certo de que o conceito principal de sua solução está errado, mas acho que está errado muito antes do que você suspeita. A prática recomendada é não compartilhar contas; cada usuário deve ter uma conta individual e usar sudo para executar tarefas que exigem privilégios alternativos. Se você honestamente precisar compartilhar uma ou mais contas, permita que seus usuários compartilhem sudo su - ACCOUNT em vez de fazer login diretamente como ACCOUNT. Por exemplo:

user { 'alice': groups => ['developer', 'deployer', 'root'] # other params... }
ssh_authorized_key { 'alice': #params }

Em seguida, adicione entradas apropriadas no seu /etc/sudoers (também gerido por fantoche!):

# 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
    
por 07.11.2011 / 20:53

Tags