Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Dieses Dokument behandelt die Verwendung von Schlüsseln in SSH (SCP, SFTP) Verbindungen.

 


1: Host-Keys

In der Rolle als SSH-Server benötigt ein Rechner Schlüsselpaare, bestehend aus einem geheimen und einem öffentlichen Teil, die in /etc/ssh gespeichert werden:

...

Diese Host-Schlüssel sind sozusagen das Ausweispapier des Servers, die bei Aktivierung des ssh-Servers in der eisfair-Konfigurationsschicht automatisch erzeugt werden, die Erweiterung pub kennzeichnet den öffentlichen Schlüssel.

Diese Schlüssel dürfen niemals für andere Zwecke z. B. als User-Athentifizierungs-Keys missbraucht werden.

Im Zuge der Härtung des eisfair-ssh-Systems durch das Base-Update 2.3.9 werden nur noch ed25519- und rsa-(4096 Bit)-Schlüssel - sofern nicht vorhanden - erzeugt. Eventuell noch vorhandene id_host_dsa, id_host_ecdsa und id_host (rsa1) Schlüssel werden nicht gelöscht, gelten aber als unsicher und sollten daher, wenn es keine gravierenden Gründe für deren Beibehaltung gibt, aus /etc/ssh gelöscht werden. Ein älterer id_host_rsa-Key mit weniger als 4096 Bit sollte aus den gleichen Gründen mit 4096 Bit neu erzeugt werden. Server-Host-Keys können im SSH Administrationsmenü neu erzeugt werden.

...

Je nach Konfiguration eines ssh-Clients ist es auch möglich, dass dieser nach einer Nachfrage den veralteten Schlüssel selbst in der known_host-Datei gegen den neuen Schlüssel austauscht.

 

2a: User-Keys - Authentifizierung am eisfair-SSH-Server mit Schlüssel statt Passwort

...

  • Kopieren der *.pub-Schlüsseldateien vom Client in das Verzeichnis ~/externe_ssh_pub_keys, wobei statt der auf dem Herkunftsclient genutzten Dateinamen id_<typ>.pub auf dem eisfair-Server aussagekräftigere Namen wie max_an_client_1_<typ>.pub gewählt werden sollten, damit sich Schlüssel verschiedener Client-Rechner nicht gegenseitig in die Quere kommen.
  • Auf dem eisfair-Server als User anmelden, in dessen Home die Schlüssel kopiert wurden.
  • Anschliessend die Schlüssel der authorized_keys-Datei hinzufügen:

    Code Block
    languagebash
    # cat ~/externe_ssh_pub_keys/<schlüsselname>.pub >> ~/.ssh/authorized_keys
  • Die importierten Schlüssel können nun wieder aus dem Verzeichnis ~/externe_ssh_pub_keys gelöscht werden.

Für den User root auf dem eisfair-Server darf die Einbindung der Schlüssel in die authorized_keys-Datei jedoch nicht manuell erfolgen, da diese Datei von Systemskripten erzeugt wird. Stattdessen sind die Schlüssel nach dem Übertragen auf den Server in die ssh-Konfiguration einzutragen und dann folgende Schritte ausführen:

  • Kopieren der *.pub-Schlüsseldateien vom Client in das Verzeichnis /root/externe_ssh_pub_keys, wobei statt der auf dem Herkunftsclient genutzten Dateinamen id_<typ>.pub auf dem eisfair-Server aussagekräftigere Namen wie max_an_client_1_<typ>.pub gewählt werden sollten, damit sich Schlüssel verschiedener Client-Rechner nicht gegenseitig in die Quere kommen.
  • Auf dem eisfair-Server als root anmelden.
  • Die ssh-Konfiguration öffnen und die Schlüssel eintragen:

    Code Block
    languagebash
    SSH_PUBLIC_KEY_N='2'  
    SSH_PUBLIC_KEY_1_NAME='Max ED25519-Schluessel von Client 1'
    SSH_PUBLIC_KEY_1_ACTIVE='yes'
    SSH_PUBLIC_KEY_1='/root/externe_ssh_pub_keys/max_an_client_1_ed25519.pub'
    SSH_PUBLIC_KEY_2_NAME='Max RSA-Schluessel von Client 1'
    SSH_PUBLIC_KEY_2_ACTIVE='yes'
    SSH_PUBLIC_KEY_2='/root/externe_ssh_pub_keys/max_an_client_1_rsa.pub'

    Hinweis: Diese Optionen der ssh-Konfiguration dienen nur dazu, die pub-Keys von auf Clients erzeugten Schlüsselpaaren zur Authentifizierung am eisfair-Server einzutragen und nicht die pub-Keys in den .ssh-Verzeichnissen lokaler eisfair-User (einschließlich root).

  • Die auf den Server übertragenen Schlüssel dürfen nicht vom eisfair-Server gelöscht werden, da jeder erneute Aufruf der ssh-Konfiguration die authorized_keys für root neu erzeugt und daher jederzeit die in der Konfiguration eingetragenen Schlüssel vorhanden sein müssen.

 

