Aktivieren von SSH auf Satellite-Hosts

Bei der Fehlerbehebung und beim Debugging benötigen Sie möglicherweise SSH-Zugriff auf Ihre Satellite-Hosts, entweder bevor oder nachdem Sie diese Ihrer Control Plane oder einem Cluster zugewiesen haben.

Wenn Sie beispielsweise Probleme bei der Zuweisung von Hosts haben, können Sie einem Nicht-Root-Benutzer den SSH-Zugriff auf einen Host ermöglichen, bevor Sie ihn einem Cluster zuweisen.

In den folgenden Abschnitten finden Sie Schritte zum Aktivieren des SSH-Zugriffs auf Ihre Hosts.

Aktivieren von Nicht-Root-SSH auf RHCOS-Hosts vor der Zuweisung

RHCOS

Da der Root-SSH-Zugriff auf CoreOS-Hosts in der Regel deaktiviert ist und sowohl root als auch core als Teil der Host-Zuweisung deaktiviert sind, können Sie den SSH-Zugriff gewähren, indem Sie einen neuen Nicht-Root-Benutzer hinzufügen, der nicht der Standardbenutzer core ist.

Diese Anweisungen beschreiben, wie der SSH-Zugriff für einen neuen Benutzer auf einem Red Hat CoreOS-Host aktiviert wird, bevor dieser einem Cluster oder der Steuerungsebene zugewiesen wird.

Machen Sie diese Schritte rückgängig und deaktivieren Sie den SSH-Zugriff, nachdem Sie die Fehlerbehebung abgeschlossen haben.

  1. Erstellen Sie einen neuen satellite-Benutzer in der Host-Attach-Zündungsdatei, die Sie beim Erstellen des CoreOS-Hosts verwendet haben. Bearbeiten Sie den Abschnitt " passwd " der Zünddatei wie folgt.

        "passwd": {
            "users": [
                {
                    "name": "core",
                    "sshAuthorizedKeys": [
                        ""
                    ]
                },
                {
                    "name": "satellite",
                    "sshAuthorizedKeys": [
                        "ssh-rsa AAA... KEYNAME"
                    ],
                    "groups": [
                        "sudo"
                    ]
                }
            ]
        },
    
  2. Einen öffentlichen SSH-Schlüssel hinzufügen. Um ein SSH-Schlüsselpaar zu erstellen, können Sie den Befehl ssh-keygen ausführen.

    ssh-keygen -f ~/.ssh/sat-host-access -t rsa -b 4096 -C sat-host-access -P ''
    
  3. Die Datei sat-host-access.pub enthält den Schlüssel, der zur Zünddatei hinzugefügt werden muss. Fügen Sie den gesamten Inhalt der Datei zum Zündskript hinzu, indem Sie ssh-rsa AAA... KEYNAME im obigen Beispiel ersetzen. Der private Schlüssel sat-host-access ist der Schlüssel, den Sie für die SSH-Verbindung zum Host verwenden.

    Jeder, der über den privaten Schlüssel verfügt, der dem öffentlichen Schlüssel entspricht, den Sie soeben zu diesem Host hinzugefügt haben, und der Netzwerkzugang zu den Knoten hat, kann per SSH auf dieses System zugreifen.

  4. Optional: Führen Sie die folgenden journalctl Befehle aus, um Protokolle für die Fehlersuche zu sammeln.

    journalctl -u ibm-host-attach --no-pager
    
    journalctl -u ibm-host-agent --no-pager
    
    journalctl -u ibm-firstboot-ignition --no-pager
    

Aktivieren von Nicht-Root-SSH auf RHEL-Hosts vor der Zuweisung

RHEL

In dieser Anleitung wird beschrieben, wie Sie vorübergehend den SSH-Zugriff ohne Root-Rechte auf einen RHEL-Cluster-Arbeitsknoten aktivieren.

Machen Sie diese Schritte rückgängig und deaktivieren Sie den SSH-Zugriff, nachdem Sie die Fehlerbehebung abgeschlossen haben.

