-class ssh {
- package {
- openssh-client: ensure => installed;
- openssh-server: ensure => installed;
- }
+# @param extraports Addresses/ports to listen on, in addition to 22
+class ssh (
+ Array[String] $extraports = [],
+) {
+ package { [ 'openssh-client', 'openssh-server']:
+ ensure => installed
+ }
- case $hostname {
- bartok: {
- $keyinfo = allnodeinfo("sshRSAHostKey", "ipHostNumber")
- }
- }
+ service { 'ssh':
+ ensure => running,
+ require => Package['openssh-server']
+ }
+ ferm::rule::simple { 'dsa-ssh':
+ description => 'check ssh access',
+ port => 'ssh',
+ target => 'ssh',
+ }
+ ferm::rule { 'dsa-ssh-sources':
+ description => 'Allow SSH from DSA',
+ domain => '(ip ip6)',
+ chain => 'ssh',
+ rule => 'saddr ($SSH_SOURCES) ACCEPT'
+ }
+ Ferm::Rule::Simple <<| tag == 'ssh::server::from::nagios' |>>
- file { "/etc/ssh/ssh_config":
- source => [ "puppet:///ssh/ssh_config" ],
- require => Package["openssh-client"]
- ;
- "/etc/ssh/sshd_config":
- content => template("ssh/sshd_config.erb"),
- require => Package["openssh-server"],
- notify => Exec["ssh restart"]
- ;
- "/etc/ssh/userkeys":
- ensure => directory,
- owner => root,
- group => root,
- mode => 755,
- ;
- "/etc/ssh/userkeys/root":
- content => template("ssh/authorized_keys.erb"),
- mode => 444,
- require => Package["openssh-server"]
- ;
- }
+ file { '/etc/ssh/ssh_config':
+ content => template('ssh/ssh_config.erb'),
+ require => Package['openssh-client']
+ }
+ file { '/etc/ssh/sshd_config':
+ content => template('ssh/sshd_config.erb'),
+ require => Package['openssh-server'],
+ notify => Service['ssh']
+ }
+ file { '/etc/ssh/userkeys':
+ ensure => directory,
+ mode => '0755',
+ require => Package['openssh-server']
+ }
+ file { '/etc/ssh/puppetkeys':
+ ensure => directory,
+ mode => '0755',
+ purge => true,
+ recurse => true,
+ force => true,
+ source => 'puppet:///files/empty/',
+ require => Package['openssh-server']
+ }
+ file { '/etc/ssh/userkeys/root':
+ content => template('ssh/authorized_keys.erb'),
+ }
- exec { "ssh restart":
- path => "/etc/init.d:/usr/bin:/usr/sbin:/bin:/sbin",
- refreshonly => true,
- }
+ if (versioncmp($::lsbmajdistrelease, '8') >= 0) {
+ if ! $facts['has_etc_ssh_ssh_host_ed25519_key'] {
+ exec { 'create-ed25519-host-key':
+ command => 'ssh-keygen -f /etc/ssh/ssh_host_ed25519_key -q -P "" -t ed25519',
+ }
+ }
+ if $facts['systemd'] {
+ package { [ 'libpam-systemd' ]:
+ ensure => installed
+ }
+ }
+ }
}