• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[bitte löschen]SSH - Konfiguration

OsunSeyi

Hacker
Hi
habe zum eigenen Gebrauch einen Text zum Thema SSH-Konfiguration
zusammenkopiert (siehe unten).
Die Quellen sind mit angeführt.
Ich weiß nicht, ob das in der Form erlaubt ist, falls ja, möchte ich das Ganze
auch Anderen zur Verfügung stellen...
Gruß, tom
PS
1) Habe keine Möglichkeit gefunden, eine Datei mitzuschicken.
2) um Kritik/Anregung wird gebeten
Code:
<html><head><title>SSH-Konfiguration</title><meta http-equiv="content-type" content="text/html; charset=iso8859-1"></head><body bgcolor="lightyellow"><pre>
<a name="anfang"><h2>SSH KONFIGURATION</h2></a><b>
<a href="#key">- Schlüsselerzeugung</a>
<a href="#dat">- Konfigurationsdateien</a>
<a href="#config">- Server-Konfiguration</a>
<a href="#trouble">- Troubleshooting</a>
<a href="#quellen">- Quellen</a></b>
<HR>
<b>Wie funktioniert SSH?</b>

1. Auf dem Server-Rechner wird ein Host-Key-Paar (RSA) generiert.
   - ein Verschlüsselungscode (Public Key)
   - ein Entschlüsselungscode (Private Key).
   Der laufende Server-Prozeß erzeugt zusätzlich ein Server-Key-Paar,
   das nur im Memory gehalten und periodisch ersetzt wird.

2. Der lokale SSH-Client wendet sich an den SSH-Server auf dem Remote-Rechner,
   um eine Verbindung aufzunehmen.
   Der Server schickt dem Client daraufhin sowohl seinen 'Public Key' als auch den
   periodisch erzeugten öffentlichen Serverschlüssel.

3. Ist der Key noch nicht bekannt, fragt der Client, ob die Verbindung aufgebaut werden
   soll, und trägt den Server-Public-Key in die individuelle Liste des Benutzers ein.
   Der SSH-Client kann nun den Server anhand der Liste erkennen.

4. Falls dies der Fall ist, verschlüsselt der Client eine von ihm erzeugte Zufallszahl aus
   beiden übergebenen öffentlichen Schlüsseln (Hostkey und Serverkey).
   Diese Zufallszahl dient im weiteren Verlauf als aktueller Sitzungsschlüssel.

5. Nun erst übergibt der Client Userid und Passwort.

6. Zum Schluß startet der Server eine Login-Shell bzw. führt das gewünschte Kommando aus. 

Bei der Authentifizierung des Clients werden der Reihe nach verschiedene Verfahren ausprobiert. 
Dabei wird der Client als berechtigt betrachtet, sobald das erste Verfahren folgender Liste 
erfolgreich war:

1. Autentifikation entsprechend den r-Kommandos;
   Unsicher und per Default deaktiviert.

2. Wie Punkt1; zusätzliche RSA-Authentifikation.

3. RSA-Authentifikation; dazu ist auf dem Remote-Rechner ein Eintrag in
   ~/.ssh/authorized_keys erforderlich.

4. Durch Paßwort-Abfrage.
<HR>
<a name="dat"><b>Dateien Serverseitig:</b></a>
<a href="#anfang"><b>⇑</b></a>

/etc/ssh/sshd_config 
    Der SSHD wird über diese Datei konfiguriert.
    Meist sind fast alle Zeilen auskommentiert,
    dies sollte die praktischen Bedürfnisse auch abdecken.
    <a href="#config">Konfiguration</a>

/etc/hosts.allow & deny
    In aktuellen Implementierungen des Ssh-Daemons ist die Auswertung der Dateien
    /etc/hosts.allow und /etc/hosts.deny zumeist fest verdrahtet:
    tux> strings /usr/sbin/sshd | egrep 'hosts.allow|hosts.deny'
         hosts_allow_table
         hosts_deny_table
         /etc/hosts.allow
         /etc/hosts.deny
    # Zugang zur Secure Shell (hosts.allow)
     sshd : LOCAL
    # Alles pauschal verbieten (hosts.deny)
     ALL : ALL

/etc/nologin
    Wenn sie existiert, verweigert sshd jeden Einlogvorgang außer dem von root
    (sofern root-Eingänge in der Konfigurationsdatei erlaubt waren).
    Der Inhalt der Datei wird dem Client übermittelt.

<b>Dateien Clientseitig:</b>

