Configurazione degli utenti

Utente Predefinito

Per impostazione predefinita, un utente privilegiato chiamato core viene creato sul sistema Fedora CoreOS, ma non è configurato con una password predefinita o una chiave SSH. Se desideri utilizzare l’utente core, devi fornire una configurazione Ignition che includa una password e/o chiavi SSH per l’utente core. In alternativa, puoi creare nuovi utenti aggiuntivi tramite le configurazioni Ignition.

Se non vuoi usare Ignition per gestire la chiave SSH dell’utente predefinito, puoi utilizzare il supporto di Afterburn e fornire una chiave SSH tramite il tuo cloud provider.

Creazione di un nuovo utente

Per creare un nuovo utente (o più utenti), aggiungilo alla lista users della tua configurazione Butane. Nell’esempio seguente, la configurazione crea due nuovi nomi utente, ma non li configura per essere particolarmente utili.

variant: fcos
version: 1.6.0
passwd:
  users:
    - name: jlebon
    - name: miabbott

In genere, per poter accedere con quegli utenti, sarà necessario configurare le chiavi SSH o una password.

Utilizzo di una chiave SSH

Per configurare una chiave SSH per un utente locale, puoi utilizzare una configurazione Butane:

variant: fcos
version: 1.6.0
passwd:
  users:
    - name: core
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHn2eh...
    - name: jlebon
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDC5QFS...
        - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIveEaMRW...
    - name: miabbott
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDTey7R...

Utilizzo di Riferimenti ai File per le Chiavi SSH

A seconda della variante e della versione di configurazione utilizzata, è possibile utilizzare riferimenti a file locali per le chiavi pubbliche SSH invece di incorporarli. L’esempio tratto da sezione precedente può quindi essere riscritto come segue:

variant: fcos
version: 1.6.0
passwd:
  users:
    - name: core
      ssh_authorized_keys_local:
        - users/core/id_rsa.pub
    - name: jlebon
      ssh_authorized_keys_local:
        - users/jlebon/id_rsa.pub
        - users/jlebon/id_ed25519.pub
    - name: miabbott
      ssh_authorized_keys_local:
        - users/miabbott/id_rsa.pub

Affinché funzioni, è necessario utilizzare butane con il parametro --files-dir per consentire il caricamento dei file dal disco durante la conversione in configurazioni Ignition.

Consulta Specifiche di configurazione per maggiori dettagli e per sapere quali versioni della variante selezionata la supportano. In genere, ogni file può contenere più chiavi SSH, una per riga, ed è possibile specificare anche ssh_authorized_keys in linea, a condizione che le chiavi SSH siano univoche.

Posizioni delle chiavi SSH

sshd utilizza un programma helper programma, specificato tramite la direttiva AuthorizedKeysCommand, per leggere le chiavi pubbliche dai file nella directory ~/.ssh/authorized_keys.d di un utente. AuthorizedKeysCommand viene provato dopo i consueti file AuthorizedKeysFile (il cui valore predefinito è ~/.ssh/authorized_keys) e non verrà eseguito se viene trovata una chiave corrispondente. I file chiave in ~/.ssh/authorized_keys.d vengono letti in ordine alfabetico, ignorando i file con punto.

Ignition scrive le chiavi SSH configurate in ~/.ssh/authorized_keys.d/ignition. Sulle piattaforme in cui le chiavi SSH possono essere configurate a livello di piattaforma, come AWS, Afterburn scrive tali chiavi in ~/.ssh/authorized_keys.d/afterburn.

Per eseguire il debug della lettura di ~/.ssh/authorized_keys.d, eseguire manualmente il programma di supporto e ispezionarne l’output:

/usr/libexec/ssh-key-dir

Per visualizzare e convalidare la configurazione effettiva per sshd, sono disponibili due modalità di test (-t, -T), come documentato nelle pagine del manuale https://man.openbsd.org/sshd.

