程序员 通过 YubiKey 让 GPG 和 SSH 更安全的方法

deepzz · July 06, 2023 · 21 hits

YubiKey 配置 GPG 和 SSH 安全设置

YubiKey 是由 Yubico 设计的一种硬件验证设备,可以根据型号支持不同的协议,如 OTP、PGP、U2F、FIDO2 等。它可以直接使用,无需任何软件,但您可以通过以下软件扩展或个性化功能:

  • Authenticator
  • YubiKey Manager
  • YubiKey Personalization

本文将主要介绍如何导出 GPG 密钥和 SSH 密钥,如需获取更多相关主题的信息,可以参考 Arch wiki 或官方 Yubico 网站。

软件安装

首先安装 pcscdccid,这是使 YubiKey 更加功能完善的常用安装步骤,如果不需要可以跳过这一步。

sudo pacman -S pcslite ccid
sudo systemctl enable --now pcscd.service
sudo systemctl enable --now pcscd.socket

# 如果使用命令行界面
sudo pacman -S yubikey-manager

# 如果使用图形界面
sudo pacman -S yubikey-manager-qt

# 如果需要个性化工具
sudo pacman -S yubikey-personalization-gui

GPG 密钥配置

生成密钥对并导出、备份密钥以及生成撤销证书。您可以将这些文件安全存储在隐藏的 VeraCrypt 卷中。有关如何将密钥移动到 YubiKey 的更多信息,请查看官方 Yubico 网站和 GitHub 指南。

首先修改 PIN,初始默认值为 123456,管理员 Admin 的默认值为 12345678。

gpg --card-edit admin # 进入管理员设置界面
passwd 1 3 Q # 修改管理员 PIN

# 或者使用以下命令完成上述步骤
gpg --card-edit admin <<EOF
passwd 1 3 Q
EOF

接下来可以进行其他个性化设置,比如语言和名称:

# 设置名称
gpg --edit-key 0xABC # 进入密钥编辑界面
key 1 # 选择要操作的密钥
keytocard 1 key 1 # 将签名密钥导出到 YubiKey
key 2 # 选择要操作的密钥
keytocard 2 key 2 # 将加密密钥导出到 YubiKey
key 3 # 选择要操作的密钥
keytocard 3 key 3 # 将认证密钥导出到 YubiKey
quit # 退出编辑界面

# 生成配置文件
echo "pcsc-driver /usr/lib/libpcsclite.so" > ~/.gnupg/scdaemon.conf
echo "card-timeout 5" >> ~/.gnupg/scdaemon.conf
echo "disable-ccid" >> ~/.gnupg/scdaemon.conf

现在您已经准备好了!可以尝试使用导出的密钥进行加密和解密操作了。

当使用超过两个 GPG 密钥时,可能需要强制更改。当屏幕上显示 "Insert card with serial number..." 时,可以注意到此情况。

# 检查序列号,如果切换卡需要强制更改
gpg --card-status | grep Serial

# 强制更改
gpg-connect-agent "scd SERIAL" "learn --force" /bye

# 或者可以使用以下一行命令完成上述操作
gpg-connect-agent "scd $(gpg --card-status | grep Serial | awk '{print $4}')" "learn --force" /bye

SSH 密钥配置

SSH 设置非常简单。首先安装 fido2 库。

sudo pacman -S libfido2

生成 SSH 密钥时,将要求您验证 PIN。记住,可以根据需要自定义名称。

ssh-keygen -t ed25519-sk -C "YUB-$(date +%D)"

# 添加新的密钥
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/YUB-date

# 复制密钥到剪贴板,以便在其他地方粘贴使用,例如 GitHub
xclip -selection clipboard < ~/.ssh/YUB-date.pub

恢复出厂设置

如果您想要恢复出厂设置,执行以下所有命令:

# OpenPGP
ykman openpgp reset

# OATH
ykman oath reset

# PIV
ykman piv reset

# FIDO2
ykman fido reset

# OTP
# 打开 Yubico Manager
# 选择 Application -> OTP
# 删除所有 slots

其他用途

除了上述的 GPG 密钥和 SSH 密钥,YubiKey 还可以用于其他用途,例如:

  • 静态密码
  • Authenticator 验证码

祝顺利!🤙

翻译自:https://medium.com/@cuatroy2/2-yubico-an-easier-way-to-be-secure-e853a42b97b3

No Reply at the moment.
You need to Sign in before reply, if you don't have an account, please Sign up first.