Die Secure Shell im praktischen Einsatz

Aus LinuxUser 11/2017

Die Secure Shell im praktischen Einsatz

© Mamapo, 123RF

Sicherer Transfer

Die Secure Shell bietet alles, was Sie für den sicheren Shell-Zugriff und verschlüsselte Datenübertragungen benötigen.

Die Secure Shell Ssh gilt heute als Standard für Shell-Sitzungen auf entfernten Rechnern. Sie verschlüsselt die Verbindung zum entfernten System, als Identifikation dient in der Regel ein mit Kennwort versehener Schlüssel.

Ssh bietet aber mehr als nur den sicheren Zugriff aus der Ferne: Bei Bedarf transferieren Sie damit Daten oder starten GUI-Programme von anderen unixoiden Systemen. Für den Zugriff auf Microsoft-Betriebssysteme benötigen Sie ein Programm wie Putty. Bei vielen Befehlen rund um Ssh dürfen Sie einen vom Standard 22 abweichenden Port angeben. Die wichtigsten Optionen für den Ssh-Befehl fasst die Tabelle “Ssh: Optionen” zusammen.

Syntax

Hinweis

-2

nur Protokollversion 2

-4

nur IPv4-Adressen

-6

nur IPv6-Adressen

-b IP

IP-Adresse verwenden

-C

Kompression benutzen

-F Datei

abweichende Konfigurationsdatei

-i Datei

Angabe der Private-Key-Datei

-p Port

abweichende Portnummer

-v

Ausgabe aller Meldungen

-t

für interaktive Menüs

-W Rechner:Port

Weiterleiten der Standardein- und -ausgabe vom lokalen System zum entfernten System

-X

Display umleiten im geschützten Netz

-Y

Display geschützt umleiten

-N

für Tunnelzwecke, kein Kommando

Arbeit mit Schlüsseln

Selbst wenn Sie keine Schlüssel erzeugen, legt der SSH-Client jene der Gegenstelle im Ordner .ssh im Home-Verzeichnis ab. In diesem Verzeichnis finden Sie außerdem verschiedene Dateien, die für den Betrieb der Software nötig sind (siehe Tabelle “SSH-Client”). Möchten Sie Ihren SSH-Server gegen den Versuch eines Einbruchs robuster machen, bearbeiten Sie dazu dessen Konfigurationsdatei sshd.config. Dort setzen Sie die relevanten Einträge aus der Tabelle “Mehr Sicherheit” entsprechend Ihrer Vorstellungen.

Dateiname

Inhalt

config

benutzerdefinierte Einstellungen, überschreibt die systemweiten Settings

known_hosts

Liste der Systeme, mit denen bereits eine SSH-Verbindung bestand und deren Schlüssel Sie akzeptiert haben

authorized_keys

öffentliche Schlüssel (wenn der Rechner als Server fungiert)

id_rsa

privater Schlüssel

id_rsa.pub

öffentlicher Schlüssel

Schlüssel

Eintrag/Hinweis

PermitRootLogin no

Root-Zugang unterbinden

AllowGroups Gruppe

nur Benutzer in Gruppe dürfen sich anmelden

AllowUsers User

nur Benutzer User darf sich anmelden

PasswordAuthentication no

unterbindet Anmelden via Passwort

ChallengeResponseAuthentication no

nur über die Schlüssel anmelden

PermitEmptyPasswords no

keine leeren Kennwörter erlauben

Port Nummer

abweichenden Port festlegen (Standard: 22)

ListenAddress IP

Netzwerkschnittstelle benutzen, je IP-Adresse eine Zeile

MaxSessions

auf kritischen Systemen so niedrig wie möglich (1)

MaxStartups

auf kritischen Systemen so niedrig wie möglich (1)

Schlüssel ohne Kennwort

