Secure Shell (SSH)

sshd = SSH-Dämon
ssh root@remoteHost = Per SSH als Root anmelden
ssh root@remoteHost programm = Per SSH Programm auf Remote-Host starten

/etc/ssh/sshd_config = Konfigurationsdatei
Port 22 = Angabe des Ports
HostKey Dateiname = Spezifiziert die Datei, in der der Host-Schlüssel des Servers abgelegt ist. Normalerweise ist das die Datei /etc/ssh/ssh_host_key.
ServerKeyBits = Hier wird die Breite des Server-Schlüssels angegeben. Normalerweise 768.
KeyRegenerationInterval Zeit = Ab welcher Zeit wird der Server-Schlüssel neu generiert?
PermitRootLogin no = Verbieten, dass Root sich über ssh einloggen kann
IgnoreRhosts yes|no = Sollen die Dateien ~/.rhosts und ~/.shosts ignoriert werden?
RhostsRSAAuthentication = sowohl Logins mit Paßwort als auch ohne dürfen von bekannten Remote-Hosts entgegengenommen werden.

/etc/nologin = Existiert diese Datei, wird der Login für alle Nutzer außer Root verweigert.

ssh-keygen = Tool zum Erstellen der Keys auf dem Client
~/.ssh/id_dsa = Privat/Secret Key auf dem Client
~/.ssh/id_dsa.pub = Public Key auf dem Client
~/.ssh/authorized_keys = Public Key des Clients muss in die Datei auf dem Server kopiert werden
/etc/ssh_known_hosts = Enthält die Public-Keys aller bekannten Rechner

RSA und DSA sind Digitale Signaturen, welche einen Rechner eindeutig identfizieren.

Konfiguration des SSH-Clients

/etc/ssh/sshd_config = Systemweite Konfig-Datei
~/.ssh/config = Benutzerspezifische Konfig-Datei

Wichtige Einstellungen

ForwardX11 yes|no = Soll das X-Protokoll getunnelt werden
Port 8080 = Port, zu dem Verbindung aufgebaut werden soll
Protocol 2,1 = Zuerst SSH 2 versuchen, dann SSH 1
StrictHostKeyChecking ask|yes|no = Wie geht SSH bei neuen Host-Keys um?

Konfiguration des SSH-Servers

- Auf dem Server muss sshd laufen
- Konfiguration wird in
/etc/ssh/sshd_config vorgenommen

Wichtige Einstellungen

AllowGroup GRUPPE1 GRUPPE2 = Login ist nur Usern aus diesen Gruppen erlaubt.
AllowHost HOST1 HOST2 = Login ist nur Usern von diesen Rechnern erlaubt
AllowUsers USER2 USER2 = Login ist nur diesen Usern erlaubt.
ListenAddress HOST:PORT = Auf diesen Adressen lauscht ssh
PermitRootLogin yes|no = Root-Login erlauben|verweigern
PermitRootLogin without-password = Verweigert Root den Login mit Passwort.
PermitRootLogin forced-commands-only = Ausschließlich das Login via Keys
Port 8080 = Port, auf dem SSH lauschen soll
Protocol 2 = SSH-Version 2 nutzen
X11Forwarding yes|no = Tunneln erlauben?

Authentifizierungsmöglichkeiten

HostbasedAuthentication = Unsicher, die Dateien /etc/hosts.equiv, shosts.equiv, ~.rhosts und ~.shosts werden ausgewertet, um anhand der Hosts den Zugriff zu authentifzieren
RhostsRSAAuthentication = Unsicher, Zusätzlich kommt RSA-Authentifizierung zum Einsatz
PubkeyAuthentication = SSH2, Authentifizierung mittels Schlüsselpaar (Public + Private Key)
PasswordAuthentication = Passwot-Authentifizierung

Erzeugen des Schlüsselpaares

ssh-keygen -t rsa 1 ==> ~/ssh/identity, identity.pub = SSH 1-Schlüssel generieren
ssh-keygen -t rsa ==> ~/ssh/id_rsa, id_rsa.pub = SSH 2-Schlüssel generieren
ssh-keygen -t dsa ==> ~/ssh/ id_dsa, id_dsa.pub = SSH 2-Schlüssel generieren
ssh-add = Passphrase eingeben, damit diese nicht mehr erscheint

SSH-Tunnel

Mittels ssh ist es möglich, einen verschlüsselten SSH-Tunnel aufzubauen, über den Pakete an einen bestimmten Empfänger-Port geleitet werden.

ssh-L localPort:remoteHost:remotePort user@host
ssh -L 3000:mail.meineDomain.com root@remoteServer.meineDomain.com
==> Baut SSH-Tunnel vom lokalen Port 3000 zum Remote-Port 25 auf.

ssh -R remotePort:remoteHost:localPort user@host
ssh -R 5555:meinRechner.com:80 root@remoteServer.meineDomain.com

==> Baut SSH-Tunnel vom remotePort 80 zum eigenen Port 5555 auf.