Seite wählen

SSH key Verwaltung mit Puppet

von | Mai 20, 2011 | Betriebssysteme, Linux, Puppet

Viele Administratoren benutzen SSH und melden sich jeden Tag an vielen Maschinen mit unterschiedlichen Passwörtern an.
Das dauert zum einen lange und zum anderen verleitet es einen möglichst kurze, einfache Passwörter zu benutzen.
Die bessere Variante ist, sich per public key einzuloggen.
Sofern man nicht schon einen key hat, z.B. in ~/.ssh, kann man sich einen anlegen.

[root@srv ~]# ssh-keygen

Der public key wird anschließend auf den Server gelegt, den privaten behält man für sich! Es gibt außerdem zwei verschiedene Ansätze: Wenn man sich anmeldet, kann man entweder sofort root sein, oder man bleibt erstmal normaler Benutzer und kann sich später zum root machen.
Nun möchte man natürlich nicht jeden Server per Hand konfigurieren, sonst hat man die Zeitersparnis ganz schnell aufgebraucht. Aber deswegen gibt es ja Puppet, mit dem man Linuxserver zentral konfigurieren kann.

Wir legen uns drei Klassen in Puppet an.

1.) ssh

Mit dieser Klasse wird sichergestellt, dass der ssh-daemon installiert ist, läuft und eine gültige Konfiguration hat.

class ssh {
package {'openssh-server':
ensure => 'present',
}
service {'sshd':
name => 'ssh',
require => Package['openssh-server'],
ensure => 'running',
enable => 'true',
hasstatus => 'true',
hasrestart => 'true',
subscribe => File['/etc/ssh/sshd_config']
}
file {'/etc/ssh/sshd_config':
ensure => 'present',
source => 'puppet:///files/etc/ssh/sshd_config-new',
owner => 'root',
group => 'root',
mode => '644',
}
}

Es ist wichtig, dass für die Authentifizierung als root in der sshd_config unter anderem folgende Werte gesetzt sind:

PermitRootLogin yes
PubkeyAuthentication yes

Außerdem, damit man bei der root Anmeldung immer sieht wer sich genau anmeldet:

LogLevel VERBOSE

2.) ssh keys für root Anmeldung

Hier werden die keys in /root/.ssh/ssh_authorized_key geschoben. Man kann sich anschließend mit

 ssh root@system  

anmelden ohne das Passwort einzugeben.

class users_root {
ssh_authorized_key {
'Max_Mustermann':
ensure => 'present',
user => 'root',
key => 'vnjklvfAVFNJAAAAAAAAKÖASFV+vfdnjklas/
vfnjklvslöoVFSJOASvmklvaäüvfadhnjuiAAAAyYZH7b9eDNVehtL87t5lJ199IfrU7Tw7+58zAiyYZH7b9eDNVehtL87t5l
J199IfrU7Tw7+58zAivmnjkövfaslAAAA/vnfjakiölvsjkölvfadbnjkö/++vasmnjköv/BGDSAvnkljbdaBFAFDEnjoäöba
BAEjnbiobhuzipy--BAbujpöbhuip//bnjauip  vfda/VNÖASÖDKINAAAAsvmklötrrehhjj55öybö',
type => 'ssh-rsa';
}
}

3.) ssh keys für user Anmeldung

In dieser Klasse werden auf allen Systemen Benutzer angelegt und anschließend der public key verteilt.

class users_user {
group {'Firma':
ensure => 'present',
gid => '40000',
}
group {'Firma-IT':
ensure => 'present',
gid => '40001',
}
#Max Mustermann
user {Max_Mustermann':
ensure => 'present',
managehome => 'true',
shell => '/bin/bash',
uid => '35123',
gid => 'Firma',
groups => 'Firma-IT'
}
ssh_authorized_key {'Max_Mustermann':
ensure => 'present',
user => 'Max_Mustermann',
key => 'vnjklvfAVFNJAAAAAAAAKÖASFV+vfdnjklas/
vfnjklvslöoVFSJOASvmklvaäüvfadhnjuiAAAAyYZH7b9eDNVehtL87t5lJ199IfrU7Tw7+58zAiyYZH7b9eDNVehtL87t5l
J199IfrU7Tw7+58zAivmnjkövfaslAAAA/vnfjakiölvsjkölvfadbnjkö/++vasmnjköv/BGDSAvnkljbdaBFAFDEnjoäöba
BAEjnbiobhuzipy--BAbujpöbhuip//bnjauip  vfda/VNÖASÖDKINAAAAsvmklötrrehhjj55öybö',[/code]
type => 'ssh-rsa',
require => User['Max_Mustermann']
}
Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.

1 Kommentar

  1. Peter Hinse

    Man will eigentlich (wenn man schon root login erlaubt), wenigstens
    PermitRootLogin without-password
    setzen.

    Antworten

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema Betriebssysteme | Linux | Puppet

Kritischer Fehler in Puppet Version 7.29.0 und 8.5.0

Eine Warnung an alle Nutzer von Puppet, aber auch Foreman oder dem Icinga-Installer, die Version 7.29.0 und 8.5.0 von Puppet enthält einen kritischen Fehler, der die Erstellung eines Katalogs und somit die Anwendung der Konfiguration verhindert. Daher stellt bitte...

Raycast, ein fast neuer und genialer App Launcher

Wenn es um die Effektivität bei der Arbeit am Mac geht, gibt es viele Werkzeuge, die dir helfen können, produktiver zu sein. Eines der Tools, das ich sehr empfehlen kann, ist Raycast - ein Application Launcher für den Mac. Raycast hilft dir, deine Arbeitsabläufe zu...

Schulungsnotebooks in neuem Gewand

In diesem Jahr konnten wir endlich wieder mehr Vor-Ort Trainings durchführen als in den vergangenen Jahren und sogar vereinzelte Inhouse-Trainings bei Kunden waren möglich. Bisher haben wir bei unseren Präsenztrainings oder auch -workshops auf Notebooks mit CentOS 7...