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

如何创建密钥

首先,添加令牌:

我建议使用密码管理器选择两个密码。

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

相关文章(高级或危险主题)


Check out similar posts by category: Linux