SSH unter MacOS (OS X)
Hier soll am Beispiel des für alle FU Angehörigen nutzbaren Servers Login.ZEDAT.FU-Berlin.DE kurz gezeigt werden, wie per SSH eine verschlüsselte Verbindung zum Fernzugriff auf einen Server aufgebaut werden kann. Mit Hilfe einer solchen Verbindung können z.B. Dateien für eine eigene Homepage, mit dem Server ausgetauscht oder direkt auf ihm editiert werden.
Wir gehen hier im Weiteren davon aus, dass auf dem Client-Rechner ein “OS X” Betriebssystem läuft, es sich also z.B. um ein MacBook handelt. Natürlich ist eine SSH Verbindung aber auch mit anderen Betriebssystemen wie Windows oder Linux möglich.
Ein Terminal bitte
Die Fernsteuerung von Unix-artigen Servern erfolgt meist über eine textbasierte Verbindung. Zum Glück ist das kein Problem, denn der Mac bringt die eine so genannte Terminal App mit.
Das Terminal lässt sich über die Suche via Spotlight (oben rechts, Mac-User wissen wie das geht) finden und starten.
Über das Terminal können lokale Programme aufgerufen werden, und zwar auch solche, die keine grafische Benutzeroberfläche mitbringen.
Schlüsselfrage
Wenn es nur darum geht, sich überhaupt einmal per SSH mit einem entfernten Rechner zu verbinden, reicht es in vielen Fällen, diesen einfach folgendermaßen anzusprechen.
ssh user@myserver.example.org
Damit würde als Benutzer “user” eine SSH Verbindung mit dem entfernten Rechner “myserver.example.org” aufgebaut. Dieser würde daraufhin vermutlich nach dem Passwort fragen und nach erfolgreicher Eingabe, die Verbindung herstellen. Die Authentifizierung mit Benutzername und Passwort ist aber total out, also kommen wir gleich zum nächsten Schritt: Wir erstellen einen so genannten SSH-Key, ein Schlüsselpaar mit privatem und öffentlichem Teil, über das wir zukünftig ganz ohne das Passwort des Benutzers auf dem entfernten Rechner eingeben zu müssen zugreifen wollen.
SSH-Key erstellen
Ein persönlicher SSH-Key ist schnell erstellt; dazu wird einfach der Befehl ssh-keygen eingetippt.
Auf die Frage, wo der Key gespeichert werden soll, kann durch Drücken der Eingabetaste geantwortet werden. Die vorgeschlagene Stelle ist genau die richtige, denn das ist der Standardort, an dem wohl alle Programme automatisch danach suchen würden.
Auf die Frage, ob der Key mit einem Passwort versehen werden soll, kann – je nach Anwendungsfall – wieder einfach durch Drücken der Eingabetaste geantwortet werden (dann bekommt der Key kein Passwort), oder es wird ein Passwort angegeben (zur Tippfehlervermeidung muss dieses, wie üblich, zweimal eingegeben werden). Im Beispiel, bei dem das Bildschirmfoto entstanden ist, wurde solch ein Passwort gesetzt. Das Setzten eines Passworts verhindert, dass der private Schlüssel “einfach so” benutzt werden kann, und bietet also eine weitere Sicherheitsstufe.
Public-Key auf dem Server übertragen
Damit der SSH-Key künftig für Verbindungen mit dem Server genutzt wird, muss der öffentliche Teil des Schlüsselpaars auf den Server übertragen und dort an der richtigen Stelle abgelegt werden. Es sind also noch 2 Schritte notwendig (und es muss dabei noch zweimal das Passwort für den entfernten Server eingetippt werden, und dann nie wieder):
- Public-Key auf den Server kopieren
- Public-Key an der richtigen Stelle ablegen
SSH Public-Key kopieren
Um den öffentlichen Schlüssel zu übertragen, kann direkt im Terminal das Befehl scp benutzt werden.
Damit wird die vorhin erzeugte Datei mit dem öffentlichen Schlüssel auf den Server kopiert. Wurde vorher noch nie eine Verbindung mit diesem Server hergestellt (wie im Beispiel), wird zunächst noch einmal nachgefragt, ob die Verbindung wirklich aufgebaut werden soll. Dabei wird der so genannte “Fingerprint” des Servers angezeigt. Der Verbindungsaufbau muss dann einmal durch die Eingabe von yes bestätigt werden.
Public-Key als zugriffsberechtigt eintragen
Hat der Kopiervorgang geklappt, liegt der öffentliche Schlüssel auf dem Server vor. Im Beispiel in der Datei “mymac.pub”. Diese muss jetzt noch an die richtige Stelle auf dem Server kopiert werden, damit der Zugang beim nächsten Mal über den SSH-Key funktioniert. Dazu ist (ein letztes Mal) eine Verbindung mit der herkömmlichen Username und Passwort-Kombination nötig.
Im Beispiel wird eine SSH Session mit dem Login-Server aufgebaut, dann wird das Verzeichnis “.ssh” erstellt und dann die vorher kopierte Datei mit dem öffentlichen Schlüssel als “authorized_keys” in dieses neue Verzeichnis kopiert.
Achtung: Das Vorgehen im Beispiel-Screenshot (per Kopierbefehl “cp”) ersetzt eine ggf. schon vorhandene “authorized_keys” Datei vollständig. Etwas sicherer wäre die folgende Vorgehensweise, bei der der neue Schlüssel dann zusätzlich angefügt würde, falls schon anderen öffentliche Schlüssel in der Datei stehen:
mkdir -p ~/.ssh cat ~/mymac.pub >> ~./.ssh/authorized_keys exit
SSH-Verbindung mit SSH-Key
Ab sofort ist es nun möglich, die SSH-Verbindung über den eigenen SSH-Key aufzubauen. Falls ein Passwort bei der Erstellung des SSH-Keys gesetzt wurde wird unter MacOS ggf. gefragt, ob der Schlüssel in der so genannten “keychain” gespeichert werden soll (dann ist während der Sitzung kein erneutes Eingeben das SSH-Key Passworts nötig).
Damit ist die Verbindung per SSH Key eingerichtet und es kann jederzeit interaktiv auf dem Server gearbeitet werden.
ssh benutzer@login.zedat.fu-berlin.de mkdir -p ~/public_html/images
Auch ein Kopieren von Daten vom Mac auf den Server (oder andersherum) ist nun jederzeit möglich, und die Authentifizierung erfolgt dabei über den eigenen SSH-Key.
scp *.png benutzer@login.zedat.fu-berlin.de:public_html/image
Statt dem Terminal können für die Kopiervorgänge natürlich auch grafische Clients (wie z.B. Cyperduck o.ä.) verwendet werden. Die genaue Bedienung hängt dabei vom jeweiligen Client ab, als Art der Verbindung sind dann meist “SCP” oder “SFTP” auszuwählen, und der lokale Speicherort des eigenen SSH-Keys muss ggf. noch explizit angegeben werden.
Leave a Reply