Abilitazione di SSH su host Satellite

In caso di risoluzione dei problemi e debug, potrebbe essere necessario disporre dell'accesso SSH agli host Satellite prima o dopo averli assegnati al piano di controllo o a un cluster.

Ad esempio, se si hanno problemi nell'assegnazione degli host, è possibile abilitare un utente non root per l'accesso SSH a un host prima di assegnarlo a un cluster.

Leggere le sezioni seguenti per i passaggi su come abilitare l'accesso SSH ai propri host.

Abilitazione SSH non root su host RHCOS prima dell'assegnazione

RHCOS

Poiché l'accesso SSH root è in genere disabilitato sugli host CoreOS e l'accesso SSH sia root che core è disabilitato come parte dell'assegnazione dell'host, è possibile concedere l'accesso SSH aggiungendo un nuovo utente non root che non sia l'utente predefinito core.

Queste istruzioni descrivono come abilitare l'accesso SSH per un nuovo utente su un host Red Hat CoreOS prima di assegnarlo a un cluster o al piano di controllo.

Annullare questi passaggi e disabilitare l'accesso SSH dopo aver terminato la risoluzione dei problemi.

  1. Creare un nuovo utente satellite nel file host attach ignition utilizzato per creare l'host CoreOS. Modificare la sezion passwd e del file di accensione come segue.

        "passwd": {
            "users": [
                {
                    "name": "core",
                    "sshAuthorizedKeys": [
                        ""
                    ]
                },
                {
                    "name": "satellite",
                    "sshAuthorizedKeys": [
                        "ssh-rsa AAA... KEYNAME"
                    ],
                    "groups": [
                        "sudo"
                    ]
                }
            ]
        },
    
  2. Aggiungi una chiave pubblica SSH. Per creare una coppia di chiavi SSH, si può eseguire il comando ssh-keygen.

    ssh-keygen -f ~/.ssh/sat-host-access -t rsa -b 4096 -C sat-host-access -P ''
    
  3. Il file " sat-host-access.pub " contiene la chiave da aggiungere al file di accensione. Aggiungere l'intero contenuto del file allo script di accensione sostituendo " ssh-rsa AAA... KEYNAME " nell'esempio precedente. La chiave privata SSH ( sat-host-access ) è quella che si utilizza per connettersi all'host.

    Chiunque abbia la chiave privata corrispondente alla chiave pubblica appena aggiunta a questo host e l'accesso alla rete dei nodi può accedere al sistema tramite SSH.

  4. Facoltativo: Eseguire i seguenti comandi journalctl per raccogliere i log per il debug.

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

Abilitazione di SSH non root su host RHEL prima dell'assegnazione

RHEL

Queste istruzioni descrivono come abilitare temporaneamente l'accesso SSH non-root a un nodo worker del cluster RHEL.

Annullare questi passaggi e disabilitare l'accesso SSH dopo aver terminato la risoluzione dei problemi.

Prima di iniziare, assicurati di avere accesso SSH di root all'host non assegnato.

  1. Se si desidera utilizzare la stessa chiave SSH per questo nuovo utente come utente root su questo host, non è necessaria un'altra chiave. Tuttavia, se si desidera utilizzare una coppia di chiavi SSH diversa per questo nuovo utente, è necessario avere a disposizione tale coppia di chiavi o creare una nuova coppia di chiavi pubbliche/private SSH su qualsiasi sistema si utilizzi per accedere all'host tramite SSH. Non fornire la chiave privata a nessuno. Queste istruzioni presuppongono che tu abbia creato questa nuova coppia di chiavi.
    ssh-keygen -f ~/.ssh/sat-host-access -t rsa -b 4096 -C sat-host-access -P ''`
    

Esegui i passaggi rimanenti sull'host stesso, quindi esegui SSH nell'host con autorità di root prima di continuare.

  1. Creare un utente e configurarlo in modo che abbia accesso completo a sudo senza password.

    useradd -U -m -s /bin/bash satellite && mkdir -p /home/satellite/.ssh && chown -R satellite:satellite /home/satellite/
    
  2. Aggiungi la tua chiave SSH al nuovo utente.

    • Se si desidera utilizzare per questo utente la stessa chiave o le stesse chiavi SSH dell'utente root, eseguire il seguente comando.
        cp -r /root/.ssh/authorized_keys /home/satellite/.ssh/
        ```
    * Se hai creato una nuova coppia di chiavi o se hai una chiave pubblica SSH esistente, aggiungila all'utente `satellite` eseguendo il seguente comando.
    ```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. Immetti il seguente comando.

    chown -R satellite:satellite /home/satellite/.ssh/authorized_keys
    
  4. Per dare a questo nuovo utente di satellite accesso completo a sudo senza password, eseguire il seguente comando.

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

    Puoi anche configurare l'utente in modo che abbia un'autorità più limitata, configurandola invece sull'host. Per la risoluzione dei problemi, consigliamo di concedere a questo utente l'accesso completo a sudo. Una volta risolto il problema, è possibile rimuovere l'utente o limitarne l'autorità.

    Ora chiunque abbia la chiave privata che corrisponde alla chiave pubblica appena aggiunta a questo host e alla rete di accesso ai nodi può accedere a questo sistema con autorità di root tramite SSH.

  5. Accedi al nodo come nuovo utente per verificare che funzioni.

    ssh -i ~/.ssh/sat-host-access satellite@NODE-IP
    
  6. Quindi eseguire il seguente comando per verificare che sia possibile ottenere l'autorità di root da questo utente.

    sudo su - root
    
  7. Facoltativo: Controllare i vari file di log dei processi di registrazione e di avvio dell'host. Sostituire <filepath> con i seguenti file per verificare l'ordine. A seconda del problema, alcuni file di registro potrebbero essere presenti o meno sull'host.

    1. I log di nohup.out del tentativo di registrazione dell'host.
    2. Il sito /var/log/firstboot.log per il primo tentativo di bootstrapping. Se la registrazione dell'host non è riuscita, non si dispone di questo file.
    3. /tmp/bootstrap/bootstrap_base.log per il processo di bootstrap di base, se il primo avvio non ha avuto successo. Se la registrazione dell'host non è riuscita, non si dispone di questo file.
        tail <filepath>
        ```
    1. Eseguire i comandi `journalctl` per raccogliere i log per il debug.
    
    ```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
        ```
    
    

Abilitazione di SSH root sugli host dopo l'assegnazione

RHCOS RHEL

Occasionalmente potrebbe essere necessario eseguire SSH direttamente in un host già assegnato come nodo di lavoro in un cluster. Ad esempio, potrebbe esserci un problema con i nodi del cluster che perdono la connettività con il master del cluster. Queste istruzioni descrivono come abilitare temporaneamente l'accesso SSH di root a un nodo worker del cluster Red Hat CoreOS o RHEL in un cluster Satellite.

Annullare questi passaggi e disabilitare l'accesso SSH dopo aver terminato la risoluzione dei problemi.

Prima di iniziare, assicurati di avere quanto segue.

  • Accesso a un sistema che ha accesso diretto ai lavoratori del cluster, da utilizzare come sistema client SSH.
  • Accesso amministratore a questo cluster per poter eseguire oc debug node/NODE-NAME.
  1. Creare una coppia di chiavi pubblica/privata SSH sul proprio client SSH. Non dare la chiave privata a nessuno.

    ssh-keygen -f ~/.ssh/sat-host-access -t rsa -b 4096 -C sat-host-access -P ''
    
  2. Verifica che la chiave pubblica sia stata creata.

    cat ~/.ssh/sat-host-access.pub
    
  3. Da un sistema che ha accesso al master del cluster e ha l'accesso admin kubeconfig, eseguire il seguente comando.

    oc debug node/NODE-NAME
    
  4. Esegui i seguenti comandi dalla shell su NODE-NAME per abilitare SSH root.

    chroot /host
    
    echo "<CONTENTS OF ~/.ssh/sat-host-access.pub>" >> /root/.ssh/authorized_keys
    
    chmod 600 /root/.ssh/authorized_keys
    
  5. Imposta una variabile di ambiente per l' SSHD_CONFIG_FILE, utilizzando uno dei seguenti comandi. Si noti che potrebbe trovarsi in un posto diverso a seconda della versione esatta di worker che si possiede, e in tal caso impostare la variabile d'ambiente SSHD_CONFIG_FILE sul percorso completo del file di configurazione SSHD in modo da poterlo aggiornare nei prossimi passi.

    Esempio di comando per lavoratori dell CoreOS.

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

    Comando di esempio per i lavoratori di RHEL 9.

    export SSHD_CONFIG_FILE="/etc/ssh/sshd_config"
    
  6. Controllare l'impostazione dell' PermitRootLogin.

    grep ^PermitRootLogin $SSHD_CONFIG_FILE
    
  7. Impostare PermitRootLogin su yes.

    sed -i "s/PermitRootLogin no/PermitRootLogin yes/g" $SSHD_CONFIG_FILE
    
  8. Verificare l'impostazione.

    grep ^PermitRootLogin $SSHD_CONFIG_FILE
    
  9. Eseguire i seguenti comandi per riavviare e uscire.

    systemctl restart sshd
    
    exit && exit
    

A questo punto, l'accesso SSH di root dal sistema client SSH viene abilitato utilizzando la chiave privata creata in precedenza. Si noti che chiunque abbia questa chiave privata e accesso ai nodi può accedere a questo sistema come root tramite SSH. Utilizzare il seguente comando per eseguire SSH sul nodo: ssh -i ~/.ssh/sat-host-access root@NODE-IP.