Utilizzo dell’autenticazione tramite password

Fedora CoreOS non prevede password predefinite. È possibile utilizzare una configurazione Butane per impostare una password per un utente locale. Basandoci sull’esempio precedente, possiamo configurare password_hash per uno o più utenti:

variant: fcos
version: 1.6.0
passwd:
  users:
    - name: core
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHn2eh...
    - name: jlebon
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDC5QFS...
        - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIveEaMRW...
    - name: miabbott
      password_hash: $y$j9T$aUmgEDoFIDPhGxEe2FUjc/$C5A...
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDTey7R...

Per generare un hash di password sicuro, usa mkpasswd dal pacchetto whois. La tua distribuzione Linux potrebbe fornire un’implementazione di mkpasswd diversa; puoi assicurarti di utilizzare quella corretta eseguendola da un contenitore:

$ podman run -ti --rm quay.io/coreos/mkpasswd --method=yescrypt
Password:
$y$j9T$A0Y3wwVOKP69S.1K/zYGN.$S596l11UGH3XjN...

Per le nuove password si consiglia il metodo di hashing yescrypt. Per maggiori dettagli sui metodi di hashing, consultare man 5 crypt.

La password configurata verrà accettata per l’autenticazione locale sulla console. Per impostazione predefinita, Fedora CoreOS non consente autenticazione con password tramite SSH.

Configurazione dei gruppi

Fedora CoreOS viene fornito con alcuni gruppi configurati di default: root, adm, wheel, sudo, systemd-journal, docker

Quando si configurano gli utenti tramite le configurazioni Butane, è possibile specificare i gruppi di cui l’utente (o gli utenti) devono far parte.

variant: fcos
version: 1.6.0
passwd:
  users:
    - name: core
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHn2eh...
    - name: jlebon
      groups:
        - wheel
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDC5QFS...
        - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIveEaMRW...
    - name: miabbott
      groups:
        - docker
        - wheel
      password_hash: $y$j9T$aUmgEDoFIDPhGxEe2FUjc/$C5A...
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDTey7R...

Se un gruppo non esiste, gli utenti devono crearlo come parte della configurazione Butane.

variant: fcos
version: 1.6.0
passwd:
  groups:
    - name: engineering
    - name: marketing
      gid: 9000
  users:
    - name: core
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHn2eh...
    - name: jlebon
      groups:
        - engineering
        - wheel
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDC5QFS...
        - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIveEaMRW...
    - name: miabbott
      groups:
        - docker
        - marketing
        - wheel
      password_hash: $y$j9T$aUmgEDoFIDPhGxEe2FUjc/$C5A...
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDTey7R...

Configurazione dei privilegi amministrativi

Il modo più semplice per concedere privilegi amministrativi agli utenti è aggiungerli ai gruppi sudo e wheel come parte della configurazione di Butane.

variant: fcos
version: 1.6.0
passwd:
  groups:
    - name: engineering
    - name: marketing
      gid: 9000
  users:
    - name: core
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHn2eh...
    - name: jlebon
      groups:
        - engineering
        - wheel
        - sudo
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDC5QFS...
        - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIveEaMRW...
    - name: miabbott
      groups:
        - docker
        - marketing
        - wheel
        - sudo
      password_hash: $y$j9T$aUmgEDoFIDPhGxEe2FUjc/$C5A...
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDTey7R...

Abilitazione dell’autenticazione tramite password SSH

Per abilitare l’autenticazione tramite password tramite SSH, aggiungi quanto segue alla configurazione di Butane:

variant: fcos
version: 1.6.0
storage:
  files:
    - path: /etc/ssh/sshd_config.d/20-enable-passwords.conf
      mode: 0644
      contents:
        inline: |
          # Fedora CoreOS disables SSH password login by default.
          # Enable it.
          # This file must sort before 40-disable-passwords.conf.
          PasswordAuthentication yes