Das Anmelden ausschließlich per Schlüssel ohne Kennwort stellt die technisch simpelste Methode zum automatischen Übertragen von Daten und für komfortable Logins dar. Sie sollten sie allerdings nur innerhalb geschützter Netze verwenden, keinesfalls über das Internet (außer Sie arbeiten via VPN oder über einen SSH-Tunnel).

Zum Anlegen eines Schlüssels nutzen Sie den Shell-Befehl Ssh-keygen (Abbildung 1). Dabei geben Sie zusätzlich mit der Option -t Typ (hier: RSA) den Typ des Schlüssels und mittels -b Bits (hier: 4096) die Schlüssellänge an. Je höher die Schlüssellänge, umso schwerer fällt es einem Angreifer, die Kommunikation zu knacken. Beim Prompt für das Passwort drücken Sie die Eingabetaste.

Abbildung 1: Ein Schlüssel ohne Passwort erleichtert zwar den automatisierten Transfer von Daten, birgt aber Risiken in Bezug auf die Sicherheit.

Abbildung 1: Ein Schlüssel ohne Passwort erleichtert zwar den automatisierten Transfer von Daten, birgt aber Risiken in Bezug auf die Sicherheit.

Im Verzeichnis ~/.ssh/ befinden sich daraufhin die beiden Dateien id_rsa und id_rsa.pub. Die erste enthält den privaten Teil des Schlüssels; schützen Sie diesen unbedingt vor dem Zugriff Dritter. Die zweite enthält den öffentlichen Schlüssel, den Sie bei Bedarf auf andere Rechner übertragen. Prüfen Sie in jedem Fall die Attribute der Schlüsseldateien.

