Sicheres Verbinden mit Linux

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Secure Shell (SSH) ist ein kryptografisches Netzwerkprotokoll, das verwendet wird, um sicher auf entfernte Server über ein unsicheres Netzwerk zuzugreifen. Als IT-Fachmann ist es eine essentielle Fähigkeit, zu verstehen, wie man sichere Verbindungen zu Linux-Servern herstellt.

In diesem Lab lernen Sie, wie Sie SSH-Schlüsselpaare generieren, Ihre Schlüssel verwalten und SSH für sichere Authentifizierung einrichten. Dieses Wissen ist grundlegend für Systemadministratoren, Entwickler und IT-Sicherheitsexperten, die sicher auf entfernte Systeme zugreifen und diese verwalten müssen.

Durch die Absolvierung dieses Labs gewinnen Sie praktische Erfahrungen mit SSH, der branchenüblichen Methode für die sichere Fernverwaltung von Linux-Servern und den sicheren Dateitransfer.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/RemoteAccessandNetworkingGroup -.-> linux/ssh("Secure Connecting") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/ls -.-> lab-271389{{"Sicheres Verbinden mit Linux"}} linux/cat -.-> lab-271389{{"Sicheres Verbinden mit Linux"}} linux/chmod -.-> lab-271389{{"Sicheres Verbinden mit Linux"}} linux/cd -.-> lab-271389{{"Sicheres Verbinden mit Linux"}} linux/mkdir -.-> lab-271389{{"Sicheres Verbinden mit Linux"}} linux/ssh -.-> lab-271389{{"Sicheres Verbinden mit Linux"}} linux/nano -.-> lab-271389{{"Sicheres Verbinden mit Linux"}} end

Grundlagen von SSH verstehen

SSH (Secure Shell) ist ein Protokoll, das eine sichere Möglichkeit bietet, auf entfernte Computer zuzugreifen. Im Gegensatz zu älteren Protokollen wie Telnet verschlüsselt SSH alle Kommunikationen zwischen Client und Server, um Ihre Daten vor Abhören zu schützen.

SSH bietet mehrere Vorteile:

  • Verschlüsselte Kommunikation
  • Starke Authentifizierungsmethoden
  • Überprüfung der Datenintegrität
  • Sichere Dateitransfer

Beginnen wir damit, zu überprüfen, ob SSH auf Ihrem System installiert ist. Öffnen Sie Ihr Terminal und führen Sie folgenden Befehl aus:

ssh -V

Sie sollten eine Ausgabe ähnlich der folgenden sehen, die die installierte SSH-Version anzeigt:

OpenSSH_8.9p1 Ubuntu-3ubuntu0.1, OpenSSL 3.0.2 15 Mar 2022

Jetzt navigieren wir in unser Projektverzeichnis, in dem wir arbeiten werden:

cd ~/project

Dieser Befehl wechselt Ihr aktuelles Verzeichnis zu /home/labex/project, in dem wir alle Operationen in diesem Lab ausführen werden.

Generieren von SSH-Schlüsselpaaren

SSH unterstützt mehrere Authentifizierungsmethoden, aber die schlüsselbasierte Authentifizierung ist die sicherste und bequemste. In diesem Schritt werden Sie ein Paar von SSH-Schlüsseln generieren.

Ein SSH-Schlüsselpaar besteht aus:

  • Einen Privatschlüssel: Dies ist wie Ihr geheimes Passwort und sollte niemals geteilt werden.
  • Einen Öffentlichen Schlüssel: Dieser kann sicher mit den entfernten Servern geteilt werden, mit denen Sie sich verbinden möchten.

Um ein neues SSH-Schlüsselpaar zu generieren, verwenden Sie den Befehl ssh-keygen:

ssh-keygen -t rsa -b 4096

Dieser Befehl gibt an:

  • -t rsa: Verwenden Sie den RSA-Algorithmus zur Schlüsselgenerierung.
  • -b 4096: Erstellen Sie einen Schlüssel mit 4096 Bits, was eine hohe Sicherheit bietet.

Wenn Sie diesen Befehl ausführen, werden Sie aufgefordert:

  1. Einen Dateipfad einzugeben, um den Schlüssel zu speichern (drücken Sie Enter, um den Standardpfad ~/.ssh/id_rsa zu akzeptieren).
  2. Ein Passwort einzugeben (Sie können dies in diesem Lab leer lassen, indem Sie zweimal Enter drücken).

