Spaces. Smartes Cloud Hosting für anspruchsvolle Webprojekte. Loslegen und Spaces testen. Von Mittwald.
Rene Schmidt 12. Dezember 2005

SSH: Die Arbeit mit der Secure Shell

Kein Beitragsbild

Das Secure-Shell-Protokoll ermöglicht eine sichere Verbindung und Datenübertragung zwischen zwei Rechnern. Unerlässlich für die Installation von Software direkt auf dem Server.

Am Anfang gab der Unix-Gott seinen Anwendern das Telnet-Protokoll, damit sie von einem Rechner aus auf einen anderen zugreifen konnten. Noch heute ermöglichen einige Server-Anbieter ihren Kunden Telnet zur Administration von Unix- oder Linux-Servern – eine schlechte Entscheidung. Nach einem leeren Root-Passwort ist Telnet wohl das Unsicherste, was man einem Server antun kann.

Secure Shell
Das Secure-Shell-Protokoll (ab Version 2) ermöglicht sichere Übertragungsverbindungen zwischen zwei Rechnern. Die Verbindung muss nicht direkt von Rechner zu Rechner bestehen, sondern kann auch über völlig fremde und damit potenziell unsichere Rechner führen. Häufig wird SSH eingesetzt, um andere Rechner per Shell zu steuern oder um Dateien zu übertragen (Secure Copy, SCP). Die Anwendungsmöglichkeiten sind vielfältig, zum Beispiel können auch MySQL-Verbindungen über SSH getunnelt werden, wenn der Datenbankserver nicht mit fremden Rechnern „reden“ darf.

Dateien per SCP zu übertragen hat den Vorteil, dass sie nicht unverschlüsselt übertagen werden und die Verbindung somit nur schwer oder gar nicht abgehört werden kann. Das ist wichtig, weil zahlreiche Web-Applikationen wie Wikis oder Foren Datenbank-Zugangsinformationen im Klartext speichern. Würden diese Daten unverschlüsselt übertragen, zum Beispiel um die Web-Applikation zu installieren, hätten Angreifer leichtes Spiel, den Server anzugreifen.

Den größten Vorteil kann SSH beim Absichern interaktiver Shell-Sitzungen ausspielen. Web-Anwendungen lassen sich leichter und schneller installieren – einige Grundkenntnisse in der Bedienung von Unix-Shells vorausgesetzt.

Beispiel Web-Applikation-Installation: der geneigte Installateur muss das gepackte Archiv der Web-Applikation nicht erst auf seinen Rechner herunterladen, entpacken, konfigurieren und dann zig oder hunderte Dateien mühsam einzeln übertragen lassen. Stattdessen loggt er sich auf dem Webserver per SSH ein (wenn ein solcher Zugang vorhanden und konfiguriert ist), lädt sich das Archiv direkt vom Anbieter auf den Webserver, entpackt und konfiguriert es vor Ort. Wer regelmäßig Web-Anwendungen installiert oder selbst welche entwickelt, wird diese Vorgehensweise sehr schnell zu schätzen wissen.

Warum keine grafische Fernsteuerung?
Die Programme VNC und Microsofts Remote Desktop ermöglichen die grafische Fernsteuerung entfernter Rechner. Wozu also Administration per Text-Shell? Unix- und Linux-Server haben anders als Unix- und Linux-Desktops keine grafische Benutzeroberfläche, weil sie unnötig Ressourcen belegt und extra gesichert werden muss. Aus Kosten- und Sicherheitsgründen ist daher ein grafischer Betriebssystem-Aufsatz in der Regel nicht verfügbar.

SSH-Verbindung von Windows zu Linux
SSH gibt es mittlerweile natürlich auch für Windows-Systeme. Die Programme WinSCP für die sichere Dateiübertragung und PuTTY als SSH-Client für die interaktive Fernsteuerung per Shell sind beliebt. Ein SSH-Benutzerkonto auf einem Unix- oder Linux-Server sollte natürlich vorhanden sein.

1. Die einfache Art unter Windows
Laden Sie sich WinSCP und PuTTY herunter und installieren Sie beide Programme.

Rufen Sie PuTTY auf und geben Sie bei „Host Name (or IP address)“ den Namen des Benutzerkontos und die Adresse des Host-Servers in dieser Form an: benutzername@host. Klicken Sie auf „Open“. Sie werden dann im PuTTY-Eingabefenster aufgefordert, das Passwort Ihres SSH-Kontos anzugeben. Schließen Sie die Eingabe mit Return ab. Sie sollten nun auf dem Server angemeldet sein. Die Shell ist ein mächtiges Werkzeug – im konstruktiven wie im destruktiven Sinn. Wenn Sie keine Shell-Kenntnisse haben, sollten Sie die Sitzung zunächst mit „exit“ und „Return“ beenden.

Screenshot
Für manche archaisch, für andere die effizienteste Art der Computerbedienung

Anmelden mit WinSCP ist ebenso einfach. Starten Sie WinSCP und geben Sie im Anmeldefenster bei „Rechnername“ die Host-Adresse des Servers, sowie ini den dafür vorgesehenen Feldern Benutzername und Kennwort ein. Klicken Sie auf „Anmelden“. Danach sollte dann die Dateiliste aus dem Heimatverzeichnis des SSH-Benutzerkontos erscheinen. Schließen Sie WinSCP, um die Sitzung zu beenden.