/etc/ssh/ssh_known_hosts & ~/.ssh/known_hosts
    enthalten die Public-Keys aller bekannten Rechner.
    Die globale Datei wird vom Systemverwalter administriert,
    die userbezogene wird automatisch angelegt und erweitert.
    enthält die folgenden Felder:
    Hostnamen Bits Exponent Modulus Kommentar
    Hostnamen ist eine durch Kommas getrennte Liste von Namen
    (* und ? dürfen benutzt werden).
    Wird mit dem vollständigen Hostnamen des Rechners verglichen, der sich anmelden will.
    Bits, Exponent und Modulus werden direkt den Host-Schlüsseln entnommen,
    die in den Dateien /etc/ssh/ssh_host_*_key.pub gespeichert sind.
    Das optionale Kommentarfeld wird nicht ausgewertet.
<HR>
<a name="key"><b>Schlüssel:</b></a>
<a href="#anfang"><b>⇑</b></a>
Der Befehl ssh-keygen erzeugt und verwaltet die RSA und DSA Schlüssel für ssh Verbindungen.
Normaluser können sich damit einen Schlüssel erzeugen, der Systemverwalter kann auch den
Host-Schlüssel damit anlegen.
Diese Schlüssel sind nicht zwingend für den Gebrauch von ssh erforderlich, bestimmte Server
verlangen ihn aber.
Es stehen zwei verschiedene Schlüsseltypen zur Verfügung, rsa und dsa.
Mit dem Befehl:
    > ssh-keygen -t Typ
wird ein neues Schlüsselpaar angelegt.

Es ist möglich, über diese Schlüsselpaare eine Authentifizierung zu steuern (kein Passwort).
Anmeldung über das Public-Key-Verfahren:
    > ssh-keygen -t dsa
      Generating public/private dsa key pair.
      ... in ~/.ssh/id_dsa.pub

kopieren auf Server:
    > ssh-copy-id -i /home/tux/.ssh/id_dsa.pub 192.168.0.175
      password:
      ...

Passwort-Authentifikation ausschalten:
     /etc/ssh/sshd_config:
     # Change to no to disable tunnelled clear text passwords
       PasswordAuthentication no
       ...
     /etc/ssh/sshd_config:
       - PermitRootLogin yes/no

    > sudo /etc/init.d/ssh restart
<HR>
<a name="config"><b>Die Datei /etc/ssh/sshd_config :</b></a>
<a href="#anfang"><b>⇑</b></a>
BatchMode yes/no
    Die Abfrage nach dem Passwort oder der Passphrase wird unterbunden,
    somit lassen sich z.B. Kommandos in Shellscripts ausführen.
Compression yes/no
    Schaltet die Komprimierung der zu übertragenden Daten ein oder aus.
FallBackToRsh yes/no
    Scheitert der Verbindungsaufbau zum Server (zB. weil dieser nicht aktiv ist),
    kann eine Verbindung über rsh versucht werden. Default: 'no'
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.
    Diese Datei darf nicht für alle Welt lesbar sein,
    ansonsten verweigert sich sshd die Datei zu verwenden!
IgnoreRhosts yes/no
    Sollen die Dateien ~/.rhosts und ~/.shosts ignoriert werden?
KeyRegenerationInterval Zeit
    Die Anzahl der Sekunden, nach denen der Server-Schlüssel neu erstellt werden soll.
    Standardmäßig sollte hier 3600 (eine Stunde) stehen.
    Steht hier eine 0, so wird der Schlüssel niemals neu erstellt. 
PermitRootLogin yes/no
    Erlaubt, daß sich der Systemverwalter über ssh einloggen kann. 
PasswordAuthentication yes/no
    Soll eine Abfrage des Passwortes durchgeführt werden?
    Steht der Wert auf »no«, ist ein Anmelden auf einem entfernten Rechner nur möglich,
    wenn der eigene öffentliche Schlüssel dort bekannt ist.
Port n
    Die Angabe auf welchem Port sshd laufen soll. Normalerweise ist es Port 22. 
RhostsAuthentication yes/no
    Ob bei der Authentifizierung die Dateien rhosts und /etc/hosts.equiv ausreichen,
    soll auf »no« bleiben.
RhostsRSAAuthentication yes/no
    Erlaubt die Benutzung von rhosts und /etc/hosts.equiv,
    allerdings nur wenn die RSA-HOST-Authentifizierung erfolgreich war.
    Default »yes«.
RSAAuthentication yes/no
    Authentifizierung mittels RSA-Verschlüsselung.
    Steht der Wert auf »yes«, sollte die Datei »~/.ssh/identity«
    oder ein Authentifizierungsagent existieren.
