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.
- Aktivieren von Nicht-Root-SSH auf RHEL-Hosts vor der Zuweisung.
- Aktivieren von root SSH auf Hosts nach der Zuweisung.
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.
-
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" ] } ] }, -
Einen öffentlichen SSH-Schlüssel hinzufügen. Um ein SSH-Schlüsselpaar zu erstellen, können Sie den Befehl
ssh-keygenausführen.ssh-keygen -f ~/.ssh/sat-host-access -t rsa -b 4096 -C sat-host-access -P '' -
Die Datei
sat-host-access.pubenthä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 Siessh-rsa AAA... KEYNAMEim obigen Beispiel ersetzen. Der private Schlüsselsat-host-accessist 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.
-
Optional: Führen Sie die folgenden
journalctlBefehle aus, um Protokolle für die Fehlersuche zu sammeln.journalctl -u ibm-host-attach --no-pagerjournalctl -u ibm-host-agent --no-pagerjournalctl -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.
- 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.
-
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/ -
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 ``` -
Führen Sie den folgenden Befehl aus.
chown -R satellite:satellite /home/satellite/.ssh/authorized_keys -
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/sudoersSie 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.
-
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 -
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 -
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.- Die Protokolle
nohup.outaus dem Versuch der Hostregistrierung. - Das Protokoll
/var/log/firstboot.logfür den ersten Bootstrap-Versuch. Falls die Hostregistrierung fehlgeschlagen ist, ist diese Datei nicht vorhanden. - Das Protokoll
/tmp/bootstrap/bootstrap_base.logfü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 ``` - Die Protokolle
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-NAMEausführen können.
-
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 '' -
Überprüfen Sie, ob der öffentliche Schlüssel erstellt wurde.
cat ~/.ssh/sat-host-access.pub -
Führen Sie in einem System, das Zugriff auf den Cluster-Master hat und über den Administratorzugriff
kubeconfigverfügt, den folgenden Befehl aus.oc debug node/NODE-NAME -
Führen Sie die folgenden Befehle von der Shell auf
NODE-NAMEaus, um SSH-Root zu aktivieren.chroot /hostecho "<CONTENTS OF ~/.ssh/sat-host-access.pub>" >> /root/.ssh/authorized_keyschmod 600 /root/.ssh/authorized_keys -
Legen Sie eine Umgebungsvariable für Ihre
SSHD_CONFIG_FILEfest, 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 UmgebungsvariableSSHD_CONFIG_FILEauf den vollständigen Pfad der KonfigurationsdateiSSHD, 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" -
Überprüfen Sie die Einstellung von
PermitRootLogin.grep ^PermitRootLogin $SSHD_CONFIG_FILE -
Setzen Sie
PermitRootLoginaufyes.sed -i "s/PermitRootLogin no/PermitRootLogin yes/g" $SSHD_CONFIG_FILE -
Überprüfen Sie die Einstellung.
grep ^PermitRootLogin $SSHD_CONFIG_FILE -
Führen Sie die folgenden Befehle aus, um das System neu zu starten und zu beenden.
systemctl restart sshdexit && 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.