使用 Nitrokey 的基于 SSH 密钥的身份验证

信息安全 验证 密钥管理 pgp 智能卡 打开sh
2021-08-30 02:26:06

所以我对更安全的密钥管理形式相当陌生,我习惯于将密钥存储在计算机上的密钥文件中。最近,我想尝试看看是否可以使用存储在 Nitrokey Pro 上的密钥为我的网络服务器设置 SSH 身份验证,从而使我的钥匙串在此过程中更加便携和安全。

几乎一步一步地遵循本指南,但注意到最后,我根本不需要将 Nitrokey Pro 插入我的计算机即可成功进行身份验证。

我有一种感觉,在导出我的密钥时,它以某种方式添加到了我的本地密钥存储中,从而使 Nitrokey 变得多余,但我对确切的工作原理还不够了解。

当我的 Nitrokey 插入我的计算机时,任何人都可以帮助我确保我只能通过 SSH 连接到我的 Web 服务器吗?

笔记:

  • 操作系统:OSX El Capitan 10.11.4
  • 硝基临
  • 即使将 Nitrokey 插入我的计算机,当我尝试 SSH 时,它也不会要求我输入密码。
  • OpenSC 0.15.0
  • gpg 2.0.28

我尝试从 ~/.ssh 中删除以下内容:

id.rsa
private_key.pem

再次尝试通过 SSH 连接到我的网络服务器后,我得到:

权限被拒绝(公钥、gssapi-keyex、gssapi-with-mic)。

我假设这表明 SSH 会话找不到我的身份验证密钥,我通过运行检查我的计算机是否检测到 Nitrokey:

gpg --card-status

并收到了我期望的卡片信息。

1个回答

我有一种感觉,在导出我的密钥时,它不知何故被添加到我的本地密钥存储中,使 NitroKey 变得多余,但我对确切的工作原理知之甚少。

如果这样做得当,那应该是不可能的。如果私钥存储在“智能卡”中,则它不应该是可导出的,并且对于每个私钥操作,您都需要该卡。

我没有 NitroKey,也不了解 nitrokey 应用程序内部结构,所以很少有命令可以带来更多亮点:

  • 使用存储在卡上的密钥发布连接的 devbug 日志:ssh -vvv server
  • ssh-add -L外观如何
  • 运行时能看到“智能卡”中的键吗pkcs11-tool --login -O --module /path/to/usr/lib64/pkcs11/opensc-pkcs11.so