RHEL通过存储在智能卡上的 SSH 密钥进行身份验证

您可以在智能卡上创建和存储 ECDSA 和 RSA 密钥,并在 OpenSSH 客户端上通过智能卡进行身份验证。智能卡身份验证取代了默认的密码身份验证。

先决条件

  • 在客户端,包已安装且服务正在运行。openscpcscd

程序

  1. 列出 OpenSC PKCS #11 模块提供的所有密钥,包括其 PKCS #11 URI,并将输出保存到文件中:keys.pub

    $ ssh-keygen -D pkcs11: > keys.pub
  2. 将公钥传输到远程服务器。将命令与上一步中创建的文件一起使用:ssh-copy-idkeys.pub

    $ ssh-copy-id -f -i keys.pub <username@ssh-server-example.com>
  3. 使用 ECDSA 密钥连接到 <ssh-server-example.com>。您可以只使用 URI 的一个子集,它唯一地引用您的密钥,例如:

    $ ssh -i "pkcs11:id=%01?module-path=/usr/lib64/pkcs11/opensc-pkcs11.so" <ssh-server-example.com>
    Enter PIN for 'SSH key':
    [ssh-server-example.com] $

    由于 OpenSSH 使用包装器,并且 OpenSC PKCS #11 模块已注册到该工具,因此您可以简化前面的命令:p11-kit-proxyp11-kit

    $ ssh -i "pkcs11:id=%01" <ssh-server-example.com>
    Enter PIN for 'SSH key':
    [ssh-server-example.com] $

    如果跳过 PKCS #11 URI 的部分,OpenSSH 将加载代理模块中可用的所有密钥。这可以减少所需的键入量:id=

    $ ssh -i pkcs11: <ssh-server-example.com>
    Enter PIN for 'SSH key':
    [ssh-server-example.com] $
  4. 可选: 您可以在文件中使用相同的 URI 字符串,使配置永久化:~/.ssh/config

    $ cat ~/.ssh/config
    IdentityFile "pkcs11:id=%01?module-path=/usr/lib64/pkcs11/opensc-pkcs11.so"
    $ ssh <ssh-server-example.com>
    Enter PIN for 'SSH key':
    [ssh-server-example.com] $

    客户端实用程序现在会自动使用此 URI 和智能卡中的密钥。ssh

声明:欢迎大家光临本站,学习IT运维技术,转载本站内容,请注明内容出处”来源刘国华教育“。如若本站内容侵犯了原著者的合法权益,请联系我们进行处理。