StrictHostKeyChecking yes/no
    Ein »yes« verschärft die Sicherheit, indem das Anmelden nur auf Rechnern gestattet wird,
    die in den Datenbanken »/etc/known_hosts« bzw. »~/.ssh/known_hosts« enthalten sind.
    Steht hier »no« werden neu besuchte Rechner automatisch der privaten Datei hinzugefügt. 
<HR>
<a name="trouble"><b>Troubleshooting:</b></a>
<a href="#anfang"><b>⇑</b></a>
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
    Schonmal auf den Server (mit gleicher IP) zugegriffen ?
    (Schlüssel hat sich geändert)

    > ssh-keygen -R hostname
      /home/tux/.ssh/known_hosts updated.
      Original contents retained as /home/tux/.ssh/known_hosts.old

Falls es nicht geht:
     Inhalt von ~/.ssh/known_hosts komplett löschen oder entsprechend editieren!

Wenn weiter unten die Zeile kommt:
    'DSA host key for 141.44.198.20 has changed and you have requested strict checking.'
    versuche es mit Änderung in:
    /etc/ssh/sshd_config
    StrictHostKeyChecking: yes/no/ask (def: ask)

<b>Immer noch Probleme?</b>

    * Ist der ssh-Zugriff überhaupt möglich?
      Ein beliebtes Problem ist '... key_exchange ... connection closed by foreign host'.
      Das liegt dann meist daran, daß die Reverse-Auflösung der eigenen IP-Adresse nicht
      mit dem Namen für den eigenen Host übereinstimmt.
      Auf der anderen Seite in /etc/hosts.deny die ALL: PARANOID Zeile auskommentieren.
      Oder DNS in Ordnung bringen!

    * Passwort wird verlangt.
      Meistens ein Problem der Permissions auf der eigenen und/oder der anderen Seite:
      Das Verzeichnis .ssh/ und die die Datei .ssh/authorized_keys darf nur für den Eigentümer,
      der auch der "angepeilte" Nutzer sein muß, schreibbar sein!
      ssh -v ... hilft, diese Art von Problemen zu diagnostizieren.

    * Die SSH2 verlangt die Keys in ~/.ssh/authorized_keys2.
      Die SSH2 auf Debian/GNU-Linux ist mögl. gepatcht und sucht die wie gehabt in:
     ~/.ssh/authorized_keys, U.u. muß aber trotzdem auf SuSE-Systemen eben diese 2 angehängt werden. 
<HR>
<a href="#anfang"><b>⇑</b> nach oben</a>
                        <a name="quellen"><b>Quellen:</b></a>
                              <a href="http://www.linux-praxis.de/lpic1/lpi102/1.113.7.html">Einrichten von Secure Shell (OpenSSH) - LPI-Study Guides</a>
                              <a href="http://de.linwiki.org/index.php/Linuxfibel_-_Netzwerk_Server_-_Telnet_%26_Co.">Thomas Ermer / Michael Meyer: Linuxfibel - Netzwerk Server - Telnet & Co.</a>
                              <a href="http://www.schlittermann.de/ssh">Heiko Schlittermann: SSH ohne Passwort -- eine kurze Anleitung</a>
                              <a href="http://www.lrz-muenchen.de/services/security/ssh/ssh-4.html#publish4.1.0.0.0.0">Ernst Bötsch: Secure Shell (SSH) für Benutzer</a>
                              <a href="http://www.jfranken.de/homepages/johannes/vortraege/ssh1_inhalt.de.html">Johannes Franken: OpenSSH Grundlagen</a>
</body></html>
 
OP
OsunSeyi

OsunSeyi

Hacker
Danke für den Tip, bin mit der Handhabung des Wiki aber ungeübt, ausserdem 'relativ blutiger' Anfänger.
wer weiß, ob das alles so stimmt.
Und ausserdem ist alles nur geklaut und geschoben und geraubt... :twisted:
Also kurzum, ich glaube nicht, daß ich das so ohne weiteres in´s Wiki setze.
Aber wenn das so ohne weiteres geht und nicht allzu kompliziert ist :?:
Gruß,
tom
 
OP
OsunSeyi

OsunSeyi

Hacker
OK
hab versucht, das in's Wiki zu stellen.
Das Ergebnis ist alles andere als berauschend, aber offengestanden (ich habe hier eine grottenlangsame Anbindung und der Kopf schwirrt mir eh schon), kann mein Engagaement z.Zt nur begrenzt sein.
Ich bitte das zu entschuldigen.
Abgesehen davon steht die SSH-Verbindung bei meinem eigenen Rechner aus unerfindlichen Gründen noch nicht einmal...
tom
 
Oben