Screenshot
Anmelden mit WinSCP

Das alles funktioniert gut und ist komfortabel genug, wenn Sie nicht mehrere Server per SSH administrieren wollen.Wenn Sie mehrere Sitzungen am Tag aufbauen oder mehrere Server administrieren wollen, kann das Zugangsdaten-Jonglieren bald mühselig werden. Auch dafür gibt es eine Lösung. Neben der Passworteingabe gibt es noch eine andere Möglichkeit, sich bei einem SSH-Server anzumelden. Beim Public-Key-Verfahren lässt der Admin ein Schlüsselpaar erzeugen, das aus einem geheimen und einem öffentlichen Teil besteht. Der öffentliche Schlüssel wird auf allen Rechnern hinterlegt, auf die sich der Admin komfortabel anmelden möchte.

2. Die komfortablere Art unter Windows
Starten Sie über das Menü „Start/Programme/WinSCP3/Schlüssel Werkzeuge“ das Programm PuTTYgen und klicken Sie auf „Generate“. Bewegen Sie Maus solange, bis der Balken einmal komplett ist. Computer können nur Pseudo-Zufallszahlen erzeugen. Die unvorhersehbaren Mausbewegungen helfen dem Rechner, bessere Zufallsdaten zu produzieren. Sobald das Programm die Schlüssel erzeugt hat, geben Sie bei „Passphrase“ ein ausreichend sicheres Passwort ein und bestätigen Sie es. Mit diesem Passwort wird der private Schlüssel vor Missbrauch geschützt. Kopieren Sie den Inhalt des Felds „Public key for pasting…“ in einen Text-Editor wie Notepad und speichern Sie die Datei als „authorized_keys.txt“. Speichern Sie danach mit „Save public key“ und „Save private key“ beide Schlüssel.

Screenshot
Schlüsselerzeugung mit PuTTYgen

Starten Sie zunächst WinSCP und melden Sie sich wie gewohnt auf dem Server an. Das Heimatverzeichnis des Benutzerkontos erscheint. In der Standardeinstellung zeigt WinSCP auch Dateien und Verzeichnisse an, die mit einem vorangestellten Punkt eigentlich versteckt sind. Wenn Sie kein Verzeichnis namens „.ssh“ entdecken, legen Sie es mit der Taste „F7“ an. Wechseln Sie in dieses Verzeichnis in jedem Fall. Wenn Sie keine Datei namens „authorized_keys“ sehen, kopieren Sie die Datei „authorized_keys.txt“ von Ihrem Rechner auf den Server und ändern Sie dort den Namen der Datei in „authorized_keys“ (ohne „.txt“). Falls dort bereits eine solche Datei existiert, benutzen Sie einen Text-Editor und hängen den Inhalt von „authorized_keys.txt“ der Datei „authorized_keys“ einfach unten an. Beenden Sie das Programm.

Starten Sie im Menü „Start/Programme/WinSCP3/Schlüssel Werkzeuge“ den Schlüssel-Agenten Pageant. Im System-Tray erscheint dessen Symbol. Klicken Sie mit der rechten Maustaste auf das Symbol und wählen Sie „Add key“, um dem Agenten Ihren neu erzeugten Schlüssel zu übergeben. Geben Sie das Schlüssel-Kennwort ein. Der Schlüssel ist nun aktiv und kann für WinSCP- und PuTTY-Sitzungen verwendet werden – es muss bis zum nächsten Neustart des Agenten kein Benutzer-Kennwort und auch kein Schlüssel-Kennwort eingegen werden.

In WinSCP müssen Sie fortan für einen vorbereiteten Rechner nur noch die Host-Adresse und den Benutzernamen angeben – fürs Anmelden ist der Agent zuständig. In PuTTY geben Sie als Hostadresse wieder „benutzername@host“ an – das genügt.

Shell-Grundkenntnisse
Der Name „Shell“ macht es deutlich: die Shell umgibt den schützenswerten (Betriebssytem-) Kern. Sie ist eine alternative Art der Interaktion mit einem Betriebsystem. Diese Art muss man nicht lieben – es gibt allerdings viele erfahrene Nutzer, die diese Art der Bedienung grafischen Oberflächen vorziehen oder zumindest gerne ntuzen. Die Vorteile einer Shell bleiben Einsteigern am Anfang meist verborgen. Grundkenntnisse in der Bedienung der am weitesten verbreiteten Shell „Bash“ bietet das Projekt SelfLinux.

Und was ist mit Unix/Linux?
Unix-Nutzer starten einfach ein Terminal-Programm und können sich mit „ssh benutzername@host“ auf anderen Rechnern einloggen. Der SSH-Client ist normalerweise auf jedem Unix/Linux-Rechner installiert. Anmelden über das Public-Key-Verfahren ist noch einfacher als unter Windows, weil die Nutzer sich beim obligatorischen Betriebssystem-Login mit dem mit dem SSH-Passwort anmelden können. Der SSH-Schlüssel-Agent kann also völlig transparent genutzt werden.

Wie das geht, wird in zwei Artikeln des Autors auf der Linux-Website Pro-Linux beschrieben: Elegante SSH-Authentifizierung über PAM und Elegante SSH-Authentifizierung Reloaded

Die Links:

Erstveröffentlichung 12.12.2005

Schreibe einen Kommentar

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