用PAM登录#

(Nitrokey Storage 2 - Linux)

如何设置登录#

你有两个选择。pam_p11 <https://github.com/OpenSC/pam_pkcs11>`_或 `Poldi

使用pam_p11的解决方案更难实现,它是基于S/MIME证书的。请看看`文档<http://opensc.github.io/pam_pkcs11/doc/pam_pkcs11.html>`_以了解更多信息。

Poldi 0.4.1与Nitrokey一起使用RSA密钥进行PAM认证,效果完美无缺(关于ECC密钥的信息,请参见故障排除)。除了安装poldi(例如:``sudo apt-get install libpam-poldi``在Ubuntu上),还需要以下步骤来使其工作。

有必要在Nitrokey上已经生成密钥,因为认证密钥是由PAM使用的。

  1. 首先,你需要找出你的Nitrokey的”应用ID”。你可以使用``gpg –card-status | grep Application``来找出你的应用ID。它看起来像``D00600012401020000000000xxxxxxxx``或类似的。

  2. 现在你必须在/etc/poldi/localdb/users中添加一行,其中包含以下信息

    <YourApplicationID> <YourUsername>

    这可能看起来像’D00600012401020000000000xxxxxxxx nitrokeyuser’。现在把公钥从Nitrokey转储到Poldi本地数据库中。

sudo sh -c 'gpg-connect-agent "/datafile /etc/poldi/localdb/keys/<YourApplicationID>" "SCD READKEY --advanced OPENPGP.3" /bye'

请注意,你必须在上面的一行中插入你的申请ID和你的棍子的ID!

然后你必须配置PAM。只要根据你的需要在pam配置文件中加入”auth sufficient pam_poldi.so”即可。

  • /etc/pam.d/common-auth用于图形化用户登录

  • /etc/pam.d/login用于控制台登录。

  • /etc/pam.d/sudo用于sudo认证

  • /etc/pam.d/gnome-screensaver,用于从锁定的屏幕重新登录。

  • 等。

注解

玩弄Pam是很危险的,所以要确保你有办法在完全破坏认证的情况下访问机器。请记住,从Grub启动到救援模式需要一个root密码,所以请保留这个密码或一张可以读取文件系统的Live CD。

在这里你可以找到`进一步的说明<http://wiki.ubuntuusers.de/Archiv/Authentifizierung_OpenPGP_SmartCard>`_(德语,部分已经过时)。

故障排除#

如果你得到一个类似于’ERR 100663414 Invalid ID <SCD>’的错误,你应该尝试一下。

poldi-ctrl -k > <YourApplicationID>; sudo mv <YourApplicationID> /etc/poldi/localdb/keys

请注意,你必须在上面的一行中插入你的申请ID和你的棍子的ID!

ECC钥匙#

不幸的是,poldi还没有对ECC钥匙的支持。但有一个`补丁,用于与Nitrokey启动<https://dev.gnupg.org/T4009>`_使用的ECC密钥。这已经包含在poldi开发库的主分支中,因此最终会在一个较新的版本中发布。在此期间,唯一的选择就是从源码构建poldi。