TPM2.0 保护的 SSH 密钥速查表
如何安装软件包
对于每台计算机:
install_tpm2_pkcs11.sh
sudo apt install libtpm2-pkcs11-tools libtpm2-pkcs11-1如何为特定用户启用访问权限
作为每个应该有访问权限的用户:
usermod_add_tss_group.sh
sudo usermod -a -G tss "$(id -nu)"或者,如果用户不能使用 sudo:
tpm2_ptool_init.sh
sudo usermod -a -G tss USERNAME如何初始化 TPM-SSH 驱动程序
每台计算机运行一次:
tpm2_ptool_addtoken_ecc.sh
tpm2_ptool init示例输出:
ssh_key_display_command.sh
action: Created
id: 1如何创建密钥
首先,添加令牌:
label建议为ssh,但你可以使用任何你想要的标签。- 选择
userpin,这是密钥的密码。使用密钥时你需要输入此密码。 - 选择
sopin,这类似于该令牌的管理员密码。当你需要重置用户密码时,你需要输入此密码。
我建议使用密码管理器选择两个密码。
tpm2_ptool_addtoken.sh
tpm2_ptool addtoken --pid=1 --label=ssh --userpin=aefu9Haqua --sopin=be4eeneela1iegh3BeeT9aighohC8k如果成功,此命令不会返回任何输出。
现在我们可以为该令牌创建密钥:
你需要使用之前使用的用户密码
tpm2_ptool_addkey.sh
tpm2_ptool addkey --label=ssh --userpin=MySecretPassword --algorithm=ecc256如果你需要 RSA 密钥(不推荐!),请使用 --algorithm=rsa4096。我不推荐使用短于 4096 位的 RSA 密钥!
有关可能支持的算法列表(例如,并非每个 TPM 都支持每条椭圆曲线),请参见 TPM2.0 / tpm2_ptool 支持哪些密钥算法?。
成功时,此命令将显示如下输出
tpm2_addkey_output.txt
action: add
private:
CKA_ID: '73982040827406721063241421723261'
public:
CKA_ID: '73982040827406721063241421723261'如何显示公钥
ssh_key_display_command.sh
ssh-keygen -D /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so如何使用密钥
在 ~/.ssh/config 中,添加:
ssh_config_example
Host myserver
PKCS11Provider /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so
PasswordAuthentication no之后,你可以直接
ssh_example.sh
ssh server如果你需要在不使用 ~/.ssh/config 的 SSH 命令中使用它,你可以指定:
ssh_direct_with_pkcs11.sh
ssh -o PKCS11Provider=/usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so -o PasswordAuthentication=no user@server相关文章(高级或危险主题)
- TPM2.0 / tpm2_ptool 支持哪些密钥算法?
- tpm2_ptool:如何删除 primaries
- tpm2_ptool:如何删除令牌
- tpm2_ptool shell 脚本:如果 primary 尚不存在则创建
Check out similar posts by category:
Linux
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow