News

Nächste planmäßige Wartung:

Mittwoch, 7. Oktober 2020


Fachbereich Mathematik und Informatik, IT-Dienst

Remote-Login per SSH (Secure Shell)

IT-Dienst::ServicesSSHAccess - Zusammenfassung

  • Fast alle Linux-/Unix-Rechner des Fachbereichs sind über SSH erreichbar. Diese Seite stellt Anleitungen für den Umgang mit diesem Dienst zur Verfügung.

  • Der Login per SSH am FB Mathematik und Informatik von außerhalb des FU-Netzes ist seit April 2017 ausschließlich mittels Public-Key-Authentifizierung möglich, nicht mehr per Passwort. Einzige Ausnahme bis auf weiteres: Die beiden Linux-Terminalserver/Login-Server andorra (telnet.imp.fu-berlin.de) und lounge (login.imp.fu-berlin.de) sind auch noch mit passwort-basiertem SSH-Login zugänglich.

  • NEW 2019-04-04: Der SSH-Zugriff auf Rechner im Experimentalnetz (160.45.38.*) ist jetzt nur noch aus dem FU-Campusnetz freigegeben. Der SSH-Zugriff auf Rechner im Mac-Netz (160.45.43.*) ist jetzt nur noch aus dem Fachbereichsnetz erlaubt. (Die bisherige generelle Freigabe für SSH-Zugriffe aus der Welt auf diese beiden Netze wurde aufgehoben .)

  • Von und zu Fachbereichs-Rechnern, die SSH-Zugriff anbieten, können Dateien mit verschlüsseltem Dateitransfer ("Secure Copy", scp, oder "Secure Filte Transfer Program", sftp) als Ersatz für das unverschlüsselte FTP übertragen werden.

IT-Dienst::ServicesSSHAccess - SSH-Logins per Public-/Private-Key ermöglichen

