> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/rdm/de/knowledge-base/knowledge-base-articles/open-ssh-security-best-practices.md).

# Best Practices für die Sicherheit von Open SSH

Auch wenn Open SSH beim Remote-Zugriff zur Norm geworden ist, birgt die Verwendung der Standardinstallation dennoch einige Sicherheitsrisiken. Dieser Leitfaden schlägt Wege vor, um das Sicherheitsniveau einer Open-SSH-Installation erheblich zu steigern.

### Authentifizierung mit privaten/öffentlichen Schlüsseln verwenden

Die Verwendung verschlüsselter Schlüssel zur Authentifizierung ist nützlich, da sie die Eingabe von Passwörtern erübrigt. Selbst die kreativsten Hacker sind nicht in der Lage, eine Sitzung zu störenoder sich in eine Sitzung einzuschleichen, und es gibt keine Versuche mehr, Passwörter zu knacken.

1. Erzeugen Sie ein Paar aus öffentlichem und privatem Schlüssel mit diesem Befehl: `$ ssh-keygen -t rsa`. Dadurch werden zwei Dateien im (versteckten) Verzeichnis `~/.ssh` erstellt; der private Schlüssel heißt `id_rsa` und der öffentliche `id_rsa.pub`.
2. Wählen Sie ein Passwort, das bei jeder Verbindung zum Entsperren des öffentlichen Schlüssels verwendet wird. Optional kann beim Erstellen des Schlüssels eine mit einer Passphrase geschützte Verschlüsselung hinzugefügt werden.

   <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>Das Drücken von <kbd>Enter</kbd> ohne Eingabe einer Passphrase funktioniert ebenfalls. Beachten Sie jedoch, dass das Erstellen eines Schlüssels ohne Passphrase jedem, der Zugriff auf Ihren lokalen Computer erhält, automatisch SSH-Zugriff auf den Remote-Server gewährt.</p></div>
3. Kopieren Sie den öffentlichen Schlüssel (`id_rsa.pub`) auf den Server:

   ````
   Scp –p id_rsa.pub remoteuser@remotehost:
   ```   <div data-gb-custom-block data-tag="hint" data-style='danger'>The `remoteuser` should never be root. Select the default non-root user as `remoteuser` instead.</div>
   ````
4. Melden Sie sich mit SSH an und kopieren Sie den öffentlichen Schlüssel an die richtige Stelle:

   ```
   ssh remoteuser@remotehost mkdir ~/.ssh chmod 700 ~/.ssh cat id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys mv id_rsa.pub ~/.ssh logout
   ```
5. Löschen Sie dann den öffentlichen Schlüssel vom Server, andernfalls erlaubt der SSH-Client keine Anmeldung am Server:

   ```
   rm id_rsa.pub
   ```
6. Legen Sie die Dateiberechtigungen auf dem Server fest (diese beiden sind erforderlich, wenn "StrictModes" auf ***yes*** gesetzt ist):

   ```
   $ chmod 700 ~/.ssh
   $ chmod 600 ~/.ssh/authorized_keys
   ```
7. Sobald die Anmeldung mit der Schlüssel-Passphrase erfolgt ist, kann die Passwort-Authentifizierung vollständig deaktiviert werden. Öffnen Sie dazu die Datei `/etc/ssh/sshd_config` und fügen Sie ihr die folgenden Zeilen hinzu:

   ```
   # Disable password authentication forcing use of keys
   PasswordAuthentication no
   ```

### Authentifizierung mit Benutzername und Passwort deaktivieren

Um die auf Passwörter basierende Authentifizierung vollständig zu beseitigen und die Verwendung von SSH-Schlüsseln oder Zertifikaten zu erzwingen, aktualisieren Sie die SSH-Konfiguration, indem Sie die folgenden Zeilen in der Datei `/etc/ssh/sshd_config` hinzufügen:

```
PasswordAuthentication no
ChallengeResponseAuthentication no
KbdInteractiveAuthentication no
UsePAM no
```

Starten Sie anschließend den SSHD-Dienst neu, indem Sie entweder `/etc/init.d/sshd restart` oder `service sshd restart` eingeben. Sobald dies erledigt ist, sollte der Server alle Anmeldungen mit Benutzername/Passwort ablehnen und nur die Authentifizierung über Schlüssel oder Zertifikat akzeptieren.

### Leerlauf-Timeout-Intervall konfigurieren

Es kann ein Leerlauf-Timeout-Intervall festgelegt werden, um eine unbeaufsichtigte SSH-Sitzung zu vermeiden. Öffnen Sie dazu die Datei `/etc/ssh/sshd_config` und fügen Sie die folgende Zeile hinzu:

```
ClientAliveInterval 360
ClientAliveCountMax 0
```

Das Leerlauf-Timeout-Intervall wird in Sekunden angegeben (360 Sekunden = 6 Minuten). Sobald das Intervall abgelaufen ist, werden inaktive Benutzer automatisch abgemeldet.

### Leere Passwörter deaktivieren

Für zusätzliche Sicherheit wird empfohlen, Remote-Anmeldungen von Konten mit leeren Passwörtern zu verhindern. Öffnen Sie die Datei `/etc/ssh/sshd_config` und aktualisieren Sie die folgende Zeile:

```
PermitEmptyPasswords no
```

### SSH-Zugriff auf einige Benutzer beschränken

In Fällen, in denen eine Authentifizierung mit Benutzername/Passwort nicht vermeidbar ist, wird empfohlen, die SSH-Anmeldung nur auf bestimmte Benutzer zu beschränken, die Remote-Zugriff benötigen, um so die Auswirkung von Benutzern mit schwachen Passwörtern zu minimieren.

Um die SSH-Anmeldung zu beschränken, öffnen Sie die Datei `/etc/ssh/sshd_config` und fügen Sie eine `AllowUsers`-Zeile hinzu, gefolgt von der Liste der durch Leerzeichen getrennten Benutzernamen:

```
AllowUsers user1 user2
```

Starten Sie anschließend den SSHD-Dienst neu, indem Sie entweder `/etc/init.d/sshd restart` oder `service sshd restart` eingeben.

### Root-Anmeldung deaktivieren

Um Root-Anmeldungen zu deaktivieren, öffnen Sie die Datei `/etc/ssh/sshd_config`, während Sie als Root angemeldet sind, und ändern Sie die Zeile `#PermitRootLogin` in `PermitRootLogin no`. Stellen Sie sicher, dass Sie das Symbol # entfernen, andernfalls funktioniert es nicht.

