Если Ваш поиск исторической ссылки, можно попробовать сторонний инструмент как Вход в систему, Центральный от, Мотивируют Системы. Это записывает все входы в систему Пользователя Active Directory и обеспечивает веб-интерфейс для анализа данных. Это также включает некоторые довольно хорошие графики, которые переводят статистику входа в систему в использование процента.
Начиная с Puppet 3.6, теперь можно очистить неуправляемые авторизованные ключи SSH с помощью типа пользователя
. Например,
user { 'nick':
ensure => present,
purge_ssh_keys => true,
}
Вместо использования ресурсов ssh_authorized_key
я решил определить ресурс authorized_keys
, который принимает список всех ключей SSH для одного пользователя. Определение выглядит так: параметр
define authorized_keys ($sshkeys, $ensure = "present", $home = '') {
# This line allows default homedir based on $title variable.
# If $home is empty, the default is used.
$homedir = $home ? {'' => "/home/${title}", default => $home}
file {
"${homedir}/.ssh":
ensure => "directory",
owner => $title,
group => $title,
mode => 700,
require => User[$title];
"${homedir}/.ssh/authorized_keys":
ensure => $ensure,
owner => $ensure ? {'present' => $title, default => undef },
group => $ensure ? {'present' => $title, default => undef },
mode => 600,
require => File["${homedir}/.ssh"],
content => template("authorized_keys.erb");
}
}
$ ssh_keys
принимает все необходимые ключи в виде списка. Шаблон authorized_keys.erb
выглядит следующим образом:
# NOTICE: This file is autogenerated by Puppet and should not be modified
<% sshkeys.each do |key| -%>
<%= key %>
<% end -%>
user {'mikko':
...
}
authorized_keys {'mikko':
sshkeys => [
'ssh-rsa XXXXXXYYYYYYYYYZZZZZZZZZ mikko@domain.tld',
'ssh-rsa XXXXXXZZZZZZZZZHHHHHHHHH mikko@other-host.tld',
],
}
Добавить ключи SSH условно (например, в разных классах) также легко, благодаря оператору Puppet +>
:
Authorized_keys <| title == 'mikko' |> {
sshkeys +> 'ssh-rsa ASDFASDFASDFASDF mikko@somewhere-else.tld'
}
При использовании этого метода у пользователя никогда не будет ключей, которые явно не указаны в конфигурации Puppet. Строка ключа используется в authorized_keys так же, как и есть, поэтому добавление параметров и ограничений тривиально.
Я был бы рад услышать, если другие успешно использовали этот метод!
Вы можете сделать это, используя метатип resources . EG
resources { 'ssh_authorized_key': noop => true, purge => true, }
Установка noop => true,
предотвращает удаление. Вместо этого марионетка сообщит, что будет удалено. Если это то, что вам нужно, удалите оператор noop .
Идеальный синтаксис для выполнения операций с неуправляемыми ресурсами - это в стадии обсуждения .
РЕДАКТИРОВАТЬ: Как упоминалось в комментариях , этот ответ не работает.
On Puppet Forge a module has been published under the Apache License, Version 2.0 that offers this ability.
It relies on Puppet concat instead of templates though.
https://github.com/nightfly19/puppet-ssh_keys/tree/master/manifests
Instead of passing an array of keys as a parameter you define separate entries for each key.
Different approach from Mikko's, but same net result.