SSH unterstützt neben der klassischen Authentifizierung mittels Benutzername und Kennwort auch andere Authentifizierungsverfahren. Wir beschreiben hier die Einrichtung und Verwendung der Authentifizierung, die auf einem Schlüsselpaar basiert (sog. "Public-Key-Verfahren") basiert. Um diesen passwortlosen Login per SSH (Authentisierung mittels Public-/Private-Key-Verfahren statt mit Passwort) nutzen zu können, sind vorab einmalig die folgenden Schritte erforderlich, die nachstehend im Detail beschrieben werden. (Wir gehen dabei davon aus, dass NutzerInnen vom SSH mit der Nutzung der Kommandozeile unter Unix/Linux einigermaßen vertraut sind. - Wer das nicht ist, wird wohl auch nicht SSH benutzen. wink

  1. Public-/Private-Schlüsselpaar erzeugen
  2. Public-Key im (Netzwerk-)HOME bzw. auf dem Server als "authorized key" hinterlegen

1. Public-/Private-Schlüsselpaar erzeugen

Zunächst muss ein Public-/Private-Schlüsselpaar für die Nutzung mit SSH erzeugt werden. Dies geschieht durch den Aufruf des Kommandos
ssh-keygen -b 4096

Mit diesem Aufruf wird ein 4096 Bit langes Schlüsselpaar (Public-Key und Private-Key) erzeugt. SSH-Schlüssel sollten (Stand 04/2017) nicht länger als 4096 Bit gewählt werden, da manche SSH-Server keine längeren Schlüssel unterstützen. Der Output des Aufrufes sieht dann etwas so aus (Username im Beispiel: 'camphaus'):
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mi/camphaus/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/mi/camphaus/.ssh/id_rsa.
Your public key has been saved in /home/mi/camphaus/.ssh/id_rsa.pub.
..

Im Verlauf der Erzeugung wird man zuerst gefragt, wo der Schlüssel gespeichert werden soll (durch Betätigen von RETURN übernimmt man den vorgeschlagenen Pfad). Anschließend muss man eine sog. passphrase festlegen und zur Kontrolle noch ein zweites Mal eingeben. Das ist ein (möglichst langes/kompliziertes/nicht zu erratendes) Passwort, mit dem der Private-Key verschlüsselt und so vor unbefugter Verwendung durch Dritte geschützt wird. Diesen "Pass-Satz" muss man eingeben, wenn man auf den SSH-Private-Key zugreifen will, um sich z.B. per SSH einzuloggen. (Es sei denn, man nutzt ssh-agent, siehe weiter unten.)

Der Public-Key landet in unserem Beispiel, wenn man den Pfad nicht individuell ändert, in der Datei ~/.ssh/id_rsa.pub, der Private-Key in der Datei ~/.ssh/id_rsa

ALERT! Wichtig: Aus Sicherheitsgründen sind Private-Keys grundsätzlich mit einer Passphrase (einem langen Passwort/einem Passwort-"Satz", engl. phrase) zu verschlüsseln! Dadurch liegt der private Schlüssel nicht im Klartext vor, sondern ist selbst verschlüsselt. Das hat folgenden Vorteil: Sollte die Datei mit dem privaten Schlüssel einem Angreifer in die Hände fallen, muss der Angreifer, um sich mit dem Schlüssel auf einem Rechner einloggen zu können, noch die Passphrase des Schlüssels herausfinden. Bei einem Private-Key, der im Klartext vorliegt, könnte ein Angreifer dagegen mit diesem gestohlenen Schlüssel direkt auf andere Rechner zugreifen.

ALERT! Fallstricke:
  • Rechte für die authorized_keys -Datei richtig gesetzt? (Die Datei darf für die Gruppe oder für Dritte nicht schreibbar sein!) Ggf. korrigieren mittels
chmod go-w ~/.ssh/authorized_keys

  • Rechte des Ordners ~/.ssh richtig? - Das Verzeichnis darf keine Lese- oder Schreibberechtigung für 'group' und 'others' haben. Um dies gegebenenfalls zu korrigieren, den folgenden Befehl ausführen:
chmod go-rwx ~/.ssh

2. Öffentlichen Schlüssel als "authorized key" im Netzwerk-HOME hinterlegen

Damit der SSH-Login mittels des Public-Key-Verfahrens (unter Benutzung des eigenen privaten Schlüssels) möglich ist, muss der zum Schlüsselpaar gehörende öffentlichen Schlüssel im eigenen Home-Verzeichnis im Unterordner ".ssh" in der Datei "authorized_keys" hinterlegt werden:

  • Auf vielen Linux-Versionen steht dafür das Kommando ssh-copy-id zur Verfügung

Beispiel für den User 'camphaus', wir benutzen als Zielmaschine/Server den Login-Server 'andorra', da der weiterhin für alle Statusgruppen des Fachbereichs gut per SSH erreichbar ist und von dort die Netzwerk-Homes aller Nutzerinnen und Nutzer erreichbar sind:
ssh-copy-id -i camphaus@andorra.imp.fu-berlin.de
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
camphaus@andorra.imp.fu-berlin.de's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'andorra.imp.fu-berlin.de'"
and check to make sure that only the key(s) you wanted were added.

  • Ansonsten (wenn es auf dem Rechner, auf dem man sein SSH-Schlüsselpaar erzeugt hat, kein ssh-copy-id gibt): Händisches Übertragung des SSH-Public-Keys und Ablegen in der Datei der authorized_keys durch Absetzen des Kommandos (im nachstehenden Beispiel wieder Username 'camphaus' und Login-Server 'andorra' als Ziel/Server):
cat ~/.ssh/*.pub | ssh camphaus@andorra.imp.fu-berlin.de 'umask 077; cat >> ~/.ssh/authorized_keys'

IT-Dienst::ServicesSSHAccess - SSH-Login per Public-/Private-Key ausführen

  • Voraussetzungen:
    • Auf dem Rechner, von dem aus ich mich per SSH zu einem Server verbinden will, muss ein SSH-Client für mich verfügbar sein
    • Auf dem Rechner, von dem aus ich mich per SSH zu einem Server verbinden will, muss mein SSH-Private-Key vorliegen

Beim Aufruf eines SSH-Logins will der Server, zu dem ich mich verbinden will, den Beweis, dass ich zu dem (oder einem der) dort in meiner "authorized_keys" hinterlegten Public-Key über den korrespondierenden Private-Key verfüge. Der lokale SSH-Client verlangt daher nach der Passphrase, um den lokal gespeicherten, mit der Passphrase verschlüsselten Private-Key benutzen zu können. "Passt" der Private-Key zum auf dem Server hinterlegten "authorized_key", gestattet der Server den Zugriff.

Beispiel-Aufruf: Login als Benutzer 'camphaus' von einem privaten Rechner aus auf dem Linux-Pool-Rechner 'peking':
ssh camphaus@peking.imp.fu-berlin.de
Enter passphrase for key '/home/mi/camphaus/.ssh/id_rsa': 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Apr  5 15:22:11 2017 from 160.45.113.58
camphaus@peking:~$ 

IT-Dienst::ServicesSSHAccess - Wo kann ich Client-Software für Secure Shell bzw. Secure Copy finden?

Linux

Die Kommandos ssh (Secure Shell) sowie scp (Secure Copy als Ersatz für ftp zum Übertragen von Daten) sind in der Regel in jeder Linux-Distribution enthalten

Windows

Mit Windows kommt keine SSH-Implementierung mit. Wir empfehlen als Secure-Shell die Freeware "Putty":
https://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

macOS

Die Kommandos ssh (Secure Shell) sowie scp (Secure Copy als Ersatz für ftp zum Übertragen von Daten) können Sie unter macOS durch das Dienstprogramm Terminal.app (/Programme/Dienstprogramme/Terminal.app) nutzen, das auf jedem Mac vorhanden ist.

Umgang mit dem Schlüsselpaar für Public-Key-Authentifizierung

Kompromittierter Private-Key

Ist ein privater Schlüssel kompromittiert, d.h. möglicherweise in unbefugte Hände gelangt, muss der zugehörige öffentliche Schlüssel umgehend aus der "authorized_keys"-Datei entfernt werden. Dazu die Datei entsprechend mit einem Editor Ihrer Wahl bearbeiten. (Oder Sie verständigen den IT-Dienst.)

Vergessene Passphrase

Eine vergessene Passphrase lässt sich nicht zurücksetzen/knacken/ändern. Der Zugriff auf einen Private-Key, der mit einer vergessenen Passphrase geschützt ist, ist nicht mehr möglich. Es muss dann ein neues SSH-Schlüsselpaar erzeugt und konfiguriert werden.

Ändern der Passphrase

Ist die Passphrase zu einem SSH-Private-Key bekannt und der entsprechende Key zugänglich, lässt sich die Passphrase mittels des folgenden Aufrufes ändern:

ssh-keygen -p

Der Aufruf fragt nach der Datei, in der der Private-Key gespeichert ist, nach der alten und der stattdessen neu zu setzenden Passphrase, und ändert die Passphrase des betreffenden Schlüssels entsprechend.

IT-Dienst::ServicesSSHAccess - Weiterführende Infos

Liste/Quelle für Hostkeys von im Fachbereichsnetz bekannten SSH-Servern

Die SSH-Hostkeys der zentral betreuten Linux-Rechner, die im Fachbereichsnetz per SSH erreichbar sind, können auf jedem der zentral betreuten Linux-Rechner im Fachbereich in der Datei /etc/ssh/ssh_known_hosts eingesehen werden.

ssh-agent

Damit man die Passphrase nicht bei jedem SSH-Login erneut eingeben muss, kann man einen ssh-agent starten. Dieser Agent fragt einmalig nach seinem Start die Passphrase ab und kann dann den privaten Schlüssel freigeben, wenn auf ihn für SSH-Logins zugegriffen werden soll. Einzelheiten siehe man ssh-agent und man ssh-add .

Topic revision: r7 - 01 Jul 2020, IngmarCamphausen
 
  • Printable version of this topic (p) Printable version of this topic (p)