PAM¶
如何设置登录¶
使用pam_p11的解决方案更难实现,它是基于S/MIME证书的。请看看`文档<https://opensc.github.io/pam_pkcs11/doc/pam_pkcs11.html>`__以了解更多信息。
PAM Poldi 0.4.1与Nitrokey配合使用RSA密钥进行PAM认证,效果完美无缺(关于ECC密钥的信息,请参见故障排除)。除了安装Poldi(例如``sudo apt-get install libpam-poldi``在Ubuntu上),还需要以下步骤来让它工作。
有必要在Nitrokey上已经生成密钥,因为认证密钥是由PAM使用的。
首先,你需要找出你的Nitrokey的应用ID。它看起来像或类似于``D00600012401020000000000xxxxxxxx``。
gpg --card-status | grep Application
现在你必须在``/etc/poldi/localdb/users``中添加一行,其中包含以下信息``<YourApplicationID> <YourUsername>``。
这可能看起来像``D00600012401020000000000xxxxxxxx nitrokeyuser``。现在,将公钥从Nitrokey转入Poldis本地数据库。
sudo sh -c 'gpg-connect-agent "/datafile /etc/poldi/localdb/keys/<YourApplicationID>" "SCD READKEY --advanced OPENPGP.3" /bye'
请注意,你必须在上面的一行中插入你的应用ID和你的Nitrokey的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``用于从锁定的屏幕上重新登录。
和其他文件在``/etc/pam.d``
备注
玩PAM是很危险的,所以要确保你有办法在完全破坏认证的情况下访问机器。记住,从GRUB启动到救援模式需要一个root密码,所以要保留这个密码或一张可以读取文件系统的活CD。
在这里你可以找到`进一步的说明<https://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 Start<https://dev.gnupg.org/T4009>`__一起使用的ECC钥匙的补丁。这已经包含在Poldi开发库的主分支中,因此最终会在一个较新的版本中发布。在这期间,唯一的选择是从源码构建Poldi。