no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


Vorhergehende Überarbeitung
ssh_mit_public_key-authentifizierung [2011/11/19 01:07] (aktuell) – Hinweis hinzugefügt, dass vollautomatisierte Anmeldungen auf login.uni-freiburg.de nicht möglich sind. jl50
Zeile 1: Zeile 1:
 +====== SSH mit Public Key-Authentifizierung ======
  
 +===== Einleitung =====
 +
 +SSH-Verbindungen über den Uni-Server ''login.uni-freiburg.de'' (beispielsweise zum Zugriff auf das Homeverzeichnis) verwenden normalerweise eine klassische Authentifizierung mit Benutzernamen (= Benutzerkennung) und Passwort. Für die meisten Anwendungen reicht dies aus, doch in einem Fall entsteht ein Problem: Will man den Zugriff auf diesen Server automatisieren -- beispielsweise um automatisch Backups durchzuführen --, so muss man sein Uni-Account-Passwort auf dem heimischen Rechner im Klartext hinterlegen. Dass das keine gute Idee ist, dürfte offensichtlich sein.
 +
 +===== Public Key-Authentifizierung =====
 +
 +Glücklicherweise beherrscht SSH noch eine andere Möglichkeit, sich zu authentifizieren: sogenannte Schlüsselpaare mit Private und Public Key. Grob gesagt handelt es sich dabei um zwei sehr lange Zeichenketten, die als 'Identität' eines Anwenders fungieren. Der Public Key ist dabei, wie der Name schon sagt, öffentlich und kann auf jedem beliebigen Server, mit dem man sich verbinden will, platziert werden. Den Private Key muss man dagegen so geheim halten wie ein Passwort, deswegen ist unbedingt sicherzustellen, dass kein Anderer auf diesen zugreifen kann. Weitere Informationen zur Funktionsweise der Authentifizierung mit Schlüsselpaaren finden sich beispielsweise auf [[http://de.wikipedia.org/wiki/Public-Key-Authentifizierung|Wikipedia]] oder ausführlicher in Johannes Frankens [[http://www.jfranken.de/homepages/johannes/vortraege/ssh1_inhalt.de.html#ToC14|SSH-Artikel]].
 +
 +<note important>Aufgrund besonderer Sicherheitsvorkehrungen erfordert die Public-Key-Authentifizierung auf dem Login-Server der Uni (login.uni-freiburg.de), dass bei der Authentifizierung eine Login-Session bereits läuft oder kurz zuvor gelaufen ist. Somit ist ein kein vollautomatischer Zugriff auf den Server möglich, sondern es muss unmittelbar zuvor einmalig ein normaler Login mit Eingabe des Passworts erfolgen.</note>
 +
 +
 +===== Schlüsselpaar generieren =====
 +
 +<note>Die folgende Anleitung bezieht sich ausschließlich auf Unix-Systeme. Analoge Anleitungen für Windows und Mac sollten sich aber im Netz finden lassen. Es werden Grundkenntnisse der Shell vorausgesetzt und Sie sollten den normalen SSH-Login schon einmal verwendet haben.</note>
 +
 +Die Erzeugung eines Schlüsselpaars übernimmt das Kommando ''ssh-keygen''. Ohne Parameter aufgerufen, fragt es nach einigen Daten, die entsprechend einzugeben sind:
 +<code>
 +$ ssh-keygen
 +Generating public/private rsa key pair.
 +Enter file in which to save the key (/home/jannis/.ssh/id_rsa): /home/jannis/.ssh/uni # hier möglichst aussagekräftigen Dateinamen wählen
 +Enter passphrase (empty for no passphrase): # Hier <Enter> drücken
 +Enter same passphrase again: # hier ebenfalls
 +</code>
 +
 +Danach sollte folgende Erfolgsmeldung ausgegeben werden:
 +<code>
 +Your identification has been saved in /home/jannis/.ssh/uni.
 +Your public key has been saved in /home/jannis/.ssh/uni.pub.
 +</code>
 +
 +Den Rest der Ausgabe können Sie ignorieren.
 +
 +<note warning>Erhält ein Angreifer Zugriff auf die Datei ''uni'', so kann er sich ebenso wie Sie ohne Passwortabfrage auf dem Uni-Server einloggen. Schützen Sie diese Datei also so gut wie irgend möglich!</note>
 +
 +===== Öffentlichen Schlüssel hochladen =====
 +
 +Nun müssen Sie den öffentlichen Schlüssel auf dem Server ablegen, damit der Ihre Identität überprüfen kann. Dazu bietet sich beispielsweise das Programm ''sftp'' an. (Möglicherweise ist dieses bei Ihnen nicht vorinstalliert, es sollte sich aber in den Paketquellen finden lassen.)
 +
 +Um sich mit dem Server zu verbinden, gehen Sie analog zu SSH vor, wobei ''UserID'' durch Ihre Benutzerkennung zu ersetzen ist:
 +<code>
 +$ sftp UserID@login.uni-freiburg.de
 +$ UserID@login.uni-freiburg.de's password: # hier Uni-Account-Passwort eingeben
 +$ sftp>
 +</code>
 +
 +Nun sehen Sie die sftp-Eingabeaufforderung. Wechseln Sie hier lokal in das Verzeichnis, in dem sich der generierte Public Key befindet:
 +<code>
 +sftp> lcd /home/jannis/.ssh/
 +</code>
 +
 +Nun wechseln Sie auf dem Server in das Verzeichnis, in dem der Schlüssel abgelegt werden soll:
 +<code>
 +sftp> cd /home/UserID/.ssh # UserID wieder ersetzen
 +</code>
 +
 +Und schließlich können Sie ihn hochladen und die sftp-Sitzung schließen.
 +<note warning>Achten Sie darauf, dass Sie die Datei mit der Endung ''.pub'' hochladen, nicht die Datei ohne Endung!</note>
 +<code>
 +sftp> put uni.pub
 +Uploading uni.pub to /home/UserID/.ssh/uni.pub
 +uni.pub                                                                                                                     100%  402     0.4KB/  00:01    
 +sftp> exit
 +</code>
 +
 +===== Öffentlichen Schlüssel registrieren =====
 +
 +Sie sind fast am Ziel. Verbinden Sie sich nun per SSH mit dem Login-Server und wechseln Sie in das versteckte Verzeichnis ''/home/UserID/.ssh''. Dort müsste sich nun der Public Key ''uni.pub'' finden.
 +
 +Prüfen Sie, ob im gleichen Verzeichnis die Datei ''authorized_keys'' existiert. Normalerweise sollte das nicht der Fall sein.
 +
 +Wenn authorized_keys **existiert**, kopieren Sie den Public Key in die Datei hinein:
 +<code>
 +$ cat uni.pub >> authorized_keys # wichtig ist das ">>" statt ">"!
 +</code>
 +
 +Wenn authorized_keys **nicht existiert**, benennen Sie ''uni.pub'' einfach in ''authorized_keys'' um:
 +<code>
 +$ mv uni.pub authorized_keys
 +</code>
 +
 +<note important>Passen Sie nun unbedingt die Rechte für ''authorized_keys'' an und löschen Sie die Schlüsseldatei.</note>
 +<code>
 +$ chmod 660 authorized_keys
 +$ rm uni.pub
 +</code>
 +
 +===== Automatisierten Login verwenden =====
 +
 +Nun können Sie sich automatisch auf Ihrem Uni-Server einloggen. Das Kommando hierzu lautet (mit auf Ihr System angepasstem Pfad zum Schlüssel):
 +<code>
 +$ ssh -i /home/jannis/.ssh/uni UserID@login.uni-freiburg.de
 +</code>
 +
 +Dieses können Sie nun in beliebigen Skripten nutzen um beispielsweise Backups zu erstellen oder Prozesse zu starten.
 +
 +{{tag>server sicherheit login linux netz}}
QR-Code
QR-Code SSH mit Public Key-Authentifizierung (erstellt für aktuelle Seite)