Hier ist ein Beispiel für das, was Sie sehen sollten:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/labex/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/labex/.ssh/id_rsa
Your public key has been saved in /home/labex/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz1234567890 labex@hostname
The key's randomart image is:
+---[RSA 4096]----+
|                 |
|       . .       |
|      . + .      |
|     . = + .     |
|    . = S = .    |
|   . . = = + .   |
|    . . + = + .  |
|     . . + + .   |
|      .. . .     |
+----[SHA256]-----+

Jetzt untersuchen wir die generierten Schlüssel. Um Ihren öffentlichen Schlüssel anzuzeigen, verwenden Sie:

cat ~/.ssh/id_rsa.pub

Dies wird Ihren öffentlichen Schlüssel anzeigen, der so aussieht:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQ... (long string of characters) ...labex@hostname

Denken Sie daran, dass der öffentliche Schlüssel geteilt werden kann, aber der Private Schlüssel (~/.ssh/id_rsa) sicher aufbewahrt werden muss und niemals mit jemandem geteilt werden sollte.

Verständnis der SSH-Schlüsselberechtigungen

Aus Sicherheitsgründen ist SSH sehr anspruchsvoll was die Dateiberechtigungen betrifft. In diesem Schritt lernen Sie die richtigen Berechtigungen für SSH-Schlüssel kennen und wie Sie sie festlegen können.

Lassen Sie uns die aktuellen Berechtigungen Ihrer SSH-Schlüssel überprüfen:

ls -la ~/.ssh/

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

total 16
drwx------ 2 labex labex 4096 Jan 1 12:00 .
drwxr-xr-x 3 labex labex 4096 Jan 1 12:00 ..
-rw------- 1 labex labex 3381 Jan 1 12:00 id_rsa
-rw-r--r-- 1 labex labex  741 Jan 1 12:00 id_rsa.pub

Die richtigen Berechtigungen sind:

  • Privater Schlüssel (id_rsa): 600 (nur von Ihnen lesbar und beschreibbar)
  • Öffentlicher Schlüssel (id_rsa.pub): 644 (von allen lesbar, nur von Ihnen beschreibbar)
  • .ssh-Verzeichnis: 700 (nur von Ihnen zugänglich)

Wenn Ihre Berechtigungen unterschiedlich sind, können Sie sie korrekt festlegen mit:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

Lassen Sie uns überprüfen, ob die Berechtigungen korrekt festgelegt wurden:

ls -la ~/.ssh/

Die Ausgabe sollte jetzt die richtigen Berechtigungen anzeigen:

total 16
drwx------ 2 labex labex 4096 Jan 1 12:00 .
drwxr-xr-x 3 labex labex 4096 Jan 1 12:00 ..
-rw------- 1 labex labex 3381 Jan 1 12:00 id_rsa
-rw-r--r-- 1 labex labex  741 Jan 1 12:00 id_rsa.pub

Diese Berechtigungen sind für die Sicherheit von entscheidender Bedeutung - SSH wird nicht funktionieren, wenn die Berechtigungen zu offen sind, da dies das Risiko birgt, Ihren privaten Schlüssel preiszugeben.

Einrichten der SSH-Authentifizierung

In diesem Schritt lernen Sie, wie Sie die schlüsselbasierte SSH-Authentifizierung einrichten. Dies ermöglicht es Ihnen, sich auf entfernte Server einzuloggen, ohne jedes Mal ein Passwort eingeben zu müssen.

Damit die SSH-Schlüsselauthentifizierung funktioniert, müssen Sie Ihren öffentlichen Schlüssel in die Datei ~/.ssh/authorized_keys auf dem Server kopieren. In einer realen Umgebung würden Sie dazu den Befehl ssh-copy-id verwenden:

## Beispiel zur Referenz (Führen Sie diesen Befehl nicht aus)
## ssh-copy-id username@remote_host

Da wir in diesem Lab keinen echten entfernten Server haben, simulieren wir diesen Prozess, indem wir eine lokale authorized_keys-Datei erstellen.

Zunächst erstellen wir das .ssh-Verzeichnis, falls es noch nicht existiert:

mkdir -p ~/.ssh

Der Befehl mkdir -p erstellt das Verzeichnis, wenn es nicht existiert, und tut nichts, wenn es bereits vorhanden ist.

