SSH/de

SSH (Secure SHell) ist ein verschlüsseltes Terminal-Programm, dass das klassische telnet-Tool auf unixoiden Betriebssystemen ersetzt.

Zusätzlich zu Terminal-Fernzugriff, welcher durch das Hauptprogramm ssh bereitgestellt wird, enthält die SSH-Programmsammlung inzwischen auch andere Werkzeuge wie scp (secure copy) oder sftp (secure file transfer protocol).

SSH war nicht immer frei. Heute ist allerdings die Implementation von OpenBSD, OpenSSH, die am meisten genutzte und in Gentoo vorinstallierte Version.

Installation
Meistens ist OpenSSH schon installiert (mit dem Paket ). Dieses Paket hat die folgenden USE flags:

Nach einer Änderung der USE-Flags, muss OpenSSH neu kompiliert werden:

Server
Füge openssh zum Runlevel default hinzu, wenn dies nicht bereits geschehen ist.

Starte den sshd-Daemon mit:

Der OpenSSH-Server kann wie jeder andere OpenRC-Service gesteuert werden:

Schlüssel erstellen
Um eine sichere Shell bereitzustellen, werden kryptographische Schlüssel für die Ent- und Verschlüsselung sowie Hashing Funktionen von SSH benutzt.

Bei dem ersten Start des SSH Services werden die System-Schlüssel erzeugt. Diese Schlüssel können (neu-)erstellt werden mittels des  Befehls.

Schlüssel für das SSH Protokoll Version 1 (welche normalerweise nicht mehr aktiviert ist und durch Protokoll Version 2 abgelöst wurde) erzeugt man mit:

Für Schlüssel mit SSH Protokoll Version 2 (DSA und RSA Algorithmen):

Server-Konfiguration
Der SSH Server wird normalerweise in konfiguriert. Weitere Einstellungen, einschliesslich des Ortes, an dem sich die obige Konfiguration befindet, können in getätigt werden. Für Details über die Konfiguration sollte die man page "sshd_config" konsultiert werden.

Für eine Konfiguration, die sich besonders auf Sicherheit konzentriert, sollte guide (Englisch) gelesen werden.

Klient-Konfiguration
Der ssh-Klient und zugehörige Programme (scp, sftp, etc.) können in den folgenden Dateien konfiguriert:

Für weiter Informationen siehe die -Manpage:

Authentifizierung ohne Passwort
Sehr praktisch für das Verwalten von git-Servern.

Klient
Führe auf dem Klienten folgenden Befehl aus:

Server
Stelle sicher, dass ein Account für den betreffenden Benutzer besteht und kopiere dann die Datei des Klienten in die Datei.

Testen auf einem Einzelplatzcomputer
Das oben beschriebene Vorgehen kann lokal getestet werden:

Fehlersuche
Es gibt drei verschiedene Level von Debug-Modi, die bei der Problemlösung helfen können. Mit "-v" gibt ssh Debugging-Nachrichten über seinen Prozess aus. Dies ist hilfreich bei dem Debugging von Verbindungs-, Authentifikations- und Konfigurationsproblemen. Mehrfache "-v" erhöhen den Grad der Ausgabe. Das Maximum ist drei.

Abbruch von langlebigen Verbindungen
Viele Geräte, die Zugriff zum Internet anbieten, benutzen dafür network address translation (NAT), ein Prozess der Geräten in einem privaten Netzwerk (typischerweise in Heim- oder Berufsumgebungen) Zugriff auf fremde Netzwerke wie dem Internet ermöglicht, obwohl das NAT Gerät nur eine einzige IP-Adresse in diesem fremden Netzwerk besitzt. Leider funktionieren diese NAT Geräte nicht alle gleich und manche von ihnen schließen langlebige, nur gelegentlich genutzte TCP Verbindungen wie die von SSH. Man erkennt das daran, dass man auf einmal nicht mehr mit dem entfernten Computer interagieren kann, obwohl das "ssh" Client Programm nicht beendet wurde.

Um dieses Problem zu lösen, können OpenSSH Klienten und Server so konfiguriert werden, dass sie eine unsichtbare "keep alive" Nachricht senden, deren Ziel das Aufrechterhalten der Verbindung ist. Verändern Sie dazu folgende Werte:


 * Für alle Klienten, die mit dem lokalen Server verbunden sind: ClientAliveInterval 30 (oder ein anderer Wert, in Sekunden) in der Datei.
 * Für alle Server, mit denen ihr lokaler Klient verbunden ist: ServerAliveInterval 30 (oder ein anderer Wert, in Sekunden) in der Datei.

X11-Weiterleitung, nicht Weiterleitung oder Tunneling!
Problem: Nach dem Sie die benötigten Änderungen in den Konfigurationsdateien gemacht haben, um die X11-Weiterleitung zu erlauben, werden X-Anwendungen auf dem Server ausgeführt aber nicht zum Klient weitergeleitet.

Lösung: Wahrscheinlich ist während dem SSH-Login auf dem Server, die -Variable überschrieben oder falsch gesetzt worden.

Wenn das Szenario zutrifft, können Sie es wie folgt, nach dem Einlogen auf dem Server, testen:

Sie sollten etwas ähnliches wie "localhost:10.0" oder "localhost2.local:10.0" sehen, da auf dem Server  gesetzt ist. Bekommen Sie als Rückmeldung das normale ":0.0", überprüfen Sie, ob Sie nicht die -Variable in Ihrer  überschreiben oder initalisieren. Wenn dem so ist, entfernen oder kommentiere Sie Ihre eigenen Initalisierungen der -Variable aus. Oder sorgen Sie dafür, das während des einloggens nicht ausgeführt wird:

Ein kleiner Trick ist es, für den Befehl innerhalb deiner ein alias zu setzen.

Vorbeugende Maßnahmen zu Sicherheit
ssh is ein Service der ständig angegriffen wird. sshguard&fail2ban überwachen die Logs und fügen Benutzer, die sich immer wieder fehlerhaft einlogen, in eine black list ein.

Siehe auch

 * Securing OpenSSH - Gentoo developer documentation.
 * OpenSSH Key Management Part1 - Gentoo documentation, have a look at all 3 parts.
 * Gentoo Linux Keychain Guide
 * autossh - Detects when SSH connections drop and auto-reconnects.