Starten Sie anschließend den SSHD-Dienst neu, indem Sie entweder `/etc/init.d/sshd restart` oder `service sshd restart` eingeben.

### Schwache Verschlüsselung deaktivieren

Öffnen Sie die Datei `/etc/ssh/sshd_config` und fügen Sie diese Zeilen hinzu:

```
# Ciphers moderns
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com

# KEX robusts
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384

# MAC moderns
MACs hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com

# Disable weak algorithms
PubkeyAcceptedKeyTypes ssh-ed25519,rsa-sha2-256,rsa-sha2-512
HostKeyAlgorithms ssh-ed25519,rsa-sha2-256,rsa-sha2-512
```

Starten Sie anschließend den SSHD-Dienst neu, indem Sie entweder `/etc/init.d/sshd restart` oder `service sshd restart` eingeben.

### Einen nicht standardmäßigen Port verwenden

Die überwiegende Mehrheit der Hacker, die nach offenen SSH-Servern suchen, sucht nach Port 22, da SSH standardmäßig auf diesem Port auf eingehende Verbindungen lauscht. Um SSH auf einem anderen Port zu betreiben, öffnen Sie die Datei `/etc/ssh/sshd_config` und fügen Sie die folgenden Zeilen hinzu:

```
#Run SSH on a non standard port
Port 2025 #Change me
```

Starten Sie anschließend den SSHD-Dienst neu, indem Sie entweder `/etc/init.d/sshd restart` oder `service sshd restart` eingeben.

Stellen Sie sicher, dass Sie die Portweiterleitung in Ihrem Router und alle erforderlichen Firewall-Regeln ändern. Es wird empfohlen, Clients über Portänderungen zu informieren, damit sie wissen, mit welchem Port sie sich verbinden müssen, da SSH nicht mehr auf dem Standardport auf Verbindungen lauscht.

### SSH-Exposition mit Netzwerkkontrollen begrenzen

Wenn eine Änderung des SSH-Ports nicht praktikabel ist, bietet die Bereitstellung eines Jump-Servers einen starken Zero-Trust-Kontrollpunkt zwischen Clients und internen Systemen. Er zentralisiert die Authentifizierung, erzwingt einheitliche Zugriffsrichtlinien und verhindert die direkte Exposition kritischer Ressourcen. Siehe [Remote Desktop Manager Jump (Funktion)](https://docs.devolutions.net/resources/de/devolutions-agent/jump-host#configure-a-jump-host) für die Konfigurationsschritte.

### Multifaktor-Authentifizierung aktivieren

Die Multifaktor-Authentifizierung ist einer der wichtigsten Schutzmechanismen, die SSH-Servern hinzugefügt werden sollten, um sie vor unbefugtem Zugriff zu schützen, da jede Benutzeranmeldung mit einem konfigurierten MFA-Benutzer verknüpft sein muss. Selbst wenn es einem Hacker gelingt, ein Passwort zu erlangen oder in den SSH-Server einzudringen, wird er dennoch von der MFA blockiert.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/rdm/de/knowledge-base/knowledge-base-articles/open-ssh-security-best-practices.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