Jetzt erstellen oder fügen wir der authorized_keys-Datei hinzu:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Dieser Befehl fügt Ihren öffentlichen Schlüssel an die authorized_keys-Datei an. In einer realen Umgebung würde diese Datei auf dem entfernten Server liegen.

Lassen Sie uns den Inhalt der authorized_keys-Datei überprüfen:

cat ~/.ssh/authorized_keys

Sie sollten Ihren öffentlichen Schlüssel in der Ausgabe sehen, die in etwa so aussehen sollte:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQ... (long string of characters) ...labex@hostname

Schließlich stellen wir sicher, dass die authorized_keys-Datei die richtigen Berechtigungen hat:

chmod 600 ~/.ssh/authorized_keys

Dies setzt die Berechtigungen so, dass nur der Besitzer die Datei lesen und schreiben kann, was eine Sicherheitsanforderung für die authorized_keys-Datei ist.

Verständnis der SSH-Konfigurationsdatei

SSH ermöglicht es Ihnen, sein Verhalten über die SSH-Konfigurationsdatei anzupassen. Dies ist besonders nützlich, wenn Sie regelmäßig mit mehreren Servern verbinden.

Erstellen wir eine SSH-Konfigurationsdatei, um zu sehen, wie sie funktioniert:

nano ~/.ssh/config

Dies öffnet den nano-Texteditor. Fügen Sie der Datei den folgenden Inhalt hinzu:

## Standard-Einstellungen für alle Hosts
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

## Beispiel-Serverkonfiguration
Host example
    HostName example.com
    User username
    Port 22
    IdentityFile ~/.ssh/id_rsa

In dieser Konfiguration:

  • ServerAliveInterval 60 sendet alle 60 Sekunden ein Keep-Alive-Signal
  • ServerAliveCountMax 3 trennt die Verbindung, wenn der Server auf 3 aufeinanderfolgende Signale nicht antwortet
  • Der Abschnitt Host example erstellt ein Alias, so dass Sie sich mit ssh example anstelle von ssh [email protected] -p 22 verbinden können

Um die Datei in nano zu speichern, drücken Sie Ctrl+O, bestätigen Sie mit Enter und verlassen Sie den Editor mit Ctrl+X.

Jetzt legen wir die richtigen Berechtigungen für die Konfigurationsdatei fest:

chmod 600 ~/.ssh/config

Dies stellt sicher, dass nur Sie diese Datei lesen und schreiben können, was für die Sicherheit wichtig ist.

In einer realen Umgebung könnten Sie sich jetzt einfach durch Eingabe des folgenden Befehls mit dem Server verbinden:

## Beispiel zur Referenz (Führen Sie diesen Befehl nicht aus)
## ssh example

Anstelle von:

## Beispiel zur Referenz (Führen Sie diesen Befehl nicht aus)
## ssh [email protected] -p 22

Die SSH-Konfigurationsdatei ist ein leistungsstarkes Werkzeug, das Ihnen Zeit sparen und das Verwalten mehrerer SSH-Verbindungen viel einfacher machen kann.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen von SSH (Secure Shell) zum sicheren Verbinden mit Linux-Servern gelernt. Hier ist eine Zusammenfassung dessen, was Sie erreicht haben:

  1. Sie haben ein Verständnis von SSH und seiner Bedeutung für sichere Remote-Verbindungen erworben.
  2. Sie haben ein SSH-Schlüsselpaar bestehend aus einem privaten und einem öffentlichen Schlüssel generiert.
  3. Sie haben gelernt, wie wichtig die richtigen Dateiberechtigungen für die SSH-Sicherheit sind.
  4. Sie haben die schlüsselbasierte SSH-Authentifizierung eingerichtet, indem Sie die authorized_keys-Datei konfiguriert haben.
  5. Sie haben eine SSH-Konfigurationsdatei erstellt, um SSH-Verbindungen anzupassen und zu vereinfachen.

Diese Fähigkeiten sind für alle, die mit Linux-Systemen arbeiten, unerlässlich, insbesondere in den Bereichen Cloud Computing, Systemadministration, DevOps und Cybersicherheit. SSH ist die Standardmethode für den sicheren Zugriff auf entfernte Linux-Server und wird täglich von IT-Fachleuten weltweit verwendet.

Mit den in diesem Lab erworbenen Kenntnissen sind Sie nun in der Lage, sichere Verbindungen zu Linux-Servern herzustellen, was eine grundlegende Fähigkeit für das weitere Lernen in der Linux-Systemadministration und im Cloud Computing ist.