Debian mit OpenSSH administrieren

Sich immer über den „root“-Zugang an einem Server anzumelden, birgt ein gewisses Sicherheitsrisiko. Daher ist es schlauer, wenn man einen weiteren Benutzer anlegt, der auch über „Super User“-Rechte verfügen kann und sich über eine geschützte Secure Shell (SSH) und einem Schlüssel mit dem Server verbindet.

Wie man so etwas einrichtet, möchte ich am Beispiel eines Linux-Servers mit Debian 5.0 (Lenny) zeigen. Dabei wird auch auf die SSH-Verbindung mit einem Windows-Client eingegangen.


Für dieses Tutorial empfehle ich die Windows-Programme WinSCP, PuTTY und PuTTYgen. Elementare Kenntnisse in PuTTY und WinSCP werden vorausgesetzt. Im Beispiel heißt der neue Benutzer „username“. Man sollte daher diesbezügliche Bezeichnungen an den eigenen Benutzernamen anpassen.

Grundlegende Einstellungen:

  1. Mit PuTTY als Benutzer „root“ am Server anmelden
  2. Neuen Benutzer anlegen:
    adduser username
  3. Konfigurationsdatei für privilegierte Benutzer aufrufen:
    visudo
  4. Es öffnet sich der „vi“ mit der Datei „/etc/sudoers“. Mit der Taste „i“ kann man sich in den Einfüge-Modus begeben um in der Datei zu schreiben. An das Ende der Datei muss folgende Zeile geschrieben werden:
    username ALL=(ALL) ALL
  5. Mit der „Esc“-Taste gelangt man aus dem Einfüge-Modus. Danach kann man mit der Eingabe von „:wq“ die Datei speichern und schließen (write, quit)
  6. Mit dem „vi“ die Konfiguration des SSH-Daemons aufrufen:
    vi /etc/ssh/sshd_config
  7. Über den Einfüge-Modus an das Ende der Datei navigieren und eine neue Zeile mit folgendem Inhalt einfügen:
    AllowUsers username
  8. Außerdem muss diese Zeile auskommentiert werden:
    AuthorizedKeysFile %h/.ssh/authorized_keys
  9. Danach wieder mit Druck auf „Esc“ den Einfüge-Modus verlassen und die Datei abspeichern (:wq)
  10. Die geänderte Konfiguration neu laden:
    /etc/init.d/ssh reload

Benutzerspezifische Konfiguration:

  1. Über ein neues Terminal mit dem neuen Benutzer einloggen
  2. Ins Heimatverzeichnis (/home/username) wechseln:
    cd ~
  3. Ordner für die SSH-Schlüssel anlegen:
    mkdir .ssh
  4. Schlüsselpaar (Privater und öffentlicher Schlüssel) erzeugen:
    ssh-keygen -t rsa
  5. Hinweis: Wenn bei der Schlüsselgenerierung ein „Passphrase“ eingegeben wird, dann muss dieser „Passphrase“ bei jedem Login mit dem privaten Schlüssel eingegeben werden. Dies erhöht die Sicherheit, zu Lasten der einfacheren Bedienung.

  6. Nach der Schlüsselgenerierung gibt es folgende Dateien:
    /home/username/.ssh/id_rsa
    /home/username/.ssh/id_rsa.pub
  7. Die Datei id_rsa.pub ist der öffentliche Schlüssel und muss in authorized_keys umbenannt werden:
    mv /home/username/.ssh/id_rsa.pub /home/username/.ssh/authorized_keys

    Es sollten jetzt auch neue Zugriffsrechte für die Dateien gesetzt werden. Außerdem wird sicherheitshalber der Besitzer des „.ssh“-Ordners nochmal neu gesetzt:
    chown –R username:username /home/username/.ssh
    chmod 700 /home/username/.ssh
    chmod 600 /home/username/.ssh/authorized_keys

    Hinweis: Sollten die Befehle sich nicht ausführen lassen, dann hilft ein vorangestelltes „sudo“.
    Beispiel: sudo chown –R username:username /home/username/.ssh

  8. Die Datei id_rsa ist der private Schlüssel und sollte nicht auf dem Server verbleiben! Am besten man überträgt diese Datei mit einem FTP-Programm (z.B. WinSCP) auf den eigenen Rechner und löscht die Datei danach vom Server. Der private Schlüssel ist äußerst wichtig und darf an niemand anderen weitergegeben werden. Man sollte daher sehr auf seinen privaten Schlüssel achten.
  9. Wenn der private Schlüssel auf den heimischen Windows-Computer übertragen wurde, dann muss er in id_rsa.ppk umbenannt werden
  10. Danach wird der PuTTY Key Generator (PuTTYgen) gestartet
  11. In PuTTYgen auf „Load“ klicken und „id_rsa.ppk“ auswählen. Sofern bei Erstellung der Schlüssel ein Passphrase eingegeben wurde, so muss dieser jetzt angegeben werden.
  12. Der für PuTTY formatierte private Schlüssel muss nun über „Save private key“ neu abgespeichert werden (z.B. als putty.ppk)
  13. PuTTY starten und dort unter „Connection“ -> „SSH“ -> „Auth“ bei „Private key file for authentication“ die putty.ppk-Datei auswählen.
  14. Im Hauptmenü „Session“ wie gewohnt die IP-Adresse und den SSH-Port einstellen und danach die Session speichern und öffnen
  15. Es sollte nun ein Login erfolgen, bei dem ihr nur noch den Benutzernamen (username) eingeben müsst. Der Server müsste euch daraufhin über euren privaten Schlüssel erkennen können.
  16. Bei der WinSCP Anmeldung kann man ebenfalls unter Sitzung bei „Datei mit privatem Schlüssel“ die Datei putty.ppk angeben.

Wenn das Login über SSH funktioniert, dann kann in der Datei /etc/ssh/sshd_config zur erhöhten Sicherheit noch der Standard-SSH-Port (22) auf einen anderen Port geändert werden. Außerdem empfiehlt es sich das Root-Login sowie die Authentifizierung über Passwörter zu verbieten.

4 Gedanken zu „Debian mit OpenSSH administrieren“

  1. Vielen Dank für diese tolle und hilfreiche Anleitung!

    Eine Frage habe ich aber noch. Wahrscheinlich kann man in WinSCP dann ohne Root-Rechte keine Configurationsdateien mehr editieren (stimmt doch, oder?). Arbeitest Du dann generell über Putty in Dateien?

    Ich würde dazu gerne einen lokalen Editor wie Notepadd++ unter Windows verwenden, weil es einfach angenehmer und übersichtlicher wirkt. Ist das die schlechte Schule? 🙂 Wie machst Du das üblicherweise?

  2. Hallo Julien. Vielen Dank für deinen Kommentar. Du hast den Artikel zwar schon gefunden aber trotzdem möchte für alle anderen den Link zu „WinSCP über OpenSSH mit Root-Rechten“ bereitstellen. 🙂

    Dateien auf dem Server bearbeite ich mit einem Doppelklick in WinSCP immer direkt. Falls du einen schicken Editor brauchst (so wie Notepad++), dann kannst du dir die entsprechenden Dateien ja herunterladen und auf deiner Windows-Maschine mit Notepad++ bearbeiten und danach wieder auf den Server laden.

    Ich hoffe deine Fragen sind damit beantwortet?

    Viele Grüße

    Benny

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.