6.5. 使用智能卡验证配置 SSH 访问

SSH 连接需要身份验证。您可以使用密码或证书。按照以下流程,使用保存在智能卡上的证书启用验证。

有关使用 authselect 配置智能卡的详情,请参考使用 authselect 配置智能卡

先决条件

  • 该智能卡包含您的证书和私钥。
  • 该卡插入读卡器并连接到计算机。
  • 已安装并配置了 SSSD。
  • 您的用户名与证书的 SUBJECT 中的通用名称(CN)或用户 ID(UID)匹配。
  • pcscd 服务正在您的本地计算机上运行。

    详情请查看安装用于管理和使用智能卡的工具

流程

  1. 在使用智能卡验证的用户主目录中为 SSH 密钥创建新目录:

    # mkdir /home/example.user/.ssh
  2. 使用 opensc 库运行 ssh-keygen -D 命令以使用智能卡中的私钥检索现有公钥对,并将其添加到用户的 SSH 密钥目录的 authorized_keys 列表中,以便通过智能卡验证启用 SSH 访问。

    # ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so >> ~example.user/.ssh/authorized_keys
  3. SSH 需要访问 /.ssh 目录和 authorized_keys 文件的适当配置。要设置或更改访问权限,请输入:

    # chown -R example.user:example.user ~example.user/.ssh/
    # chmod 700 ~example.user/.ssh/
    # chmod 600 ~example.user/.ssh/authorized_keys
  4. 另外,显示密钥:

    # cat ~example.user/.ssh/authorized_keys

    终端会显示密钥。

  5. 验证 /etc/sssd/sssd.conf 文件中是否启用了智能卡验证:

    [pam] 部分中,启用 pam 证书验证模块: pam_cert_auth = True

    如果尚未创建 sssd.conf 文件,您可以通过将以下脚本复制到命令行来创建最小功能配置:

    # cat > /etc/sssd/sssd.conf <<EOF
    [sssd]
    services = nss, pam
    domains = shadowutils
    
    [nss]
    
    [pam]
    pam_cert_auth = True
    
    [domain/shadowutils]
    id_provider = files
    EOF
  6. 要使用 SSH 密钥,请使用 authselect 命令配置身份验证:

    # authselect select sssd with-smartcard --force

现在,您可以使用以下命令验证 SSH 访问:

# ssh -I /usr/lib64/opensc-pkcs11.so -l example.user localhost hostname

如果配置成功,会提示您输入智能卡 PIN。

这个配置现在可以在本地运行。现在,您可以复制公钥并将其分发到您要使用 SSH 的所有服务器中的 authorized_keys 文件。