Nur Sie selbst dürfen die Rechte zum Lesen und Schreiben besitzen, die Gruppe und alle anderen sollten keinerlei Rechte haben. Gegebenenfalls ändern Sie das mithilfe des Befehls chmod 600 ~/.ssh/*. Für öffentlich zugängliche Server schützen Sie das Kennwort im privaten Teil des Schlüssels, indem Sie diesen mittels des Openssl-Befehls in ein anderes Format umwandeln, etwa PKCS#8. Näheres dazu entnehmen Sie der Manpage des Tools.

Möchten Sie einen Schlüssel mit Kennwort erzeugen, funktioniert das auf demselben Weg wie ohne Vergabe eines Passworts. An der entsprechenden Stelle geben Sie dann die gewünschte Zeichenkette ein, statt die Abfrage mit der Eingabetaste zu überspringen. Damit erhalten Sie einen schon guten Schutz. Selbst wenn einem Eindringling Ihr privater Schlüssel in die Hände fällt, kann er sich dann ohne Passwort trotzdem nicht am entfernten System anmelden.

Öffentlicher Schlüssel

Um den öffentlichen Teil des Schlüssels auf das Zielsystem zu übertragen, haben Sie mehrere Möglichkeiten. Steht der Befehl Ssh-copy-id bereit, verwenden Sie den Aufruf in der folgenden Form:

$ ssh-copy-id User@Host

Abbildung 2 zeigt den Ablauf. Den Rechner identifizieren Sie dabei wahlweise über den Namen oder die IP-Adresse. Nachdem im Beispiel zum ersten Mal eine Verbindung zustande kam, sehen Sie die Frage, ob Sie den Schlüssel der Gegenseite akzeptieren möchten.

Abbildung 2: Mit dem Befehl <code>ssh-copy-id</code> &uuml;bertragen Sie bei Bedarf einen Schl&uuml;ssel auf das Zielsystem.

Abbildung 2: Mit dem Befehl ssh-copy-id übertragen Sie bei Bedarf einen Schlüssel auf das Zielsystem.

Eine weitere Möglichkeit besteht darin, per SFTP den öffentlichen Schlüssel auf das Zielsystem zu übertragen und mittels cat id_rsa.pub >> .ssh/authorized_keys an die Datei .ssh/authorized_keys anzuhängen. Beachten Sie dabei, unbedingt das Zeichen für die Standardausgabe doppelt zu verwenden, sonst überschreiben Sie die Datei.

Haben Sie einen Schlüssel geändert, entfernen Sie den nicht mehr zutreffenden Eintrag aus der Datei known_hosts mit dem Kommando ssh-keygen -R Rechner in einem Terminal (Abbildung 3).

Abbildung 3: &Auml;ndern Sie einen Schl&uuml;ssel, entfernen Sie den alten f&uuml;r den entsprechenden Rechner mit einem einfachen Befehl.

Abbildung 3: Ändern Sie einen Schlüssel, entfernen Sie den alten für den entsprechenden Rechner mit einem einfachen Befehl.

Verbindungen speichern

Für immer wieder benötigte Verbindungen legen Sie in der Datei .ssh/config bei Bedarf Aliase für den vereinfachten Aufruf an. Listing 1 zeigt ein Beispiel dazu für den Benutzer hz auf einer Maschine im lokalen Netz.

Listing 1

Host artikel
  HostName 192.168.0.82
  User hz
  CheckHostIP no

In Abbildung 4 sehen Sie das Anmelden am lokalen System und anschließend den Zugriff per Alias und sowie Schlüssel ohne Kennwort auf ein anderes Zielsystem. Mit exit oder [Strg]+[D] melden Sie sich vom entfernten Rechner wieder ab.

Abbildung 4: Aliase f&uuml;r die Verbindung erleichtern das Anmelden am entfernten Rechner, wenn dort ein anderes Benutzerkonto im Einsatz ist.

Abbildung 4: Aliase für die Verbindung erleichtern das Anmelden am entfernten Rechner, wenn dort ein anderes Benutzerkonto im Einsatz ist.

Sie haben die Möglichkeit, eine Sitzung als vollwertige Shell zu nutzen, oder Sie setzen nur ein Kommando ab. Nach dessen Ausführung beendet sich die Verbindung automatisch (Abbildung 5).

Abbildung 5: Brauchen Sie keine komplette Session, f&uuml;hren Sie mittels Ssh nur ein einzelnes Kommando auf dem Zielsystem aus.

Abbildung 5: Brauchen Sie keine komplette Session, führen Sie mittels Ssh nur ein einzelnes Kommando auf dem Zielsystem aus.

Display umleiten

Arbeiten Sie an einem Linux-PC, steht Ihnen die Möglichkeit offen, mittels Ssh Programme mit grafischer Oberfläche am entfernten Rechner zu starten und deren Ausgabe umzuleiten. Dazu nutzen Sie die Ssh-Option -Y. Bei langsamen Netzwerkverbindungen, etwa über das Internet, schalten Sie zudem mit -C die Datenkompression ein, um Latenzen zu verringern.

Auch hier funktionieren Aliase und der Einsatz von Schlüsseln beim Anmelden. Im Beispiel aus Abbildung 6 startet der Texteditor Gedit auf dem entfernten System. Damit Sie das Terminal nicht mit dem Programm blockieren, starten Sie es durch Anhängen eines Kaufmannsund-Zeichens (“Ampersand”) im Hintergrund. Das gezeigte Umleiten der Standardausgabe für Fehler nach /dev/null unterdrückt diverse Debug-Meldungen am Terminal.

Abbildung 6: Ssh bietet eine M&ouml;glichkeit, GUI-Programm auf dem entfernten System zu starten und die Ausgabe &uuml;ber eine sichere Leitung auf den eigenen Bildschirm umzuleiten.

Abbildung 6: Ssh bietet eine Möglichkeit, GUI-Programm auf dem entfernten System zu starten und die Ausgabe über eine sichere Leitung auf den eigenen Bildschirm umzuleiten.

Daten übertragen

Zum Übertragen von Daten integrieren Sie Ssh bei Bedarf in eine Pipe. Im Zusammenspiel mit Tar kopieren Sie so komplette Verzeichnisbäume über das Netzwerk (Listing 2). Hier beschleunigt unter Umständen eine Komprimierung (-C) den Vorgang. So gehen Sie auch bei anderen Befehlen vor, wie etwa bei Dd. Wie es in der Praxis mit Tar funktioniert, zeigt Abbildung 7.

Listing 2

# Dateien hochladen
$ tar czvf - Ordner | ssh User@Host 'cd Ordner && tar xzpvf -'
# Dateien herunterladen
$ ssh User@Host 'cd Pfad && tar czfv - Ordner' | tar xzfv -

Abbildung 7: In Kombination mit einem Tool wie Tar kopieren Sie einen Verzeichnisbaum auf einen entfernten Rechner oder von diesem auf den lokalen.

Abbildung 7: In Kombination mit einem Tool wie Tar kopieren Sie einen Verzeichnisbaum auf einen entfernten Rechner oder von diesem auf den lokalen.

Mit dem Befehl Scp steht ein verschlüsselndes, mit dem normalen Cp verwandtes Kommando bereit, das sich an den Remote-Copy-Befehl rcp von BSD anlehnt. Allerdings stellt Scp zusätzlich SSH-spezifische Optionen bereit (siehe Tabelle “Scp: Optionen”).

Syntax

Hinweis

-C

Kompression benutzen

-F Datei

abweichende Konfigurationsdatei

-i Datei

Datei mit privatem Schlüssel

-l Wert

Bandbreite drosseln (Angabe in kbit/s)

-o Option

SSH-Optionen

-P Port

abweichender Port

-p

Dateiattribute übertragen

-q

Meldungen einschränken

-r

rekursiv kopieren, Symlinks folgen

-v

ausführliche Meldungen

Grundsätzlich übergeben Sie dem Kommando lediglich eine Quelle sowie ein Ziel, wobei beide auf dem entfernten System liegen dürfen. Verwenden Sie für die Pfadangabe auf dem entfernten Rechner nach dem Doppelpunkt einen Schrägstrich, signalisiert das einen absoluten Pfad; anderenfalls handelt es sich um eine Angabe relativ zum Home-Verzeichnis des Benutzers auf dem entsprechenden System.

Abbildung 8 zeigt einige Beispiele zum Übertragen von Daten: Das erste veranschaulicht, wie Sie eine lokal vorhandene Datei auf das entfernte System übertragen; es folgt das umgekehrte Vorgehen. Die dritte Aufgabe besteht darin, Daten von einem entfernten System auf einen zweiten Remote-Rechner zu kopieren.

Abbildung 8: Mit dem Befehl Scp &uuml;bertragen Sie Dateien zwischen zwei Rechnern, bei Bedarf sogar zwischen zwei Remote-Systemen.

Abbildung 8: Mit dem Befehl Scp übertragen Sie Dateien zwischen zwei Rechnern, bei Bedarf sogar zwischen zwei Remote-Systemen.

Im Beispiel fragt die Software nur einmal das Kennwort ab, denn der Benutzer zh@localhost arbeitet mit einem Schlüssel ohne Kennwort, den er bei hz@192.168.0.82 hinterlegt hat. Normalerweise gibt es an dieser Stelle zwei Abfragen. Die letzte Aktion in Abbildung 8 zeigt das Übertragen eines Verzeichnisses auf ein anderes System.

Fazit

Die Secure Shell bietet von Haus bereits zahlreiche Möglichkeiten für Fernsitzungen und das Transferieren von Daten. Kombinieren Sie diese Fähigkeiten mit bekannten Shell-Befehlen, erzielen Sie einen hohen Komfort. Zudem bietet die SSH-Verschlüsselung Schutz vor Lauschern und Angreifern. 

Der Autor

Harald Zisler beschäftigt sich seit den frühen 1990er-Jahren mit FreeBSD und Linux. Zu Technik- und EDV-Themen verfasst er Zeitschriftenbeiträge und Bücher. Aktuell ist die vierte Auflage seines Kompendiums “Computer-Netzwerke” beim Rheinwerk Verlag erschienen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 11/2017 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben