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.
- Abilitare SSH non root su host RHCOS prima dell'assegnazione.
- Abilitare SSH non root su host RHEL prima dell'assegnazione.
- Abilitazione di root SSH sugli host dopo l'assegnazione.
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.
-
Creare un nuovo utente
satellitenel file host attach ignition utilizzato per creare l'host CoreOS. Modificare la sezionpasswde del file di accensione come segue."passwd": { "users": [ { "name": "core", "sshAuthorizedKeys": [ "" ] }, { "name": "satellite", "sshAuthorizedKeys": [ "ssh-rsa AAA... KEYNAME" ], "groups": [ "sudo" ] } ] }, -
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 '' -
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.
-
Facoltativo: Eseguire i seguenti comandi
journalctlper raccogliere i log per il debug.journalctl -u ibm-host-attach --no-pagerjournalctl -u ibm-host-agent --no-pagerjournalctl -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.
- 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.
-
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/ -
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 ``` -
Immetti il seguente comando.
chown -R satellite:satellite /home/satellite/.ssh/authorized_keys -
Per dare a questo nuovo utente di
satelliteaccesso completo a sudo senza password, eseguire il seguente comando.echo "satellite ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoersPuoi 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.
-
Accedi al nodo come nuovo utente per verificare che funzioni.
ssh -i ~/.ssh/sat-host-access satellite@NODE-IP -
Quindi eseguire il seguente comando per verificare che sia possibile ottenere l'autorità di root da questo utente.
sudo su - root -
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.- I log di
nohup.outdel tentativo di registrazione dell'host. - Il sito
/var/log/firstboot.logper il primo tentativo di bootstrapping. Se la registrazione dell'host non è riuscita, non si dispone di questo file. /tmp/bootstrap/bootstrap_base.logper 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 ``` - I log di
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.
-
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 '' -
Verifica che la chiave pubblica sia stata creata.
cat ~/.ssh/sat-host-access.pub -
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 -
Esegui i seguenti comandi dalla shell su
NODE-NAMEper abilitare SSH root.chroot /hostecho "<CONTENTS OF ~/.ssh/sat-host-access.pub>" >> /root/.ssh/authorized_keyschmod 600 /root/.ssh/authorized_keys -
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'ambienteSSHD_CONFIG_FILEsul percorso completo del file di configurazioneSSHDin 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" -
Controllare l'impostazione dell'
PermitRootLogin.grep ^PermitRootLogin $SSHD_CONFIG_FILE -
Impostare
PermitRootLoginsuyes.sed -i "s/PermitRootLogin no/PermitRootLogin yes/g" $SSHD_CONFIG_FILE -
Verificare l'impostazione.
grep ^PermitRootLogin $SSHD_CONFIG_FILE -
Eseguire i seguenti comandi per riavviare e uscire.
systemctl restart sshdexit && 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.