Bevor Sie beginnen, stellen Sie sicher, dass Sie über einen SSH-Root-Zugriff auf den nicht zugewiesenen Host verfügen.

  1. Wenn Sie für diesen neuen Benutzer denselben SSH-Schlüssel wie für den Root-Benutzer auf diesem Host verwenden möchten, benötigen Sie keinen weiteren Schlüssel. Wenn Sie jedoch ein anderes SSH-Schlüsselpaar für diesen neuen Benutzer verwenden möchten, halten Sie dieses Schlüsselpaar bereit oder erstellen Sie ein neues öffentliches/privates SSH-Schlüsselpaar auf dem System, das Sie für die SSH-Verbindung zum Host verwenden. Geben Sie den privaten Schlüssel nicht an Dritte weiter. Diese Anweisungen setzen voraus, dass Sie dieses neue Schlüsselpaar erstellt haben.
    ssh-keygen -f ~/.ssh/sat-host-access -t rsa -b 4096 -C sat-host-access -P ''`
    

Führen Sie die verbleibenden Schritte auf dem Host selbst aus. Melden Sie sich also mit Root-Rechten per SSH auf dem Host an, bevor Sie fortfahren.

  1. Erstellen Sie einen Benutzer und konfigurieren Sie ihn so, dass er vollen sudo-Zugriff ohne Passwort hat.

    useradd -U -m -s /bin/bash satellite && mkdir -p /home/satellite/.ssh && chown -R satellite:satellite /home/satellite/
    
  2. Fügen Sie Ihren SSH-Schlüssel dem neuen Benutzer hinzu.

    • Wenn Sie für diesen Benutzer denselben SSH-Schlüssel wie für den Root-Benutzer verwenden möchten, führen Sie den folgenden Befehl aus.
        cp -r /root/.ssh/authorized_keys /home/satellite/.ssh/
        ```
    * Wenn Sie ein neues Schlüsselpaar erstellt haben oder über einen vorhandenen öffentlichen SSH-Schlüssel verfügen, fügen Sie diesen dem Benutzer `satellite` hinzu, indem Sie den folgenden Befehl ausführen.
    ```sh {: pre}
        echo "<CONTENTS OF ~/.ssh/sat-host-access.pub OR YOUR OWN PUBLIC KEY>" >> /home/satellite/.ssh/authorized_keys && chmod 600 /home/satellite/.ssh/authorized_keys
        ```
    
  3. Führen Sie den folgenden Befehl aus.

    chown -R satellite:satellite /home/satellite/.ssh/authorized_keys
    
  4. Um diesem neuen satellite-Benutzer vollen sudo-Zugriff ohne Passwort zu gewähren, führen Sie den folgenden Befehl aus.

    echo "satellite ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
    

    Sie können den Benutzer auch mit eingeschränkteren Berechtigungen konfigurieren, dies jedoch stattdessen auf dem Host. Wir empfehlen, diesem Benutzer zur Fehlerbehebung vollen sudo-Zugriff zu gewähren. Sobald Sie die Fehlerbehebung abgeschlossen haben, können Sie den Benutzer entfernen oder seine Berechtigungen einschränken.

    Jetzt kann jeder, der über den privaten Schlüssel verfügt, der dem öffentlichen Schlüssel entspricht, den Sie gerade zu diesem Host und Netzwerk hinzugefügt haben, und Zugriff auf die Knoten hat, über SSH mit Root-Berechtigung auf dieses System zugreifen.

  5. Melden Sie sich als neuer Benutzer beim Knoten an, um zu überprüfen, ob er funktioniert.

    ssh -i ~/.ssh/sat-host-access satellite@NODE-IP
    
  6. Führen Sie dann den folgenden Befehl aus, um zu überprüfen, ob Sie von diesem Benutzer Root-Berechtigungen erhalten können.

    sudo su - root
    
  7. Optional: Überprüfen Sie die verschiedenen Protokolldateien aus den Prozessen zur Host-Registrierung und zum Host-Bootstrapping. Ersetzen Sie durch <filepath> die folgenden Dateien, die nacheinander eingecheckt werden sollen. Je nach Problem sind bestimmte Protokolldateien möglicherweise auf dem Host vorhanden oder nicht vorhanden.

    1. Die Protokolle nohup.out aus dem Versuch der Hostregistrierung.
    2. Das Protokoll /var/log/firstboot.log für den ersten Bootstrap-Versuch. Falls die Hostregistrierung fehlgeschlagen ist, ist diese Datei nicht vorhanden.
    3. Das Protokoll /tmp/bootstrap/bootstrap_base.log für den Basis-Bootstrap-Prozess, falls das erste Booten nicht erfolgreich war. Falls die Hostregistrierung fehlgeschlagen ist, ist diese Datei nicht vorhanden.
        tail <filepath>
        ```
    1. Führen Sie die Befehle `journalctl` aus, um Protokolle für die Fehlersuche zu sammeln.
    
    ```sh {: pre}
        journalctl -u ibm-host-agent --no-pager
        ```
        ```sh {: pre}
        journalctl -u ibm-firstboot --no-pager
        ```
        ```sh {: pre}
        journalctl -u ibm-host-attach --no-pager
        ```
    
    

SSH-Root-Zugriff auf Hosts nach Zuweisung aktivieren

RHCOS RHEL

Gelegentlich kann es erforderlich sein, sich direkt per SSH auf einen Host zu verbinden, der bereits als Arbeitsknoten in einem Cluster zugewiesen ist. Zum Beispiel könnte es ein Problem mit Cluster-Worker-Knoten geben, die die Verbindung zum Cluster-Master verlieren. Diese Anweisungen beschreiben, wie Sie vorübergehend den SSH-Zugriff auf einen Red Hat CoreOS oder einen RHEL-Cluster-Arbeitsknoten in einem Satellite-Cluster aktivieren.

Machen Sie diese Schritte rückgängig und deaktivieren Sie den SSH-Zugriff, nachdem Sie die Fehlerbehebung abgeschlossen haben.

Bevor Sie beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen.

  • Zugang zu einem System, das direkten Zugang zu den Cluster-Mitarbeitern hat, zur Verwendung als SSH-Client-System.
  • Admin-Zugriff auf diesen Cluster, damit Sie oc debug node/NODE-NAME ausführen können.
  1. Erstellen Sie auf Ihrem SSH-Client ein SSH-Schlüsselpaar aus öffentlichem und privatem Schlüssel. Geben Sie den privaten Schlüssel an niemanden weiter.

    ssh-keygen -f ~/.ssh/sat-host-access -t rsa -b 4096 -C sat-host-access -P ''
    
  2. Überprüfen Sie, ob der öffentliche Schlüssel erstellt wurde.

    cat ~/.ssh/sat-host-access.pub
    
  3. Führen Sie in einem System, das Zugriff auf den Cluster-Master hat und über den Administratorzugriff kubeconfig verfügt, den folgenden Befehl aus.

    oc debug node/NODE-NAME
    
  4. Führen Sie die folgenden Befehle von der Shell auf NODE-NAME aus, um SSH-Root zu aktivieren.

    chroot /host
    
    echo "<CONTENTS OF ~/.ssh/sat-host-access.pub>" >> /root/.ssh/authorized_keys
    
    chmod 600 /root/.ssh/authorized_keys
    
  5. Legen Sie eine Umgebungsvariable für Ihre SSHD_CONFIG_FILE fest, indem Sie einen der folgenden Befehle verwenden. Beachten Sie, dass sich dieser Pfad je nach der genauen Version der Arbeitsbeschreibung, die Sie haben, an einem anderen Ort befinden könnte. Wenn dies der Fall ist, setzen Sie die Umgebungsvariable SSHD_CONFIG_FILE auf den vollständigen Pfad der Konfigurationsdatei SSHD, damit Sie sie in den nächsten Schritten aktualisieren können.

    Beispielbefehl für CoreOS-Mitarbeiter.

    export SSHD_CONFIG_FILE="/etc/ssh/sshd_config.d/40-rhcos-defaults.conf"
    

    Beispielbefehl für RHEL 9 Worker.

    export SSHD_CONFIG_FILE="/etc/ssh/sshd_config"
    
  6. Überprüfen Sie die Einstellung von PermitRootLogin.

    grep ^PermitRootLogin $SSHD_CONFIG_FILE
    
  7. Setzen Sie PermitRootLogin auf yes.

    sed -i "s/PermitRootLogin no/PermitRootLogin yes/g" $SSHD_CONFIG_FILE
    
  8. Überprüfen Sie die Einstellung.

    grep ^PermitRootLogin $SSHD_CONFIG_FILE
    
  9. Führen Sie die folgenden Befehle aus, um das System neu zu starten und zu beenden.

    systemctl restart sshd
    
    exit && exit
    

An dieser Stelle wird der SSH-Root-Zugriff vom SSH-Client-System aus mithilfe des zuvor erstellten privaten Schlüssels aktiviert. Beachten Sie, dass jeder, der über diesen privaten Schlüssel und Zugriff auf die Knoten verfügt, sich per SSH als Root in dieses System einloggen kann. Verwenden Sie den folgenden Befehl, um eine SSH-Verbindung zum Knoten herzustellen: ssh -i ~/.ssh/sat-host-access root@NODE-IP.