> Die vollständige Liste der Artikel steht in [llms.txt](https://docs.f3cloud.com/llms.txt). Jede Seite gibt es auch als Markdown, dazu einfach .md an die Adresse anhängen. Diese Seite als Markdown: [https://docs.f3cloud.com/de/client-area/protect-vps-from-unauthorised-access/ssh-keys.md](https://docs.f3cloud.com/de/client-area/protect-vps-from-unauthorised-access/ssh-keys.md).

# SSH-Schlüssel einrichten und Passwort-Login unter Linux deaktivieren

So richten Sie die Anmeldung am Server per SSH-Schlüssel ein, legen einen eigenen Benutzer mit sudo an und deaktivieren die Anmeldung per Passwort und als root. Befehle für Ubuntu, Debian, AlmaLinux, CentOS und Oracle Linux.

Ein Passwort lässt sich erraten, ein SSH-Schlüssel nicht. Deshalb ist die wirksamste Schutzmaßnahme für einen Server, sich per Schlüssel anzumelden und die Anmeldung per Passwort komplett zu sperren. Dann stehen die Bots, die rund um die Uhr Passwörter durchprobieren, einfach vor verschlossener Tür.

Wir gehen dabei in diesen Schritten vor.

1. einen eigenen Benutzer statt root anlegen;
2. einen SSH-Schlüssel auf Ihrem Computer erzeugen;
3. den Schlüssel auf den Server kopieren;
4. die Anmeldung per Schlüssel prüfen;
5. die Anmeldung per Passwort und als root deaktivieren.

> **Was Sie brauchen.**
>
> Zu Beginn benötigen Sie SSH-Zugang zum Server als root. IP-Adresse und Passwort stehen in der E-Mail nach der Bestellung und im Bereich „Instructions“ im Kundenbereich. Wo Sie ihn finden, zeigen wir im Artikel [zur Bestellung eines VPS](https://docs.f3cloud.com/de/client-area/order-vps.md#access).

***

### 1. Legen Sie einen eigenen Benutzer an

Die Befehle werden auf dem Server als root ausgeführt.

Täglich als root zu arbeiten ist unsicher, denn ein einziger Fehler oder ein gestohlenes Passwort verschafft einem Angreifer vollen Zugriff. Deshalb legen wir einen normalen Benutzer an und geben ihm das Recht, Administratorbefehle über `sudo` auszuführen.

#### Ubuntu und Debian

```bash
# Benutzer admin anlegen (der Name ist frei wählbar)
# Der Befehl fragt nach einem Passwort, die übrigen Fragen können
# Sie mit der Enter-Taste überspringen
adduser admin

# Benutzer zur Gruppe sudo hinzufügen, damit er
# Administratorbefehle ausführen kann
usermod -aG sudo admin
```
#### AlmaLinux, CentOS, Oracle Linux

```bash
# Benutzer admin anlegen (der Name ist frei wählbar)
adduser admin

# Passwort für den Benutzer festlegen
passwd admin

# Auf diesen Systemen gehören Administratoren zur Gruppe wheel
usermod -aG wheel admin
```

Das Passwort des Benutzers brauchen Sie weiterhin, denn `sudo` fragt danach. Für die Anmeldung am Server wird es aber bald nicht mehr nötig sein.

***

### 2. Erstellen Sie einen SSH-Schlüssel auf Ihrem Computer

Dieser Befehl wird auf Ihrem eigenen Computer ausgeführt. Unter Windows öffnen Sie PowerShell, unter macOS und Linux das Terminal.

```bash
# Schlüssel vom Typ ed25519 erzeugen, eine moderne und sichere Variante
ssh-keygen -t ed25519 -a 64
```

Das Programm stellt ein paar Fragen.

* **wo der Schlüssel gespeichert werden soll** – drücken Sie einfach <kbd>Enter</kbd>;
* **passphrase** – ein Passwort für den Schlüssel selbst. Legen Sie am besten eines fest, dann kann niemand eine gestohlene Schlüsseldatei ohne dieses Passwort verwenden.

Danach liegen im Ordner `.ssh` Ihres Benutzers zwei Dateien.

* `id_ed25519` – der **private Schlüssel**, er bleibt nur bei Ihnen;
* `id_ed25519.pub` – der **öffentliche Schlüssel**, ihn legen wir auf den Server.

> **Geben Sie den privaten Schlüssel niemals weiter.**
>
> Die Datei `id_ed25519` ist Ihr privater Schlüssel. Verschicken Sie sie nicht über Messenger, laden Sie sie nicht in die Cloud hoch und legen Sie sie nicht auf den Server.\
> Nach außen geht nur die Datei mit der Endung `.pub`.

***

### 3. Kopieren Sie den Schlüssel auf den Server

Der Befehl wird auf Ihrem eigenen Computer ausgeführt. Setzen Sie statt `SERVER_IP` die IP-Adresse des Servers ein.

#### macOS und Linux

```bash
# Öffentlichen Schlüssel für den Benutzer admin auf den Server kopieren
ssh-copy-id admin@SERVER_IP
```
#### Windows (PowerShell)

```powershell
# Unter Windows gibt es den Befehl ssh-copy-id nicht, daher übertragen
# wir den Schlüssel mit einer einzigen Zeile.
# Sie legt auf dem Server den Ordner .ssh an, hängt den Schlüssel an
# authorized_keys an und setzt die nötigen Rechte
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh admin@SERVER_IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
```

Der Befehl fragt nach dem Passwort des Benutzers `admin`. Das ist das letzte Mal, dass Sie es für die Anmeldung brauchen.

***

### 4. Prüfen Sie die Anmeldung per Schlüssel

Verbinden Sie sich von Ihrem Computer aus in einem **neuen** Terminalfenster.

```bash
# Als neuer Benutzer verbinden. Nach dem Serverpasswort sollte
# nicht gefragt werden,
# höchstens nach der passphrase des Schlüssels, falls Sie eine festgelegt haben
ssh admin@SERVER_IP

# Auf dem Server prüfen, ob sudo funktioniert. Der Befehl sollte
# root ausgeben
sudo whoami
```

Wenn Sie sich über Termius verbinden, fügen Sie den Schlüssel in dessen Einstellungen hinzu und geben Sie den Benutzer `admin` an. Wie die Verbindung über Termius funktioniert, zeigen wir in einem [eigenen Artikel](https://docs.f3cloud.com/de/vps/termius-connection.md).

***

### 5. Deaktivieren Sie die Anmeldung per Passwort und als root

> **Schließen Sie die alte Verbindung nicht.**
>
> Lassen Sie die bisherige Sitzung geöffnet, bis Sie sich vergewissert haben, dass die Anmeldung per Schlüssel im neuen Fenster funktioniert. Falls etwas schiefgeht, können Sie darüber alles leicht rückgängig machen.

Unter Ubuntu und Debian werden die SSH-Einstellungen aus mehreren Dateien im Ordner `/etc/ssh/sshd_config.d/` gelesen, und **es gilt die Einstellung, die zuerst gefunden wird**. Die Datei `50-cloud-init.conf` kann zum Beispiel die Anmeldung per Passwort erlauben, und dann greift Ihre Sperre in einer anderen Datei einfach nicht. Deshalb legen wir eine eigene Datei mit der Nummer `00` an, die der Server vor allen anderen liest.

Die folgenden Befehle werden auf dem Server ausgeführt.

```bash
# Datei für unsere SSH-Einstellungen anlegen und im
# Editor nano öffnen
sudo nano /etc/ssh/sshd_config.d/00-security.conf
```

Fügen Sie diese Zeilen in die Datei ein.

```ssh-config
# Direkte Anmeldung als root verbieten
PermitRootLogin no
# Anmeldung per Passwort verbieten
PasswordAuthentication no
# Anmeldung per Schlüssel beibehalten
PubkeyAuthentication yes
```

Zum Speichern drücken Sie <kbd>Ctrl</kbd> + <kbd>O</kbd> und <kbd>Enter</kbd>, zum Verlassen des Editors <kbd>Ctrl</kbd> + <kbd>X</kbd>.

Jetzt prüfen wir die Einstellungen und wenden sie an.

```bash
# Einstellungen auf Fehler prüfen. Gibt der Befehl nichts aus,
# ist alles in Ordnung
sudo sshd -t

# Anzeigen, welche Einstellungen tatsächlich gelten
sudo sshd -T | grep -E "permitrootlogin|passwordauthentication"
```

In der Ausgabe sollten `permitrootlogin no` und `passwordauthentication no` stehen. Steht dort ein anderer Wert, wird er von einer anderen Datei überschrieben. Sehen Sie sich den Inhalt des Ordners mit dem Befehl `ls /etc/ssh/sshd_config.d/` an.

Jetzt müssen Sie nur noch SSH neu starten.

#### Ubuntu und Debian

```bash
# SSH neu starten, damit die neuen Einstellungen wirksam werden
sudo systemctl restart ssh
```
#### AlmaLinux, CentOS, Oracle Linux

```bash
# SSH neu starten, damit die neuen Einstellungen wirksam werden
sudo systemctl restart sshd
```

***

### 6. Abschließende Prüfung

Öffnen Sie ein weiteres Terminalfenster und prüfen Sie beide Varianten.

```bash
# Die Anmeldung als admin per Schlüssel sollte funktionieren
ssh admin@SERVER_IP

# Die Anmeldung als root sollte jetzt mit dem Fehler Permission
# denied enden
ssh root@SERVER_IP
```

Wenn alles so ist, herzlichen Glückwunsch, Ihr Server lässt sich nun nicht mehr durch Erraten des Passworts knacken. Die alte Sitzung können Sie jetzt schließen.

> **Falls der Zugang doch verloren geht.**
>
> Falls der Zugang doch verloren geht, öffnen Sie den Server über die Schaltfläche <kbd>Console</kbd> in der Serverliste im Kundenbereich. Damit öffnet sich der Server direkt im Browser, ohne SSH, und Sie können die Einstellungen zurücksetzen, indem Sie die Datei `/etc/ssh/sshd_config.d/00-security.conf` löschen.

***

### Unsere Ressourcen

**Telegram-Kanal:** [https://t.me/f3cloud_news](https://t.me/f3cloud_news)\
**Hosting-Website:** [https://f3cloud.com](https://f3cloud.com/de)
