Назад | Перейти на главную страницу

Установите один ключ SSH несколько раз на одном компьютере через марионетку

Я хочу иметь одно место, где я определил ключи ssh для своих пользователей. Эти пользователи могут быть в разных (нескольких) ролях на одном сервере. Поэтому я определил ssh_authorized_key как виртуальный, а затем захотел реализовать их в разных ролях. Пример:

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

Но puppet установит сертификаты только для одного пользователя. Я считаю, что основная концепция моего решения неверна. Но я не могу понять, как установить один сертификат для нескольких пользователей?

Вы правы в том, что основная концепция вашего решения неверна, но я думаю, что это неверно намного раньше, чем вы подозреваете. Лучшая практика - не делиться счетами; каждый пользователь должен иметь индивидуальную учетную запись и использовать sudo для выполнения задач, требующих дополнительных привилегий. Если честно должен поделитесь одной или несколькими учетными записями, а затем разрешите своим пользователям sudo su - ACCOUNT вместо того, чтобы входить напрямую как ACCOUNT. Например:

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

Затем добавьте соответствующие записи в свой /etc/sudoers (также, надеюсь, управляется марионеткой!):

# 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