SSH/de

SSH (Secure SHell) ist ein verschlüsseltes Terminal-Programm, das 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 Forwarding Not Forwarding or Tunneling!
Problem: After you have made the necessary changes to the configuration files for permitting X11 Forwarding, you find X applications are executing on the server and are not being forwarded to the client.

Solution: What is likely occurring during SSH login into the remote server or host, the  variable is either being unset or is being set after the SSH session sets it.

Test for this scenario as follows after logging in remotely:

You should get something similar to "localhost:10.0" or "localhost2.local:10.0" using server side  setting. If you're getting the usual ":0.0", check to make sure you are not unsetting or initializing the  variable within. If so, remove or comment your custom initialization of  or prevent  from executing during SSH login:

A trick would be to alias this within.

Intrusion Prevention
ssh is a commonly attacked service. sshguard & fail2ban monitor logs and black list remote users who have repeatedly failed to login.

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.