RHEL通过存储在智能卡上的 SSH 密钥进行身份验证
先决条件
- 在客户端,包已安装且服务正在运行。
opensc
pcscd
程序
-
列出 OpenSC PKCS #11 模块提供的所有密钥,包括其 PKCS #11 URI,并将输出保存到文件中:
keys.pub
$ ssh-keygen -D pkcs11: > keys.pub
-
将公钥传输到远程服务器。将命令与上一步中创建的文件一起使用:
ssh-copy-id
keys.pub
$ ssh-copy-id -f -i keys.pub <username@ssh-server-example.com>
-
使用 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-proxy
p11-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] $
-
可选: 您可以在文件中使用相同的 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运维技术,转载本站内容,请注明内容出处”来源刘国华教育“。如若本站内容侵犯了原著者的合法权益,请联系我们进行处理。