2b: User-Keys - Authentifizierung eines eisfair-Users an einem anderen Server/Client mit Schlüssel statt Passwort

Sollen sich lokale eisfair-Server-User per Schlüssel automatisch an anderen Servern/PCs per ssh anmelden können, sind gemäß vorstehender Beschreibung User bezogene Schlüssel auf dem eisfair zu erzeugen und auf den entfernten Rechner zu übertragen und zu installieren, mit dem man sich verbinden möchte. Lokal auf dem eisfair-Server werden diese Schlüssel einfach id_<typ> genannt und müssen in ~/.ssh bzw. /root/.ssh gespeichert werden.

Auf einem eisfair-1-Server reicht es das Skript Server reicht es, das Skript /var/install/bin/system-ssh-create-client-keys aufzurufen, um ein persönliches Schlüsselpaar für root oder einen anderen lokalen eisfair-User zu erzeugen:

Code Block
languagebash
# /var/install/bin/system-ssh-create-client-keys --help
Usage: system-ssh-create-client-keys [options]
    --batch                                 - run script in batch mode
    --comment 'my comment'                  - comment to add to new keys
    --key ed25519|rsa|ecdsa|dsa|rsa1        - generate a 'specific' key
    --pass 'my passphrase'                  - set a passphrase for the key
    --path 'destination path for key files' - path to save the new key
    --quiet                                 - suppress screen output
    --rsabits 2048|3072|4096|6142|8192      - bits to generate RSA key
    --user 'valid-username'                 - user name to create key for
    --help                                  - show this help

# /var/install/bin/system-ssh-create-client-keys --user moritz

Das Übertragen und Installieren dieser Schlüssel auf dem Zielrechner geschieht analog zu den Darstellungen im Abschnitt 2a.

 

2c: User-Keys - Authentifizierung eines eisfair-Users an einem anderen eisfair-Server mit Schlüssel statt Passwort

Zunächst sind gemäß Abschnitt 2b auf dem eisfair-Server, der die Rolle des Clients spielt, die entsprechenden Schlüssel zu erzeugen und anschließend nach Abschnitt 2a in den zweiten eisfair-Server (Server-Rolle) zu importieren.

 

3: Erforderliche Rechte des Userverzeichnisses .ssh

Für eine ordnungsgemäße Funktion des ssh/sshd sind restriktive Rechte nur für den besitzenden User zu setzen. Das Verzeichnis ~/.ssh bzw. /root/.ssh muss die Rechte 0700, die Dateien in diesem Verzeichnis 0600 haben.

Code Block
languagebash
# cd ~
# chmod 0700 .ssh
# cd .ssh
# chmod 0600 *

 

Das generelle Abschaltung einer Passwort-Authentifizierung auf einem Server darf erst dann erfolgen, wenn die Authentifizierung mittels Key funktioniert, ansonsten sperrt man sich selbst aus dem Server aus.