Home > Systemverwaltung > SSH ohne Passwort ?

SSH ohne Passwort ?

Ich betreue neben unserem eigenen Unternehmensserver auch eine ganze Reihe von Kundenservern (Linux). Da diese über das Internet per SSH erreichbar sind und sein müssen, empfiehlt es sich dort wirklich starke Passwörter zu verwenden, damit nicht irgendein Script-Kiddie  einbricht und Unsinn macht.

Tja und starke Passwörter haben nun mal den Nachteil, dass sie nur schwer bis gar nicht im Kopf zu behalten sind. Es ist auch nicht gut, überall das gleiche Passwort zu verwenden. Gelingt tatsächlich ein Einbruch, sind gleich alle Server betroffen. Nicht klug.

Was tut man also ? Man hat ein geheimes Plätzchen (elektronisch oder Papier) um das entsprechende Passwort zu notieren, das man dann bei Bedarf raussucht und dann eintippt. Also mich nervt das und es hält auf.

Nachfolgend die Lösung, die ich verwende, um einen optimalen Kompromiss zwischen Sicherheit und Komfort zu haben. Letztlich melde ich mich lokal auf meinem PC als root ein und verwende dann immer das gleiche leicht merkbare Passwort um mich auf allen Servern mit verschiedenen und hochkomplexen langen Passwörtern per SSH anzumelden.

Voraussetzung, dass die oben beschriebene simple Lösung funktioniert, ist Kryptograhie und ein  Schlüsselpaar : public und private. Den „Public-Teil“ kopiert man auf den Server und dieser fragt dann bei einem Anmeldeversuch per SSH den Sender nach dem „Private-Teil“. Passen die beiden zusammen, ist der Server sicher, dass man befugt ist und lässt einen rein.

Kochrezept dafür:

Einmalig erzeugt man als root auf seinem lokalen PC das Schlüsselpaar

# ssh-keygen -t rsa

oder

# ssh-keygen -t dsa

RSA und DSA sind Signaturalgorithmen. Wer mehr wissen will : Wikipedia

Dies sieht auf Commandline-Ebene so aus:

$ ssh-keygen -t rsa
 Generating public/private rsa key pair.
 Enter file in which to save the key (/home/akejr2/.ssh/id_rsa):
 Created directory '/home/akejr2/.ssh'.
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 Your identification has been saved in /home/akejr2/.ssh/id_rsa.
 Your public key has been saved in /home/akejr2/.ssh/id_rsa.pub.
 The key fingerprint is:
 11:ea:5a:08:2a:90:1d:7e:05:9d:33:eb:3f:30:99:75 akejr2@linux-16zo.site
 The key's randomart image is:
 +--[ RSA 2048]----+
 |  . .o...        |
 | + . .=. .       |
 |o + . .+.        |
 |.. o o. ..E      |
 |o   ..o+S.       |
 |.    o*          |
 |    .  +         |
 |        o        |
 |         .       |
 +-----------------+
 
$

Diese Passphrase ist das „Passwort“ das man später immer eingeben muss. Lässt man es leer, fragt SSH nicht nach einem Passwort. Ein Sicherheitslevel weniger … Besser nicht tun. Gibt andere Möglichkeiten.

Jeden Server, auf den man per SSH gehen möchte, versorgt man mit dem öffentlichen Schlüssel

Dies geht auch sehr einfach :

  $ ssh-copy-id -i ~/.ssh/id_rsa.pub root@meinserver.de

oder

  $ ssh-copy-id -i ~/.ssh/id_dsa.pub root@meinserver.de

Ihr verwendet natürlich eure Daten für „root@meinserver.de“ 😉 … Natürlich tut ihr das 🙂 …

Dabei müsst ihre einmalig das starke, lange und komplizierte Passwort des Servers eingeben.

Anmelden auf so einem Server

Ja jetzt gehts fast ganz normal auf eure Server

# ssh root@meinserver.der

Früher musstet ihr dann immer das starke, lange und komplizierte Server-Passwort eingeben. Und das war unterschiedlich für jeden Server.

Jetzt gebt ihr immer das gleiche Passwort ein : die sog. Passphrase, die ihr bei der Schlüsselerzeugung festgelegt habt.

Also ich finde das eine deutliche Erleichterung, ohne Kompromisse bei der Sicherheit machen zu müssen.

Um sich die Eingabe der passphrase auch noch zu sparen, kann man beim Login einen ssh-agent starten. Ist unterschiedlich  bei den Clients (Linuxe und Mac). Also einfach mal googeln oder

$ man ssh-agent
KategorienSystemverwaltung Tags: ,
  1. 9. März 2012, 02:40 | #1

    Naja… jetzt stellt man noch den SSH Server (sshd_config) so ein, dass man nur noch mit dem SSH-Agent sich einloggen darf (UsePam no) und ein Passwort erst garnichtmehr abgefragt wird, dann ist es der beste kompromiss. Ohne Key – kein Login.

    LG,
    Franz

    • 9. März 2012, 10:34 | #2

      Hi Franz,

      genau. Sehr gute Ergänzung !

      Beste Grüße

      Toni

  2. 20. März 2012, 00:52 | #3

    Nach einigen Gedankenspielchen finde ich die Passphrase-lose Keyverwaltung sehr ungeschickt. Ich hatte durch einen aktuellen Fall genau soetwas, dass der private Key (wie auch immer das gelang) geklaut wurde und damit ziemlich viel Schaden angerichtet wurde. Wir merken uns also: Immer passphase-Key anlegen – wenn es nur 1und2und3 als Passwort ist (oder den User mit er Passphraselosen-Public-Key im „jail“ einsperren).

    • 20. März 2012, 09:54 | #4

      Danke Franz.

      ja genau so mache ich es auch. Sogar etwas stärker als 123… 😉

      Viele Grüße

      Toni

  1. Bisher keine Trackbacks