配置用户

默认用户

默认情况下,Fedora CoreOS 系统会创建一个名为 core 的特权用户,但它没有配置默认密码或 SSH 密钥。如果您想使用 core 用户,您必须提供包含 core 用户密码和/或 SSH 密钥的 Ignition 配置。或者,你也可以通过 Ignition 配置创建额外的新用户。

如果不想使用 Ignition 管理默认用户的 SSH 密钥,可以使用 Afterburn 支持,通过云提供商提供 SSH 密钥。

创建新用户

要创建一个(或多个)新用户,请将其添加到 Butane 配置的`users`列表中。在下面的示例配置中,创建了两个新用户名,但并没有将它们配置得特别有用。

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

您通常需要配置 SSH 密钥或密码,以便能够以这些用户的身份登录。

使用 SSH 密钥

要为本地用户配置 SSH 密钥,可以使用 Butane 配置:

variant: fcos
version: 1.5.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...

使用指向 SSH 密钥的文件引用

根据所使用的配置变量和版本,可以使用 SSH 公钥的本地文件引用来代替内联。 因此,上一节中的示例可改写如下:

variant: fcos
version: 1.5.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

在转换为 Ignition 配置时,必须使用 butane 和`--files-dir`参数,以允许从磁盘加载文件,这样才能正常工作。

请查阅 配置规范,了解更多详情以及所选变体的支持版本。一般来说,每个文件可以包含多个 SSH 密钥,每行一个,只要 SSH 密钥是唯一的,还可以额外指定内联的 ssh_authorized_keys

SSH 密钥位置

sshd 使用通过 AuthorizedKeysCommand 指令指定的 辅助程序,从用户的 ~/.ssh/authorized_keys.d 目录中的文件读取公钥。 AuthorizedKeysCommand`会在通常的 `AuthorizedKeysFile 文件(默认为 ~/.ssh/authorized_keys)之后进行尝试,如果在该文件中找到匹配的密钥,则不会执行该命令。 ~/.ssh/authorized_keys.d 中的密钥文件将按字母顺序读取,忽略点文件。

Ignition 会将配置的 SSH 密钥写入`~/.ssh/authorized_keys.d/ignition`。在可平台级配置 SSH 密钥的平台(如 AWS)上,Afterburn 会将这些密钥写入 ~/.ssh/authorized_keys.d/afterburn

要调试 ~/.ssh/authorized_keys.d 的读取,请手动运行辅助程序并检查其输出:

/usr/libexec/ssh-key-dir

要查看和验证 sshd 的有效配置,可使用两种测试模式(-t, -T),如 手册页面 所述。

使用密码验证

Fedora CoreOS 不提供默认密码。您可以使用 Butane 配置为本地用户设置密码。在上一个例子的基础上,我们可以为一个或多个用户配置`password_hash`:

variant: fcos
version: 1.5.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...

要生成安全密码哈希值,请使用 whois 软件包中的 mkpasswd。你的 Linux 发行版可能会提供不同的 mkpasswd 实现;你可以通过在容器中运行它来确保使用的是正确的实现:

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

对于新密码,建议使用 yescrypt 散列方法。有关散列方法的更多详情,请参阅 man 5 crypt

配置的密码将被接受用于控制台的本地身份验证。默认情况下,Fedora CoreOS 不允许 password authentication via SSH

配置组

Fedora CoreOS 默认配置了几个组:root, adm, wheel, sudo, systemd-journal, docker

通过 Butane 配置用户时,我们可以指定用户应加入的组。

variant: fcos
version: 1.5.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...

如果不存在组,用户应将其作为 Butane 配置的一部分进行创建。

variant: fcos
version: 1.5.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...

配置管理权限

要授予用户管理权限,最简单的方法是在 Butane 配置中将他们添加到 sudowheel 组。

variant: fcos
version: 1.5.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...

启用 SSH 密码验证

要通过 SSH 启用密码验证,请在 Butane 配置中添加以下内容:

variant: fcos
version: 1.5.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